Есть ли смысл упрощать данный цикл?

Print RSS
18

Author
Дедушка
0

<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 (хоть и глупо все это будет в селект пихать) но все же, есть смысл упрощения? Чтобы достать все одним запросом в массив и с массивом работать или проще оставить так?
Changed: Женек (24.05.2011 / 22:06)
N

Эцилопп сией тентуры
0
ну както так более читабельнее

<?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>'; 
?>
N

Эцилопп сией тентуры
0
Совет тебе: привыкай к полям в таблицах, присваивать префиксы!
и можно было бы сделать что то типа такого(на работоспособность не проверял):
<?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`;
         ");
?>
Changed: Nu3oN (25.05.2011 / 00:48)
Author
Дедушка
0
3. Достойный Внимания, КЭП, я дружу с SQL и могу построить запрос, спасибо, суть вопроса в том - стоит ли?
K

Транклюкаторщик
0
4. Basters, зачем?
Author
Дедушка
0
5. eGo, напрягает запрос в цикле, если будет 15 категорий, то уже за одно обновление страницы уйдет 16 запросов к БД...
В

Чатланин
0
Дык сделай как в 3м посте, раз напрягает
N

Эцилопп сией тентуры
0
Basters (25 Мая 2011 / 09:55)
3. Достойный Внимания, КЭП, я дружу с SQL и могу построить запрос, спасибо, суть вопроса в том - стоит ли?
Ну если можешь, так зачем костыли лепишь?
Цикл в цикле это всегда ниесть гуд!
Stickers / Tags / Rules / Top topics / Top Posts / Search