Высыпают ошибки в логах, а так вроде все норм работает (mktime())...

StDyavol

Новичок
Высыпают ошибки в логах, а так вроде все норм работает (mktime())...

[Wed Feb 25 19:40:16 2009] [error] [client 95.31.4.168] PHP Notice: Undefined offset: 1 in /var/www/vhosts/playcs.su/subdomains/otso/httpdocs/make/zapros_for_create.php on line 33
[Wed Feb 25 19:40:16 2009] [error] [client 95.31.4.168] PHP Notice: Undefined offset: 1 in /var/www/vhosts/playcs.su/subdomains/otso/httpdocs/make/zapros_for_create.php on line 34
[Wed Feb 25 19:40:16 2009] [error] [client 95.31.4.168] PHP Notice: Undefined offset: 1 in /var/www/vhosts/playcs.su/subdomains/otso/httpdocs/make/zapros_for_create.php on line 50
[Wed Feb 25 19:40:16 2009] [error] [client 95.31.4.168] PHP Warning: mktime() expects parameter 1 to be long, string given in /var/www/vhosts/playcs.su/subdomains/otso/httpdocs/make/zapros_for_create.php on line 50
[Wed Feb 25 19:40:18 2009] [error] [client 95.31.4.168] PHP Notice: Undefined offset: 1 in /var/www/vhosts/playcs.su/subdomains/otso/httpdocs/make/zapros_for_create.php on line 34
[Wed Feb 25 19:40:20 2009] [error] [client 95.31.4.168] PHP Notice: Undefined offset: 1 in /var/www/vhosts/playcs.su/subdomains/otso/httpdocs/make/zapros_for_create.php on line 34

-----------------------------------------------------------------------------------------------------------------------------------------------------------------
а вот кусок кода о котором идет речь:
---------------------------------------------------------------------

PHP:
$z = explode (":",$begin);   //29 строка
$h = explode (":",$end);  // 31 строка

$nfdtyhndfv423 = ($z[0]*60) + $z[1];  // 33 строка
$f35gds5ryh = ($h[0]*60) + $h[1];   // 34 строка

$u = $f35gds5ryh - $nfdtyhndfv423;   //  37строка

$std = date("Y-m-d");   // 41 строка

$pih = explode ("-",$std);   // 43 строка
$nfdtyhndfv423lop = explode ("-",$data);        // 44 строка
$aga = (checkdate($nfdtyhndfv423lop[1], $nfdtyhndfv423lop[2], $nfdtyhndfv423lop[0]));   // 45 строка

$tayming=getdate();      // 48 строка
$un_tud = mktime ($tayming['hours'],$tayming['minutes'],$tayming['seconds'],$pih[1],$pih[2],$pih[0]);       // 49 строка
$un_dat = mktime ($z[0],$z[1],0,$nfdtyhndfv423lop[1],$nfdtyhndfv423lop[2],$nfdtyhndfv423lop[0]);       // 50 строка
-------------------------------------------------------------------
Кто знает в чем дело???
 

FB3

Новичок
http://phpfaq.ru/debug для каждой выдаваемой ошибки
В данном случае, из кода не ясно, что в $begin и $end...
 

StDyavol

Новичок
в $begin и $end содержится время в формате хх:хх
значения в другом формате просто не могут поступить!
 

dimagolov

Новичок
StDyavol, видишь суслика? нет? а он есть! (с)
так и у тебя. раз не находится [1], то в $begin и $end нету ":"
http://phpfaq.ru/debug
 

StDyavol

Новичок
Автор оригинала: dimagolov
StDyavol, видишь суслика? нет? а он есть! (с)
так и у тебя. раз не находится [1], то в $begin и $end нету ":"
http://phpfaq.ru/debug
я и сам так думал.... но пришел к выводу что этого просто не может быть....
после твоего поста решил окончательно в этом убедиться....
просто вывел получаемые значения $begin и $end...
все нормально.... он приходят в формате хх:хх!!!
так что не все так просто.... я бы и сам разобрался с такой то проблемой....
но тут че то еще:(
 

jonjonson

Охренеть
Значит вывел на момент, когда в них правильные данные, а не на момент когда ворнинги и нотисы лезут.
Может добавить логирование данных, а лучше перехватчик нотисов и ворнингов. Но это требует понимания работы с ошибками в php средствами php.
 

StDyavol

Новичок
Автор оригинала: jonjonson
Значит вывел на момент, когда в них правильные данные, а не на момент когда ворнинги и нотисы лезут.
Может добавить логирование данных, а лучше перехватчик нотисов и ворнингов. Но это требует понимания работы с ошибками в php средствами php.
тоже проверил...
вот кусок кода от начала и до момента explode
-----------------------------------------------------------------------------
PHP:
if (isset($_POST['date'])) {$data=$_POST['date'];} 
if (isset($_POST['time_n'])) {$begin=$_POST['time_n'];}
if (isset($_POST['time_k'])) {$end=$_POST['time_k'];}

// Проверим дату и время на валидность!
$parasha = mysql_query("SELECT dostup FROM userlist WHERE user='".$_SERVER['PHP_AUTH_USER']."'");
$ok_do_it_then=mysql_fetch_array($parasha);
if ($ok_do_it_then['dostup']>=1) 
{$f35gds5ryhim_n_n="0"; $f35gds5ryhim_n_k="1438"; $f35gds5ryhim_k_n="1"; $f35gds5ryhim_k_k="1439"; $srav="1"; $y_d_m_raz="-99999999999999999";}
else {$f35gds5ryhim_n_n="540"; $f35gds5ryhim_n_k="1020"; $f35gds5ryhim_k_n="570"; $f35gds5ryhim_k_k="1080"; $srav="30"; $y_d_m_raz="259200";}
// Разбиваем переменную $time_n
$z = explode (":",$begin);
// Разбиваем переменную $time_k
$h = explode (":",$end);
echo("getArr('".$z[0]."' , '".$z[1]."' , '".$h[0]."' , '".$h[1]."' , '".$data."' , '".$data."');");
---------------------------------------------------------------------------------------
идет ajax запрос... в результате возвращаются 6 значений.... дальнейшую часть кода скрыл в коммент, и поставил вывод не результатов обработки, а просто результатов работы ф-ии explode, чтобы посмотреть, что мы получаем на выходе этой ф-ии....
вот так мы получаем как-раз те самые ошибки!!!!
если же мы выведем эти переменные до работы ф-ии explode, вот таким образом:
------------------------------------------------------------------------------------------
PHP:
if (isset($_POST['date'])) {$data=$_POST['date'];} 
if (isset($_POST['time_n'])) {$begin=$_POST['time_n'];}
if (isset($_POST['time_k'])) {$end=$_POST['time_k'];}


// Проверим дату и время на валидность!
$parasha = mysql_query("SELECT dostup FROM userlist WHERE user='".$_SERVER['PHP_AUTH_USER']."'");
$ok_do_it_then=mysql_fetch_array($parasha);
if ($ok_do_it_then['dostup']>=1) 
{$f35gds5ryhim_n_n="0"; $f35gds5ryhim_n_k="1438"; $f35gds5ryhim_k_n="1"; $f35gds5ryhim_k_k="1439"; $srav="1"; $y_d_m_raz="-99999999999999999";}
else {$f35gds5ryhim_n_n="540"; $f35gds5ryhim_n_k="1020"; $f35gds5ryhim_k_n="570"; $f35gds5ryhim_k_k="1080"; $srav="30"; $y_d_m_raz="259200";}
echo("getArr('".$begin."' , '".$end."' , '".data."' , '".$begin."' , '".$end."' , '".$data."');");
/*
// Разбиваем переменную $time_n
$z = explode (":",$begin);
// Разбиваем переменную $time_k
$h = explode (":",$end);
*/
---------------------------------------------------------------------------
то ajax возвращает эти перменные в нормальном виде, т.е. в формате хх:хх!!!

и самое интересное, что функция-то работает.... вычисляет все правильно....
и время и дату....
но не понятно откуда берутся эти нотисы.....
 

x-yuri

Новичок
функция getArr возвращает эти перменные в нормальном виде? А значение переменных $begin, $end какое? Мало ли что функция getArr делает. Воспользуйся [m]var_dump[/m], [m]trigger_error[/m] или ff+firebug+firephp
 

dimagolov

Новичок
StDyavol, а что у тебя получится когда !isset($_POST['time_n']) || !isset($_POST['time_k']) ?

п.с. порадовала креативность автора:
PHP:
$parasha = mysql_query....
 

StDyavol

Новичок
Автор оригинала: x-yuri
функция getArr возвращает эти перменные в нормальном виде? А значение переменных $begin, $end какое? Мало ли что функция getArr делает. Воспользуйся [m]var_dump[/m], [m]trigger_error[/m] или ff+firebug+firephp
Да, getArr возвращает нормальный результат...
а в переменные $begin и $end попадают тоже нормальные значения....
дело в том, что переменные $begin и $end берутся из $_POST['time_n'] и $_POST['time_k'], а именно эти значения заностя в базу после всех обработок.... в базе эти значения имеют формат хх:хх.... так что сомнений в правильности формата этих переменных у меня просто нет!!!

-~{}~ 26.02.09 17:56:

Автор оригинала: dimagolov
StDyavol, а что у тебя получится когда !isset($_POST['time_n']) || !isset($_POST['time_k']) ?

п.с. порадовала креативность автора:
PHP:
$parasha = mysql_query....
-----------------------------------------------------------------------------
PHP:
//получаем переменные
if (isset($_POST['date'])) {$data=$_POST['date'];} 
if (isset($_POST['time_n'])) {$begin=$_POST['time_n'];}
if (isset($_POST['time_k'])) {$end=$_POST['time_k'];}
if (isset($begin) && isset($end)) {echo("getArr('".$begin."' , '".$end."' , '".$begin."' , '".$end."', '".$begin."' , '".$end."');");}
else {echo("getArr('N/A' , 'N/A' , 'N/A' , 'N/A' , 'N/A' , 'N/A');");}
--------------------------------------------------------------------------------
просто решил проверить то что ты сказал.... в ответ пршили именно те значения, что я и указывал в форме, т.е. все в формате хх:хх!
 

dimagolov

Новичок
и что, при этом ошибки высыпались? поверни лог ошибок в отдельный файл и в него же пиши print_r($var, TRUE) тех переменных, что тебя интересуют, чтобы понять в какие моменты сыпятся ошибки.
 

StDyavol

Новичок
Автор оригинала: dimagolov
и что, при этом ошибки высыпались? поверни лог ошибок в отдельный файл и в него же пиши print_r($var, TRUE) тех переменных, что тебя интересуют, чтобы понять в какие моменты сыпятся ошибки.
честно говоря недавно занимаюсь програмированием....
не понял что нужно сделать.... можешь рассказать все поэтапно?
 

dimagolov

Новичок
1.поверни лог ошибок в отдельный файл
PHP:
define('LogTimeFormat', 'd-M-Y H:i:s');
define('ErrorLogFile', 'absolute path and name of custom error log');

error_reporting(E_ALL);
ini_set('display_errors','off');
ini_set('log_errors','on');
ini_set('error_log',ErrorLogFile);

function WriteToLog($String, $LogFile= ErrorLogFile) {
	$fp= fopen($LogFile, "a");
	$write= fputs($fp, "[".date(LogTimeFormat)."] ".basename($_SERVER['PHP_SELF'])"'\t".$String."\n");
	fclose($fp);
}
2. в него же пиши print_r($var, TRUE) тех переменных, что тебя интересуют
PHP:
WriteToLog(print_r($var, TRUE));
 

x-yuri

Новичок
не понимаю, если честно, зачем так сложно. Если можно просто trigger_error(print_r($var, TRUE)). Ну и возможно ini_set('error_log', '/path/to/log') в начале, если надо

А вообще, особенно при использовании Ajax, имеет смысл обратить внимание на FireFox+FireBug+FirePhp. Последний позволяет "журналировать" прямо в окно FireFox
 

dimagolov

Новичок
x-yuri, на самом деле я логирую в разные файлы разные события. если все валить в error_log то да, trigger_error достаточно.
 
Сверху