[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Цикл while в while - проблема
Vulkan
Здравствуйте, столкнулся с проблемой - делаю цикл на вывод из бд картинок, у каждой картинки есть input select с уникальным именем и в select'е тоже идёт вывод из БД список альбомов, проблема в том что в первой картинке select отображается норм, а в других он уже идёт пустой, вот код (скрин внизу):

$albums = mysql_query("SELECT * FROM albums WHERE user_id='$userid'") or die(mysql_error());
$foto_albums = mysql_query("SELECT * FROM images WHERE album_id='$id' and status='active'") or die(mysql_error());
while($row=mysql_fetch_assoc($foto_albums))
{
$image_id=$row['id'];
$image_name=$row['name'];
$image_description=$row['description'];
$image_url=$row['url'];
echo "<div id=\"Foto_$image_id\">
<div class=
\"edit_photo_main_$image_id\">
<div class=
\"edit_photo_main\">
<div class=
\"edit_photo_options\">
<img src=
\"$image_url\" width=\"130px\" style=\"float:left;\"/><br>
<a href=
\"#\" class=\"text\" onclick=\"photoDelete($image_id)\">Удалить</a><div class=\"move_box\"><span class=\"text\">Переместить в</span>
<form method=
\"post\">
<select name=
\"albums$image_id\" class=\"album_select\">"; // SELECT с циклом
if(mysql_num_rows($albums)>1)
{
while($album_v=mysql_fetch_assoc($albums))
{
$album_v_id=$album_v['id'];
$album_v_name=$album_v['name'];
echo "<option name=\"album$album_v_id\">$album_v_name</option>";
}
}

echo "</select>
</div>
</div>
<div class=
\"edit_photo_desc\">
<textarea class=
\"image_desc\">$image_description</textarea>
</div>
</div>
</div>
</div>"
;
}




Спустя 49 минут, 25 секунд (29.05.2010 - 08:13) Rand написал(а):
Во втором цикле mysql_fetch_assoc прокручивает результат запроса до последней строки. При следующей итерации первого цикла, прокручивать уже будет нечего.
$foto_albums = mysql_query("SELECT * FROM images WHERE album_id='$id' and status='active'") or die(mysql_error());
while($row=mysql_fetch_assoc($foto_albums))
{
$image_id=$row['id'];
$image_name=$row['name'];
$image_description=$row['description'];
$image_url=$row['url'];
echo "<div id=\"Foto_$image_id\">
<div class=
\"edit_photo_main_$image_id\">
<div class=
\"edit_photo_main\">
<div class=
\"edit_photo_options\">
<img src=
\"$image_url\" width=\"130px\" style=\"float:left;\"/><br>
<a href=
\"#\" class=\"text\" onclick=\"photoDelete($image_id)\">Удалить</a><div class=\"move_box\"><span class=\"text\">Переместить в</span>
<form method=
\"post\">
<select name=
\"albums$image_id\" class=\"album_select\">"; // SELECT с циклом

$albums = mysql_query("SELECT * FROM albums WHERE user_id='$userid'") or die(mysql_error());

if(mysql_num_rows($albums)>1)
{
while($album_v=mysql_fetch_assoc($albums))
{
$album_v_id=$album_v['id'];
$album_v_name=$album_v['name'];
echo "<option name=\"album$album_v_id\">$album_v_name</option>";
}
}

echo "</select>
</div>
</div>
<div class=
\"edit_photo_desc\">
<textarea class=
\"image_desc\">$image_description</textarea>
</div>
</div>
</div>
</div>"
;
}

Спустя 15 минут, 22 секунды (29.05.2010 - 08:28) Kuliev написал(а):
За чем гонять бестолковый запрос в цикле???

Спустя 2 минуты, 8 секунд (29.05.2010 - 08:31) Rand написал(а):
Ё-маё, напиши как надо, не все же такие спецы.

Спустя 15 минут, 37 секунд (29.05.2010 - 08:46) Vulkan написал(а):
Rand, спасибо большое за подсказку.

Спустя 49 секунд (29.05.2010 - 08:47) Rand написал(а):
В данном случае, думаю можно ещё занести результат запроса в массив, а потом прокручивать его. smile.gif

Спустя 13 минут, 27 секунд (29.05.2010 - 09:00) Kuliev написал(а):
Цитата (Rand @ 29.05.2010 - 10:31)
Ё-маё, напиши как надо, не все же такие спецы.

насколько я понимаю переменная $userid не динамическая, а значит что запрос постоянно выводит одни и теже данные!

По этому не нужно вставлять вот этот запрос в цикл

$albums = mysql_query("SELECT * FROM albums WHERE user_id='$userid'") or die(mysql_error());


лучше получить значение из бд согласно этому запросу перед циклом!



Спустя 13 минут, 40 секунд (29.05.2010 - 09:14) Rand написал(а):
Мне самому не очень нравятся запросы в циклах, по другому я бы сделал вот так, как можно ещё не знаю:
$albums = mysql_query("SELECT * FROM albums WHERE user_id='$userid'") or die(mysql_error());
if(mysql_num_rows($albums)>1)
{
while($album_v=mysql_fetch_assoc($albums))
{
$album_v_id[]=$album_v['id'];
$album_v_name[]=$album_v['name'];
}
}

$foto_albums = mysql_query("SELECT * FROM images WHERE album_id='$id' and status='active'") or die(mysql_error());
while($row=mysql_fetch_assoc($foto_albums))
{
$image_id=$row['id'];
$image_name=$row['name'];
$image_description=$row['description'];
$image_url=$row['url'];
echo "<div id=\"Foto_$image_id\">
<div class=
\"edit_photo_main_$image_id\">
<div class=
\"edit_photo_main\">
<div class=
\"edit_photo_options\">
<img src=
\"$image_url\" width=\"130px\" style=\"float:left;\"/><br>
<a href=
\"#\" class=\"text\" onclick=\"photoDelete($image_id)\">Удалить</a><div class=\"move_box\"><span class=\"text\">Переместить в</span>
<form method=
\"post\">
<select name=
\"albums$image_id\" class=\"album_select\">"; // SELECT с циклом
for($i=0;$i<count($album_v_id);$i++)
{
echo "<option name=\"album$album_v_id[$i]\">$album_v_name[$i]</option>";
}
echo "</select>
</div>
</div>
<div class=
\"edit_photo_desc\">
<textarea class=
\"image_desc\">$image_description</textarea>
</div>
</div>
</div>
</div>"
;
}

Спустя 27 минут, 28 секунд (29.05.2010 - 09:42) Vulkan написал(а):
Цитата (Rand @ 29.05.2010 - 06:14)
Мне самому не очень нравятся запросы в циклах, по другому я бы сделал вот так, как можно ещё не знаю:
$albums = mysql_query("SELECT * FROM albums WHERE user_id='$userid'") or die(mysql_error());
if(mysql_num_rows($albums)>1)
{
while($album_v=mysql_fetch_assoc($albums))
{
$album_v_id[]=$album_v['id'];
$album_v_name[]=$album_v['name'];
}
}

$foto_albums = mysql_query("SELECT * FROM images WHERE album_id='$id' and status='active'") or die(mysql_error());
while($row=mysql_fetch_assoc($foto_albums))
{
$image_id=$row['id'];
$image_name=$row['name'];
$image_description=$row['description'];
$image_url=$row['url'];
echo "<div id=\"Foto_$image_id\">
<div class=
\"edit_photo_main_$image_id\">
<div class=
\"edit_photo_main\">
<div class=
\"edit_photo_options\">
<img src=
\"$image_url\" width=\"130px\" style=\"float:left;\"/><br>
<a href=
\"#\" class=\"text\" onclick=\"photoDelete($image_id)\">Удалить</a><div class=\"move_box\"><span class=\"text\">Переместить в</span>
<form method=
\"post\">
<select name=
\"albums$image_id\" class=\"album_select\">"; // SELECT с циклом
for($i=0;$i<count($album_v_id);$i++)
{
echo "<option name=\"album$album_v_id[$i]\">$album_v_name[$i]</option>";
}
echo "</select>
</div>
</div>
<div class=
\"edit_photo_desc\">
<textarea class=
\"image_desc\">$image_description</textarea>
</div>
</div>
</div>
</div>"
;
}

Это уже намного рациональнее, спасибо =)
Быстрый ответ:

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