|
|
|
|
|
для: куч1963
(20.08.2006 в 07:59)
| | Да это вополне допускается - если внешний цикл возвращает не слишком много записей - всё будет работать достаточно быстро. | |
|
|
|
|
|
|
|
для: cheops
(20.08.2006 в 00:47)
| | Интересует такой вопрос, насколько допустима такое содержание кода
while($cat=mysql_fetch_array($ctg))
{
echo"<table width='458' border='0'>
<tr>
<td colspan='3'>".$cat['group_name']."</td>
</tr></table>";
$query1="SELECT * FROM db_gallery_image WHERE id_group = ".$cat['id_group']." ORDER BY RAND() LIMIT 3";
$p=mysql_query($query1);
while($picture=mysql_fetch_array($p))
{
echo "<table width='458' border='0'><tr>
<tr><td><img src='admin/ad1/gallery/".$picture['image_small']."'></td></tr>
</tr>
</table>";
}
}
|
То есть уместно ли при небольшом объёме вывода использовать запрос внутри цикла. И что больше грузит базу, два простых запроса, один из которых в цикле, или один двутабличный запрос? | |
|
|
|
|
|
|
|
для: andreybeat
(19.08.2006 в 16:57)
| | Вынесите тэг <table> за границы цикла, т.е. вместо
while($picture=mysql_fetch_array($p))
{
echo "<table width='458' border='0'><tr>
<tr><td><img src='admin/ad1/gallery/".$picture['image_small']."'></td></tr>
</tr>
</table>";
}
|
пишите
echo "<table width='458' border='0'><tr> ";
while($picture=mysql_fetch_array($p))
{
echo '<td><img src='admin/ad1/gallery/".$picture['image_small']."'></td>';
}
echo " </tr>
</table>";
?>
|
| |
|
|
|
|
|
|
|
для: andreybeat
(19.08.2006 в 16:43)
| | вот так работает правильно
$query = "SELECT db_gallery_group.id_group AS id_group,
db_gallery_group.group_name AS group_name ,
COUNT(db_gallery_image.id_image) AS total
FROM db_gallery_group, db_gallery_image
WHERE db_gallery_image.id_group = db_gallery_group.id_group AND
db_gallery_group.group_hide = 'show' AND db_gallery_image.image_hide = 'show'
GROUP BY db_gallery_group.id_group";
$ctg=mysql_query($query);
if(!$ctg) echo "erro sql 1";
if(mysql_num_rows($ctg)>0)
{
while($cat=mysql_fetch_array($ctg))
{
echo"<table width='458' border='0'>
<tr>
<td colspan='3'>".$cat['group_name']."</td>
</tr></table>";
$query1="SELECT * FROM db_gallery_image WHERE id_group = ".$cat['id_group']." ORDER BY RAND() LIMIT 3";
$p=mysql_query($query1);
while($picture=mysql_fetch_array($p))
{
echo "<table width='458' border='0'><tr>
<tr><td><img src='admin/ad1/gallery/".$picture['image_small']."'></td></tr>
</tr>
</table>";
}
}
}
|
но у меня фотографии выводит не в строку а в столбик это можно как то изменить ? | |
|
|
|
|
|
|
|
для: cheops
(19.08.2006 в 16:29)
| | вот так правильно или нет? :
$query = "SELECT db_gallery_group.id_group AS id_group,
db_gallery_group.group_name AS group_name ,
COUNT(db_gallery_image.id_image) AS total
FROM db_gallery_group, db_gallery_image
WHERE db_gallery_image.id_group = db_gallery_group.id_group AND
db_gallery_group.group_hide = 'show' AND db_gallery_image.image_hide = 'show'
GROUP BY db_gallery_group.id_group";
$ctg=mysql_query($query);
if(!$ctg) echo "erro sql 1";
if(mysql_num_rows($ctg)>0)
{
while($cat=mysql_fetch_array($ctg))
{
$query1="SELECT * FROM db_gallery_image WHERE id_group = ".$cat['id_group']." ORDER BY RAND() LIMIT 3";
$p=mysql_query($query1);
while($picture=mysql_fetch_array($p))
{
echo"<table width='458' border='0'>
<tr>
<td colspan='3'>".$cat['group_name']."</td>
</tr>
<tr>
<td>".$picture['image_name']."<img src='admin/ad1/gallery/".$picture['image_small']."'></td>
</tr>
</table>";
}
}
}
|
| |
|
|
|
|
|
|
|
для: andreybeat
(19.08.2006 в 16:12)
| | А вы как выводите фотографии в цикле? Фунция mysql_fetch_array() должна вызывать три раза. | |
|
|
|
|
|
|
|
для: cheops
(17.08.2006 в 13:50)
| | Я всё сделал как вы написали всё работает , но у меня проблема я не знаю как теперь отобразить именно три разных случайных фотографии! тоесть если я просто сделаю $picture['image'] то у меня во всех трёх столбцах таблицы будет одна и таже случайная фотография , а мне надо три разных в каждом столбце!подскажите | |
|
|
|
|
|
|
|
для: andreybeat
(17.08.2006 в 12:56)
| | Да, предполагается, что запрос на вывод 3-х случайных фотографий будет выполняться в цикле обработки первого запроса. | |
|
|
|
|
|
|
|
для: cheops
(17.08.2006 в 12:10)
| | А я могу подставить вместо N результат первого запроса там где, как раз и идёт вывод групп ну тоесть чтоб к примеру быбралось 3 группы и под каждой отобразилось 3 картинки из этой группы.? | |
|
|
|
|
|
|
|
для: andreybeat
(17.08.2006 в 03:17)
| | Хм... вы именно в этот запрос хотите это поместить? Удобнее будет для каждой группы оформить свой собственный запрос
SELECT * FROM photo WHERE id_catalog = N ORDER BY RAND() LIMIT 3
|
где N - номер каталога. | |
|
|
|
|