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

Форум PHP

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

 

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

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

тема: одинаковые элементы масива в цикле
 
 автор: *m*   (02.11.2011 в 18:35)   письмо автору
 
 

Всем привет!

В БД, а таблице, есть три записи:

id  note
1  1 запись
2  2 запись
3  3 запись



если выбрать все записи из таблицы и вывести их в цикле while,

$query = ("SELECT * FROM tbl");
$res = mysql_query($query); 
if(!$res) exit("Ошибка - ".mysql_error());
if(mysql_num_rows($res) > 0) $arres = mysql_fetch_array($res);
<?
while($arres mysql_fetch_array($res)){

 print 
$notes $arres[note],;

}
?>

то получится следующее:
2 запись, 3 запись, 3 запись


а в случае с do while

<?
do{

print 
$notes $arres[note],;

}while(
$arres mysql_fetch_array($res));
?>


1запись, 2 запись, 3 запись, 3 запись


Почему дублируется последний элемент??

  Ответить  
 
 автор: Jovidon   (02.11.2011 в 20:41)   письмо автору
 
   для: *m*   (02.11.2011 в 18:35)
 

а может
print $arres[note],;

  Ответить  
 
 автор: *m*   (02.11.2011 в 21:07)   письмо автору
 
   для: Jovidon   (02.11.2011 в 20:41)
 

не очень вас понимаю

  Ответить  
 
 автор: Jovidon   (02.11.2011 в 21:34)   письмо автору
 
   для: *m*   (02.11.2011 в 21:07)
 


<?php

$query 
= ("SELECT * FROM tbl"); 
$res mysql_query($query);  
if(!
$res) exit("Ошибка - ".mysql_error()); 
if(
mysql_num_rows($res) > 0$arres mysql_fetch_array($res); 
do{ 
print 
$arres[note],; 
}
while(
$arres mysql_fetch_array($res));
?>

  Ответить  
 
 автор: KPETuH   (02.11.2011 в 22:31)   письмо автору
 
   для: *m*   (02.11.2011 в 18:35)
 

Почему у вас этот кусок

$query = ("SELECT * FROM tbl");
$res = mysql_query($query); 
if(!$res) exit("Ошибка - ".mysql_error());
if(mysql_num_rows($res) > 0) $arres = mysql_fetch_array($res);


не в ходит в <? ?>

зачем вам эта конструкция?

if(mysql_num_rows($res) > 0) $arres = mysql_fetch_array($res); 


в общем то вот такая конструкция отлично все выводит
<?php
$query 
"SELECT * FROM test";
$res mysql_query($query); 
if(!
$res) exit("Ошибка - ".mysql_error());
if(
mysql_num_rows($res) > 0){
    while(
$arres mysql_fetch_array($res)){
        echo 
$arres[note];
    }
}
?>

  Ответить  
 
 автор: *m*   (02.11.2011 в 23:01)   письмо автору
 
   для: KPETuH   (02.11.2011 в 22:31)
 

Не понимаю, вы и Jovidon привели тот же самый код по сути, работает он точно также как и мой, то есть дублирует последнюю запись, в этом вопрос, почему?

  Ответить  
 
 автор: KPETuH   (02.11.2011 в 23:13)   письмо автору
 
   для: *m*   (02.11.2011 в 23:01)
 

у меня ничего не дублируется может приведете дамп таблицы и весь ваш код?

  Ответить  
 
 автор: cheops   (03.11.2011 в 17:01)   письмо автору
 
   для: *m*   (02.11.2011 в 23:01)
 

Потому что do ... while() проверяет условие после того, как отработает тело цикла, здесь его лучше не использовать. Вместо него лучше использовать обычный while(), как у вас в первом варианте, только убрав перед ним лишний вызов mysql_fetch_array().

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

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