Показать сообщение отдельно
  #1 (permalink)  
Старый 30.11.2013, 14:14
Аспирант
Отправить личное сообщение для valyan Посмотреть профиль Найти все сообщения от valyan
 
Регистрация: 05.11.2012
Сообщений: 55

Не отрабатывет условие проверки GET переменных
Здравствуйте. Не могу понять в чем моя ошибка
Есть функция, которая аякс запросом получает данные
function GetOrders(action, status, fromTime, toTime, workId, serviceID, companyID, fromHour, toHour) {
  var html = $.ajax(
  {
	url: "request.php?action=" + action + "&status=" + status + "&fromTime=" + fromTime + "&toTime=" + toTime + "&workId=" + workId + "&serviceID=" + serviceID + "&companyID=" + companyID + "&warehouseID=" + warehouseID + "&fromHour=" + fromHour + "&toHour=" + toHour + "",
	dataType: 'json',
	async: false,
	success: function (data) { },
	error: function (req, err) {}
  }).responseText;
return (html);
}


Есть также обработка запроса
$link = mysql_connect($hostname, $username, $password) or die('Не удалось соединиться: ' . mysql_error());
mysql_select_db($dbName) or die('Не удалось выбрать базу данных');

$status = $_GET['status'];
$fromTime  = $_GET['fromTime'];
$toTime  = $_GET['toTime'];
$workId = $_GET['workId'];
$serviceID = $_GET['serviceID'];
$companyID = $_GET['companyID'];
$warehouseID = $_GET['warehouseID'];
$fromHour = $_GET['fromHour'];
$toHour = $_GET['toHour'];


if (($fromHour != "") && ($toHour != ""))
{
	$fromTime = $fromTime.' '.$fromHour.':00:00';
	$toTime = $toTime.' '.$toHour.':00:00';
}
//else
//{
	//$fromTime .= ' 00:00:00';
	//$toTime .= ' 23:00:00';
//}

// отменённые/выполненные заказы за сутки(по часам)
if ($action == "getCountOnHours")
{
	$rows = array();
			  
	$query = 'SELECT hours.h AS HOUR , COUNT(orders.id) AS count
			  FROM orders ';
	if ($companyID != 0) 
		$query .= 'JOIN works ON (orders.cid = works.cid) AND (works.uid IN ('.$companyID.'))';
	
	if ($serviceID != 0) 
		$query .= 'JOIN services ON (orders.serviceID = services.id) AND (services.id IN('.$serviceID.'))';
	
	if ($workId != 0) 
		$query .= 'JOIN workCloud ON (orders.cid = workCloud.id) AND (workCloud.id IN('.$workId .'))';
	
	if ($warehouseID != 0) 
		$query .= 'JOIN warehouses ON (orders.warehouseID = warehouses.id) AND (warehouses.id IN('.$warehouseID.'))';
 	//$query .= 'RIGHT JOIN hours ON hours.h = HOUR(date_add(orders.closeTime, INTERVAL orders.timeOffset second)) AND ';
 	$query .= 'RIGHT JOIN hours ON hours.h = HOUR(DATE_SUB(DATE_ADD( orders.closeTime, INTERVAL orders.timeOffset SECOND), INTERVAL orders.settlementPeriod HOUR )) ';
 	
 	
 	if (($fromHour != "") && ($toHour != "")) 
	{
		$query .= ' AND AND (DATE_ADD(orders.closeTime, INTERVAL orders.timeOffset SECOND ) BETWEEN  "'.$fromTime.'" AND "'.$toTime.'")';
	}
	else
	{
		$query .= ' AND (DATE_ADD(orders.closeTime, INTERVAL orders.timeOffset SECOND ) BETWEEN  date_add("'.$fromTime.'  00:00:00", interval orders.settlementPeriod hour) AND  date_add("'.$toTime.' 23:59:59", interval orders.settlementPeriod hour))';
	}
 	/*if (($fromHour != "") && ($toHour != "")) 
 		$query .= '(date_add(orders.closeTime, INTERVAL orders.timeOffset second) BETWEEN  "'.$fromTime.'" AND "'.$toTime.'")';
 	else  
 		$query .= '(date_add(orders.closeTime, INTERVAL orders.timeOffset second) BETWEEN  "'.$fromTime.' 00:00:00" AND "'.$toTime.' 23:00:00")';*/
 	
	$query .= ' AND (orders.status IN( '.$status.' )) GROUP BY HOUR';
	$result = mysql_query($query) or die('Запрос не удался: ' . mysql_error());
	while ($row = mysql_fetch_array($result))
	{
		$rows[] = $row;
	}
	
	echo json_encode($rows);
}

Изменил на неправильный запрос в части

if (($fromHour != "") && ($toHour != ""))
{
$query .= ' AND AND (DATE_ADD(orders.closeTime, INTERVAL orders.timeOffset SECOND ) BETWEEN "'.$fromTime.'" AND "'.$toTime.'")';
}
чтобы наверняка не выполнился при $fromHour != "" $toHour != "". Но никак при указанных fromHour и toHour туда не "заходит" какие бы параметры не указывал.

Пробовал и так
http://test/order_diagramm.php?graph=orders&fromTime=2013-11-29&fromHour=00&toTime=2013-11-29&toHour=23&companyID=1

и так
http://test/order_diagramm.php?graph=orders&fromTime=2013-11-29&fromHour=&toTime=2013-11-29&toHour=&companyID=1

Но всегда выполняется так, как-будто значения fromHour и toHour не указаны. Причем если менять другие параметры, то все отрабатывает, загвоздка именно на этих параметрах. Подскажите в чем дело. Заранее спасибо
Ответить с цитированием