Форумы портала PHP.SU » » Работа с СУБД » Вывод всей информации из базы данных

Страниц (1): [1]
 

1. Mr.KreDo - 02 Июля, 2011 - 23:03:42 - перейти к сообщению
Всем Привет, как лучше выводить всю информацию из базы ?

1 способ
PHP:
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query("SELECT * FROM `ip_block` WHERE `id_user`='{$_SESSION[user_admin_sp_id]}'");      
  3. $myrow = mysql_fetch_array($result);
  4.  
  5. do
  6. {
  7. echo $myrow['ip_block'];
  8.  
  9. }
  10. while ($myrow = mysql_fetch_array($result));


2 способ

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $query_ammo2=mysql_query("SELECT `name`, `ammo`, `kills` FROM `players` ORDER BY `kills` DESC");
  4. $query_ammo=mysql_fetch_array($query_ammo2);
  5.  
  6.         echo "<table width='100%' border='1'>
  7.        <tr>
  8.        <td>&nbsp;<b>Ник</b></td>
  9.        <td>&nbsp;<b>Убийств</b></td>
  10.        <td>&nbsp;<b>Аммо</b></td>
  11.        </tr>";
  12.        
  13.     while( $query_ammo = mysql_fetch_array( $query_ammo2 ) ) {
  14.         echo "<tr>
  15.        <td>&nbsp;<b>$query_ammo[name]</b></td>
  16.        <td>&nbsp;<b>$query_ammo[kills]</b></td>
  17.        <td>&nbsp;<b>$query_ammo[ammo]</b></td>
  18.        </tr>";
  19.    
  20.     }
  21.    
  22.     echo "</table>";
  23.  


Когда я использую 2 способ то выводятся не все записи, 1 запись в базе не выводится.
Что я делаю не так?
2. PATCH - 02 Июля, 2011 - 23:13:58 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. do
  2. {
  3.         echo "<tr>
  4.        <td>&nbsp;<b>$query_ammo[name]</b></td>
  5.        <td>&nbsp;<b>$query_ammo[kills]</b></td>
  6.        <td>&nbsp;<b>$query_ammo[ammo]</b></td>
  7.        </tr>";
  8. }
  9. while ($query_ammo = mysql_fetch_array( $query_ammo2 ));


я всегда вывожу через цикл do while и все записи выводятся
3. OrmaJever - 02 Июля, 2011 - 23:15:38 - перейти к сообщению
PATCH пишет:
я всегда вывожу через цикл do while и все записи выводятся

Почему? этому есть обоснование?
Выводить нужно так:
Причём нужно убрать 4 строку!
PHP:
скопировать код в буфер обмена
  1. $query_ammo2=mysql_query("SELECT `name`, `ammo`, `kills` FROM `players` ORDER BY `kills` DESC");
  2.  
  3.         echo "<table width='100%' border='1'>
  4.        <tr>
  5.        <td>&nbsp;<b>Ник</b></td>
  6.        <td>&nbsp;<b>Убийств</b></td>
  7.        <td>&nbsp;<b>Аммо</b></td>
  8.        </tr>";
  9.        
  10.     while( $query_ammo = mysql_fetch_array( $query_ammo2 ) ) {
  11.         echo "<tr>
  12.        <td>&nbsp;<b>{$query_ammo['name']}</b></td>
  13.        <td>&nbsp;<b>{$query_ammo['kills']}</b></td>
  14.        <td>&nbsp;<b>{$query_ammo['ammo']}</b></td>
  15.        </tr>";
  16.    
  17.     }
  18.    
  19.     echo "</table>";
4. PATCH - 02 Июля, 2011 - 23:19:16 - перейти к сообщению
в цикле do while у меня и с четвертой строкой работает. а в while эт типо уже вывел 1 запись считается?
5. OrmaJever - 02 Июля, 2011 - 23:27:07 - перейти к сообщению
PATCH пишет:
в цикле do while у меня и с четвертой строкой работает.

4 строка и была написана для do - while, без неё будет notice и пустая таблица (если будет в цыкле)
А если оставить 4 строку для while то результат будет со 2 строки

PATCH пишет:
а в while эт типо уже вывел 1 запись считается?

http://php.su/learnphp/cs/?cycles
там написана разница этих цыклов
6. Slavenin - 03 Июля, 2011 - 00:06:27 - перейти к сообщению
при каждом обращении функция
смещает внутренний указатель результата запроса на одну позицию вперед. Поэтому записи начинают выводится со второй строки. Для смещения указателя в нужную позицию используется функция
PHP:
скопировать код в буфер обмена
7. Мелкий - 03 Июля, 2011 - 09:26:47 - перейти к сообщению
PATCH пишет:
в цикле do while у меня и с четвертой строкой работает

А теперь включите вывод всех ошибок и сравните работу обоих подходов для запроса, возвращающего 0 строк.

 

Powered by ExBB FM 1.0 RC1