Связи сделаны так, что пришлось разбить на 3 таблицы.
Товары id_tovar, ..., ..., ...;
Картинки к товарам id, id_tovar
Описание к товарам id, id_tovar
id_tovar это ключ.
Нужно ли оптимизировать скрипт, или все правильно сделано у меня?
$result = mysql_query("select * from product");
while($row = mysql_fetch_array($result)){
$temp_id = $row['id_product']; // получаем основной ID
echo '<h1>'.$row['name'].'</h1>'; // выводим название продукта
//получение картинок
$resultPICT = mysql_query("select * from product_picts where id='".$temp_id."'");
$rowPICT = mysql_fetch_array($resultPICT);
echo '<p><img src="items/'.$rowPICT['link']'.jpg"></p>'; //картинка
//описание товара
$resultOP = mysql_query("select * from product_opisanie where id_product=".$temp_id."");
$rowOP = mysql_fetch_array($resultOP);
echo '<p>'.$rowOP['opisanie'].'</p>'; // описание
}
Спустя 1 час, 22 минуты, 6 секунд (6.04.2011 - 20:09) Trianon написал(а):
Если описание у Вас одно на товар - его имеет смысл хранить в таблице с товаром.
Таблица с описаниями не нужна.
Если картинка у Вас одна на товар (что маловероятно) - её имеет смысл хранить в таблице с товаром.
Если картинок может быть несколько (что вполне естественно) действительно требуется таблица с картинками.
Неясно лишь, почему Вы показываете только одну (при чем первую попавшуюся) картинку для данного товара.
Про оптимизацию думать забудьте.
Оптимизировать можно то, что уже сделано и корректно работает, но и потребляет больше ресурсов, чем хочется.
Оптимизация раньше времени обычно приводит к лишним затратам, никакого полезного эффекта в конечном итоге не приносящим.
Таблица с описаниями не нужна.
Если картинка у Вас одна на товар (что маловероятно) - её имеет смысл хранить в таблице с товаром.
Если картинок может быть несколько (что вполне естественно) действительно требуется таблица с картинками.
Неясно лишь, почему Вы показываете только одну (при чем первую попавшуюся) картинку для данного товара.
Про оптимизацию думать забудьте.
Оптимизировать можно то, что уже сделано и корректно работает, но и потребляет больше ресурсов, чем хочется.
Оптимизация раньше времени обычно приводит к лишним затратам, никакого полезного эффекта в конечном итоге не приносящим.
Спустя 16 минут, 23 секунды (6.04.2011 - 20:25) maximka787 написал(а):
Trianon
Все верно. Спорить не буду. Тут просто не сам код важен, сколько идея, можно ли делать запросы в таком вот виде.
Я тогда сокращу код. Тут логика точно верная, вывод множества картинок. Нужно оптимизировать такую структуру в принципе?
Все верно. Спорить не буду. Тут просто не сам код важен, сколько идея, можно ли делать запросы в таком вот виде.
Я тогда сокращу код. Тут логика точно верная, вывод множества картинок. Нужно оптимизировать такую структуру в принципе?
$result = mysql_query("select * from product");
while($row = mysql_fetch_array($result)){
echo '<h1>'.$row['name'].'</h1>'; // выводим название продукта
//получение картинок
$resultPICT = mysql_query("select * from product_picts where id='".$row['id_product']."'");
while($rowPICT = mysql_fetch_array($resultPICT)){
$rowPICT = mysql_fetch_array($resultPICT);
echo '<p><img src="items/'.$rowPICT['link']'.jpg"></p>';
}
}
Спустя 16 минут, 43 секунды (6.04.2011 - 20:42) Trianon написал(а):
where id= во внутреннем запросе вызывает сомнения.
В принципе, весь поток данных можно вытащить одним (LEFT JOIN) запросом.
Стоит ли это делать - вопрос спорный.
Опять же, несколько картинок одного товара обычно показывают на странице этого товара, а не в общем прайсе.
Одну картинку на товар всяко лучше вытаскивать через LEFT JOIN
В принципе, весь поток данных можно вытащить одним (LEFT JOIN) запросом.
Стоит ли это делать - вопрос спорный.
Опять же, несколько картинок одного товара обычно показывают на странице этого товара, а не в общем прайсе.
Одну картинку на товар всяко лучше вытаскивать через LEFT JOIN
Спустя 3 минуты, 57 секунд (6.04.2011 - 20:46) maximka787 написал(а):
Trianon
Наверно про LEFT JOIN надо почитать. опять же, изначально не было цикла при выводе картинок всех из-за того что это был вывод в прайсе, то есть только первая показывается. Я сейчас хочу понять если JOIN правильней использовать чем кучу запросов, то надо объединять учиться.
Наверно про LEFT JOIN надо почитать. опять же, изначально не было цикла при выводе картинок всех из-за того что это был вывод в прайсе, то есть только первая показывается. Я сейчас хочу понять если JOIN правильней использовать чем кучу запросов, то надо объединять учиться.
_____________
..Работает - не трогай!