Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не могу разобраться с выводом из базы
 
 автор: alexander95   (12.02.2012 в 18:20)   письмо автору
 
 

<?$timeQ="SELECT time FROM actions WHERE date='{$_POST['date']}' AND ispoln = {$_POST['isp']} AND status = ";
        
$timeAcc[0]=mysql_query($timeQ". 1");
        
$timeAcc[1]=mysql_query($timeQ". 0");
        for(
$j=0$j<=1$j++){
            while(
$time[] = mysql_fetch_array($timeAcc[$j])){}
            
printf("Занятое время (%sподтверждено):<br/>",$j==0?"":"не ");
            
print_r($timefalse);
            for(
$i=0$i<=50$i++){
                if(!empty(
$time[$i]['time']))
                    echo 
$time[$i]['time']."<br/>";
                else
                    break;
            }
        }
?>


Собственно, из базы извлекаться должно время, когда в указанный день занят тот или иной исполнитель.
print_r($time) выводит:

Занятое время (подтверждено):
Array ( [0] => ) Занятое время (не подтверждено):
Array ( [0] => [1] => Array ( [0] => 10:05 - 13:00 [time] => 10:05 - 13:00 ) [2] => Array ( [0] => 10:05 - 13:01 [time] => 10:05 - 13:01 ) [3] => Array ( [0] => 10:05 - 13:35 [time] => 10:05 - 13:35 ) [4] => Array ( [0] => 13:10 -14:00 [time] => 13:10 -14:00 ) [5] => ) 

  Ответить  
 
 автор: cheops   (12.02.2012 в 18:26)   письмо автору
 
   для: alexander95   (12.02.2012 в 18:20)
 

Не очень понятно, в что вызывает затруднение?

  Ответить  
 
 автор: alexander95   (12.02.2012 в 18:30)   письмо автору
 
   для: cheops   (12.02.2012 в 18:26)
 

то, что время не выводится, хотя по сути оно есть в базе.

  Ответить  
 
 автор: cheops   (12.02.2012 в 18:35)   письмо автору
 
   для: alexander95   (12.02.2012 в 18:30)
 

Хм... а в результирующем массиве у вас столько времени, что глаза разбегаются :))) У нас нет таблиц, чтобы воспроизвести ситуацию, если не сложно опишите чуть подробнее, где вы ожидаете вывода и где его нет?

PS time, кстати, ключевое слово, его не худо в обратные кавычки помещать и вообще обрабатывать правильность выполнения SQL-запроса на сервере - будет ошибка PHP об ней не скажет, просто вместо дескриптора будет false. Но если массивы выводятся, дело явно не в этом.

  Ответить  
 
 автор: alexander95   (12.02.2012 в 18:38)   письмо автору
 
   для: cheops   (12.02.2012 в 18:35)
 

Так вот же он, вывод:
for($i=0; $i<=50; $i++){
                if(!empty($time[$i]['time']))
                    echo $time[$i]['time']."<br/>";
                else
                    break;
            } 

Только у меня ничего не выводится)

  Ответить  
 
 автор: cheops   (12.02.2012 в 18:55)   письмо автору
 
   для: alexander95   (12.02.2012 в 18:38)
 

Вообще странно, если print_r() выводит, должен и этот цикл выводить.

  Ответить  
 
 автор: alexander95   (12.02.2012 в 19:00)   письмо автору
 
   для: cheops   (12.02.2012 в 18:55)
 

Если выбрать другого исполнителя - массив пустой по идее должен вернуться (т.к. на него ни одного дела не повешено в базе), но print_r выводит:
Занятое время (подтверждено):
Array ( [0] => )
Занятое время (не подтверждено):
Array ( [0] => [1] => )

  Ответить  
 
 автор: alexander95   (12.02.2012 в 18:31)   письмо автору
 
   для: cheops   (12.02.2012 в 18:26)
 

и массивы странные. не понимаю, как они такие образуются

  Ответить  
 
 автор: cheops   (12.02.2012 в 18:37)   письмо автору
 
   для: alexander95   (12.02.2012 в 18:31)
 

У вас HTML-кода в таблице actions нет? Не может он вмешиваться? Второй массив нормальный, первый действительно странноватый... так бывает, когда HTML-тэги искажают вывод print_r().

  Ответить  
 
 автор: alexander95   (12.02.2012 в 18:46)   письмо автору
 
   для: cheops   (12.02.2012 в 18:37)
 

Нет, HTML нету вообще.

  Ответить  
 
 автор: elenaki   (12.02.2012 в 19:05)   письмо автору
 
   для: alexander95   (12.02.2012 в 18:20)
 

обычно при таком обилии циклов и условий бывает полезно их поочередно отключать.

  Ответить  
 
 автор: alexander95   (12.02.2012 в 19:09)   письмо автору
 
   для: elenaki   (12.02.2012 в 19:05)
 

пробовал уже

  Ответить  
 
 автор: alexander95   (12.02.2012 в 19:07)   письмо автору
 
   для: alexander95   (12.02.2012 в 18:20)
 

$timeAcc[0]=mysql_query($timeQ". 1");
$timeAcc[1]=mysql_query($timeQ". 0"); 


даа, тут ошибки, но я их исправил уже, все равно не работает

  Ответить  
 
 автор: cheops   (12.02.2012 в 19:17)   письмо автору
 
   для: alexander95   (12.02.2012 в 19:07)
 

На всякий случай попробуйте явно обработать сообщения об ошибках - правильно ли выполняются запросы?

  Ответить  
 
 автор: alexander95   (12.02.2012 в 19:21)   письмо автору
 
   для: cheops   (12.02.2012 в 19:17)
 

Ошибки не выводятся.

  Ответить  
 
 автор: cheops   (12.02.2012 в 19:22)   письмо автору
 
   для: alexander95   (12.02.2012 в 19:21)
 

Кусочек SQL-дампа можете прикрепить, чтобы мы могли воспроизвести ошибку?

  Ответить  
 
 автор: alexander95   (12.02.2012 в 19:27)   письмо автору
1.6 Кб
 
   для: cheops   (12.02.2012 в 19:22)
 

В смысле? Дамп таблицы?

  Ответить  
 
 автор: cheops   (12.02.2012 в 19:32)   письмо автору
 
   для: alexander95   (12.02.2012 в 19:27)
 

Проблема в том, что мы вам можем только советовать, отладить ничего не можем, так как у нас код не запускается (нет вашей базы данных), а мозг уже давно привык следовать по рабочему коду в работе, в общем просто по статическому коду трудно сказать в чем дело - отлаживать надо (а без базы данных этого сделать нельзя).

  Ответить  
 
 автор: alexander95   (12.02.2012 в 19:35)   письмо автору
 
   для: cheops   (12.02.2012 в 19:32)
 

Ладно, я пока так оставлю - кое как, да работает. Может, потом поправлю как - то, топишусь тогда.

  Ответить  
 
 автор: alexander95   (12.02.2012 в 19:25)   письмо автору
 
   для: alexander95   (12.02.2012 в 18:20)
 

поставил пока внутренний цикл с началом в единице (0 - пустой, цикл вылетает из-за проверки на пустоту), выводит. Всё же интересно, почему такие неправильные массивы..

  Ответить  
 
 автор: NW   (14.02.2012 в 17:19)   письмо автору
 
   для: alexander95   (12.02.2012 в 19:25)
 

$timeQ="SELECT time FROM actions WHERE date='{$_POST['date']}' AND ispoln = {$_POST['isp']} AND status = ";
$timeAcc[0]=mysql_query($timeQ". 1");
$timeAcc[1]=mysql_query($timeQ". 0");

Чет я тут не пойму... Где двойная кавычка в конце строки запроса? И как это так в скобках строки непонятно объединяются....? точка же снаружи кавычек должна быть?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования