[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод массива foreach
Alex75
Здравствуйте, подскажите как вывести с помощью foreach заголовки из базы данных.
С помощью цикла while я их вывожу так

$res = mysql_query('SELECT * FROM `category`') or die (mysql_error());
while($row = mysql_fetch_assoc($res)){
echo '<li><a href="'.$site_url.'index.php?category_id='.$row['category_id'].'">'.$row['title'].'</a> </li>';}


все работает, а вот циклом foreach не получается

foreach ($row = mysql_fetch_array($res) as $result){

echo '<li> <a href"">'.$result['title'].'</a></li>';
}
rooor
с чего бы это возникла такая необходимость?)
Alex75
Экспериментирую, изучаю php. Возник вопрос как вывести данные разными способами.
sergeiss
Цитата (Alex75 @ 17.03.2015 - 17:50)
а вот циклом foreach не получается

foreach ($row = mysql_fetch_array($res) as $result){
  
echo '<li> <a href"">'.$result['title'].'</a></li>';
}

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

В то же время, цикл while позволяет перебирать все строки данных по очереди. Ему не нужен никакой массив, ему нужно всего лишь корректное условие. Коим является то, что была считана одна строка, которую ты обрабатываешь потом.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Alex75
То то я смотрю, что у меня действительно одна строка выводится, значит foreach не совсем цикл, не перебирает все элементы массива?
Значит при помощи foreach ни как нельзя вывести?
sergeiss
Цитата (Alex75 @ 17.03.2015 - 18:26)
значит foreach не совсем цикл, не перебирает все элементы массива?

Еще раз повторяю:
Цитата (sergeiss @ 17.03.2015 - 18:20)
Потому что в foreach на входе должен быть уже полный массив. Ты же получаешь всего одну строку и передаешь ее на обработку.


То есть, foreach всё "перебирает" нормально. Но ты, в показанном коде, не даешь ему этот массив!!! Ты ему даешь только одну, первую строку. И перебираешь циклом foreach все элементы массива.
Чтобы в этом убедиться, запусти такой код и ты получишь названия всех колонок в выборке:
foreach ($row = mysql_fetch_array($res) as $key => $result){

echo '<li>'.$key.'</li>';
}


Цитата (Alex75 @ 17.03.2015 - 18:26)
Значит при помощи foreach ни как нельзя вывести?

Можно :) Но не так, как делаешь ты.
Сначала надо сохранить все данные в массив, а потом уже идти по нему foreach'ем.
Примерно так:
$result = array();
// набираем данные в массив
while( $row = mysql_fetch_assoc($res) )
{
$result[] = $row;
}

// в любом месте выводим данные в том формате, какой требуется - можно даже несколько раз в разных местах выводить одно и то же
foreach( $result as $one_row )
{
echo $one_row['title'].'<br>';
}


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.