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

Форум MySQL

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

 

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

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

тема: Цикл выводит на одно сообщение меньше чем выбрано в результирующей таблице.
 
 автор: Eser   (18.08.2011 в 15:16)   письмо автору
 
 

Народ чего то туплю.
Цикл выводит на одно сообщение меньше чем положено.
Например: в таблице 3 записи содержащие поле Адрес.
В цикле выведется 3 записи, но последняя запись выведеться без данных хотя они в ней есть.

if(isset($_GET[view_done]))
{

$select_records=mysql_query("select * from ext_records where end_date='$_GET[view_done]' and status='1' and id_r='$_SESSION[user_id]' order by end_date DESC;");
$data_records1=mysql_fetch_array($select_records);
if($data_records1[id]==0)
{
echo "<center>Ничего не найдено.<br><a href='table2.php'>Отменить результат поиска</a></center>";
}
else
{
echo "<center><a href='table2.php'>Отменить результат поиска</a></center>";

for($f=0;$f<mysql_num_rows($select_records);$f++)
{

$data_records=mysql_fetch_array($select_records);

echo "
Адрес:$data_records[adress]
";

}
}
}

  Ответить  
 
 автор: cheops   (18.08.2011 в 15:24)   письмо автору
 
   для: Eser   (18.08.2011 в 15:16)
 

Когда вы вызываете mysql_fetch_array($select_records) курсор результирующей таблицы смещается на одну позицию вниз, поэтому в цикле данные выбираются уже со второй записи. Лучше для определения факта нахождения или отсутствия данных проверять при помощи mysql_num_rows()
<?php
  
if(isset($_GET['view_done']))
  {
    
$query "select * from ext_records
              where
                end_date='
$_GET[view_done]' and
                status='1' and
                id_r='
$_SESSION[user_id]'
              order by end_date DESC;"
    
$select_records mysql_query($query);
    if(!
mysql_num_rows($select_records))
    {
      echo 
"<center>Ничего не найдено.<br>".
           
"<a href='table2.php'>Отменить результат поиска</a></center>";
    }
    else
    {
      echo 
"<center><a href='table2.php'>Отменить результат поиска</a></center>";

      for(
$f=0$f<mysql_num_rows($select_records); $f++)
      {
        
$data_records mysql_fetch_array($select_records);

        echo 
"Адрес:$data_records[adress]";
      }
    }
  }
?>

  Ответить  
 
 автор: Eser   (18.08.2011 в 15:54)   письмо автору
 
   для: cheops   (18.08.2011 в 15:24)
 

Век учись век живи.
Спасибо!

  Ответить  
 
 автор: f111   (19.08.2011 в 01:13)   письмо автору
 
   для: Eser   (18.08.2011 в 15:54)
 

>Век учись век живи.

может наоборот?

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

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