Есть ли смысл упрощать данный цикл?
1.
Женек (24.05.2011 / 21:45)
<select name = 'device' id = 'device_use'>
<?
<option value='0' disabled selected>Выберите устройство </option>
";
$query = pg_query("SELECT id,name FROM cat WHERE own='d'");
while ($result=pg_fetch_assoc($query))
{
echo "<optgroup label='::".$result['name']."::'>";
$query1 = pg_query ("SELECT id,name FROM model WHERE cat_id = '".$result['id']."'");
while ($result1=pg_fetch_assoc($query1))
{
echo " <option value = '".$result1['id']."'>- ".$result1['name']."</option>";
}
echo "</optgroup>";
}
echo "
</select>";
?>
в общем из двух табличек формируется селект с группами. В первой табличке содержаться категории устройств, они же служат группами, а во второй табличке содержаться устройства, которые ссылаются по id на категорию какую-либо и залетают в соответствующую группу.
Мне не нравится здесь запрос в цикле, когда категорий 5-6, ладно, а если их 30-40 (хоть и глупо все это будет в селект пихать) но все же, есть смысл упрощения? Чтобы достать все одним запросом в массив и с массивом работать или проще оставить так?
2.
Nu3oN (25.05.2011 / 00:33)
ну както так более читабельнее
<?php
echo '
<select name="device" id="device_use">
<option value="0" disabled="selected"> Выберите устройство </option>
';
$query = pg_query("SELECT `id`,`name` FROM `cat` WHERE `own`='d';");
while ($result = pg_fetch_assoc($query)) {
echo '<optgroup label="::'.$result['name'].'::">';
$query1 = pg_query ("SELECT `id`,`name` FROM `model` WHERE `cat_id` = '".$result['id']."';");
while ($result1 = pg_fetch_assoc($query1)) {
echo '<option value="'.$result1['id'].'">- '.$result1['name'].'</option>';
}
echo "</optgroup>";
}
echo '</select>';
?>
3.
Nu3oN (25.05.2011 / 00:46)
Совет тебе: привыкай к полям в таблицах, присваивать префиксы!
и можно было бы сделать что то типа такого(на работоспособность не проверял):
<?php
pg_query("
SELECT `c`.`cat_id`, `c`.`cat_name`, `m`.`model_id`, `m`.`model_name`
FROM `c`.`cat` LEFT JOIN `m`.`model_model` ON `c`.`cat_id` = `m`.`model_id`
WHERE `c`.`cat_own` = 'd' AND `m`.`model_id` = `c`.`cat_id`;
");
?>
4.
Женек (25.05.2011 / 09:55)
3.
Достойный Внимания, КЭП, я дружу с SQL и могу построить запрос, спасибо, суть вопроса в том - стоит ли?
5.
KOZZ (25.05.2011 / 10:03)
4.
Basters, зачем?
6.
Женек (25.05.2011 / 10:08)
5.
eGo, напрягает запрос в цикле, если будет 15 категорий, то уже за одно обновление страницы уйдет 16 запросов к БД...
7.
Валерий (25.05.2011 / 10:12)
Дык сделай как в 3м посте, раз напрягает
8.
Nu3oN (25.05.2011 / 12:02)
Basters (25 Мая 2011 / 09:55)
3. Достойный Внимания, КЭП, я дружу с SQL и могу построить запрос, спасибо, суть вопроса в том - стоит ли?
Ну если можешь, так зачем костыли лепишь?
Цикл в цикле это всегда ниесть гуд!
URL:
https://visavi.net/topics/21827