php mysql_fetch_array справка по запросу

0

Привет, я пытаюсь обработать запрос mysql_fetch_array ниже и упростить код, поэтому для обоих наборов выполняется только 1 запрос, возможно ли это

<select name=[set1]>    
<?php
$set1 = mysql_fetch_array(mysql_query("SELECT `Locale` FROM `language` WHERE `Setting` = '1' ORDER BY FormatSet"));
while($row = $set1){
    echo "<option value=\"$set1\">$set1</option>\n";
}
?>
                </select>
                <select name=[set2]>    
<?php
$set2 = mysql_fetch_array(mysql_query("SELECT `Locale` FROM `language` WHERE `Setting` = '2' ORDER BY FormatSet"));
while($row = $set2){
    echo "<option value=\"$set2\">$set2</option>\n";
}
?>
</select>
  • 2
    Этот код даже не должен запускаться. Цикл while будет работать вечно ..
Теги:

2 ответа

1
Лучший ответ
<?php 
$textSet1 = '<select name=[set1]>';
$textSet2 = '<select name=[set2]>';
$set = mysql_query("SELECT `Locale`, `Setting` FROM `language` WHERE `Setting` in ('1','2') ORDER BY FormatSet");
while($row = mysql_fetch_array($set)){
    if ($row['Setting'] == '1')
         $textSet1 .= '<option value="'.$row['Locale'].'">'.$row['Locale'].'</option>';
    else
         $textSet2 .= '<option value="'.$row['Locale'].'">'.$row['Locale'].'</option>';
}
$textSet1 .= '</select>';
$textSet2 .= '</select>';

echo $textSet1;
echo $textSet2;
?>
  • 1
    Условие должно быть следующим: while($row = mysq_fetch_array($set)) $set= mysql_query(...
  • 0
    Я забыл упомянуть, что оба раскрывающихся списка должны отображаться. Могло бы выше позволить это? Я пока не могу проверить, но замечаю условие
Показать ещё 1 комментарий
-1

Если я понимаю ваш вопрос, вы хотите выполнить оба запроса одновременно и половину кода.

Я бы предложил изменить ваш запрос, чтобы получить все записи за один раз, и использовать флаг для создания нового выбора для каждого нового параметра, это должно работать и может легко добавить больше настроек:

$set = mysql_fetch_assoc(mysql_query("SELECT `Locale` FROM `language` WHERE `Setting` = '1' OR 'Setting' = '2' ORDER BY Setting, FormatSet"));

$setting = 0;
$close = false;

foreach ($set as $row)
{
    if ($row['Setting'] > $setting)
    {
        $setting = $row['Setting'];
        echo "<select name=[set{$setting}]>";
        // Set flag to close select
        $close = true;
    }

    echo "<option value=\"{$row['Locale']}\">{$row['Locale']}</option>\n";

    if ($close)
    {
        echo '</select>';
        $close = false;
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню