Различные вопросы по PHP и MySQL

100K
.
The Fast, Secure and Professional - Yii2
Onatolich, у меня сейчас точно так
.
# Rakovskiy (22.08.2014 / 18:33)
Onatolich, у меня сейчас точно так
Если к товару много изображений, то вытянуть сразу и товар и изображения не получится. Вот если бы только одно изображение, то можно было бы. )
.
Rakovskiy
The Fast, Secure and Professional - Yii2
# Onatolich (22.08.2014 / 23:56)
Если к товару много изображений, то вытянуть сразу и товар и изображения не получится. Вот если бы только одно изображение, то можно было бы. )
Спасибо,плюс в карму как и обещал
.
reaper
# Onatolich (22.08.2014 / 17:57)
$goods = mysql_query"SELECT * FROM `goods`;");
while($good = mysql_fetch_array($goods)) {
    $photos = mysql_query("SELECT * FROM `photos` WHERE `ref` = " . $good['id'] . ";");
}

Запросы в цикле -- зло.
$goods = [];
$result = mysql_query("SELECT * FROM `goods`");
while (($good = mysql_fetch_assoc($result))) {
    $good['id'] = (int) $good['id'];
    $good['photos'] = [];
    $goods[$good['id']] = $good;
}

$result = mysql_query("SELECT * FROM `photos` WHERE `ref` IN('" . join("', '", array_keys($goods)) . "')");
while (($photo = mysql_fetch_assoc($result))) {
    $photo['ref'] = (int) $photo['ref'];
    $goods[$photo['ref']]['photos'][] = $photo;
}
.
Ego vir viden
# reaper (23.08.2014 / 14:56)
Запросы в цикле -- зло.
почему?
.
reaper
selemet, Потому что когда данных слишком много, то всё будет жутко тормозить.
.
Rakovskiy
The Fast, Secure and Professional - Yii2
reaper, Спасибо за подсказку.Сделал немного проще.

$photo = array();
$photos = CatalogPhotoModel::model()->findAll();
foreach ($photos as $arr){
    $photo[$arr->ref][] =  $arr;
}


Повезло,что нет постраничной навигации.
.
# reaper (23.08.2014 / 14:56)
Запросы в цикле -- зло.
[php]
$goods = [];
$result = mysql_query("SELECT * FROM `goods`");
while (($good = mysql_fetch_assoc($result))) {
$good['id'] = (int) $good['id'];
$good['photos']
Не правильно. Твой код отдельно выведет товары и отдельно все фотографии ко всем товарам. Без цикла никак!
.
# Rakovskiy (23.08.2014 / 22:37)
reaper, Спасибо за подсказку.Сделал немного проще.

$photo = array();
$photos = CatalogPhotoModel::model()->findAll();
foreach ($photos as $arr){
    $photo[$arr->ref][] =  $arr;
}
Вот те на. У тебя MVC стоит, что ж ты сразу не сказал )
Вообще по логике должна быть модель для товара, уже в которой должен быть аттрибут photo, например, который будет хранить массив фотографий, а логики в моделе для самих фоток честно сказать я не вижу. )
.
reaper, И кстати заметные лаги начнутся при обработке оверстатыщ записей, так что не надо быть таким нагрузкопаникёром )
Всего: 7969