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

Форум PHP

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

 

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

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

тема: while foreach
 
 автор: kapitalist   (28.04.2016 в 09:48)   письмо автору
 
 

Всем доброго времени суток.
Возник вопрос по циклам связанным с выводом данных из БД.

Создал функцию, которая получает запрос, сейчас для теста добавлено 2 записи.

function lister() { // Функция вывода
    global $sql;
    $sql = mysql_query($sql) or die(mysql_error());
    $row = array();
    while ($row[] = mysql_fetch_assoc($sql));
    return $row;
}
$lister = "lister";


Затем вывожу данные так

<? foreach ($cat as $r): ?>

    <div class='str'>
        <div class='td'><?=$r[name]?></div>
        <div class='td'><?=$r[url]?></div>
    </div>

<? endforeach; ?>


Но проблема в том, что хотя в БД 2 записи, цикл foreach выводит 3 записи, одна из которых пустая!
Как решить такой трабл?

  Ответить  
 
 автор: KPETuH   (28.04.2016 в 11:20)   письмо автору
 
   для: kapitalist   (28.04.2016 в 09:48)
 

<?php
$result 
mysql_query(...);
while((
$resultArray[] = mysql_fetch_assoc($result)) || array_pop($resultArray));
?>

  Ответить  
 
 автор: kapitalist   (28.04.2016 в 11:59)   письмо автору
 
   для: KPETuH   (28.04.2016 в 11:20)
 

Спасибо, помогло!
Но, вы могли бы для таких, как я объяснить, по шагам?
Т.е. принцип я понял, но почему такое решение правильное?

  Ответить  
 
 автор: KPETuH   (28.04.2016 в 12:10)   письмо автору
 
   для: kapitalist   (28.04.2016 в 11:59)
 

Я просто воспользовался поиском и в первом же каменте к
 mysql_fetch_assoc

нашел ответ
http://php.net/manual/ru/function.mysql-fetch-assoc.php

  Ответить  
 
 автор: confirm   (28.04.2016 в 13:58)   письмо автору
 
   для: kapitalist   (28.04.2016 в 09:48)
 

Как решить такой трабл?

Не заводить в базе пустых записей.

  Ответить  
 
 автор: Trianon   (29.04.2016 в 01:51)   письмо автору
 
   для: confirm   (28.04.2016 в 13:58)
 

он их не в базе заводит, а в цикле.
while завершится уже после того, как false окажется добавлено в массив.

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

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