Как разместить выбранное значение в php

В приведенном ниже скрипте php я получил флажок ("солнцестояния") и пару радиокнопок, которые также являются массивами. Я хочу, чтобы они были активными, если флажок установлен (это работает). Так что если не проверено, он обрабатывает последний запрос. Однако у меня есть проблема с работой этих радиокнопок. Только "Зимнее солнцестояние" работает сейчас, независимо от того, выберу я "Летнее солнцестояние". Как я могу объявить их значения в достаточной степени.

HTML:

    <tr><td colspan="10" align="center"><h2>Solstices</h2></td></tr>
  <tr><td><input name="solstices" type="checkbox" id="solstices" value="1" />Solstices<br /></td></tr>
 <td><input name="check_sol[]" type="radio" id="check_sol[]" value="1" />Summer Solstice</td>
 <td><input name="check_sol[]" type="radio" id="check_sol[]" value="2" />Winter Solstice<br /></td></tr>

PHP:

//DNI CHECKBOX + ALL

if(isset($_POST['solstices'])){
        if(isset($_POST['check_sol'])=='1'){
$tmp="SELECT DISTINCT ".implode(",", $sql_columns)." FROM $database_Database_Test.$table_name where DATE=\"2012-06-11\"";
        }
        if(isset($_POST['check_sol'])=='2'){ 
$tmp="SELECT DISTINCT ".implode(",", $sql_columns)." FROM $database_Database_Test.$table_name where DATE= \"2011-12-21\"";
        }
}
else {
$tmp ="SELECT DISTINCT ".implode(",", $sql_columns)." FROM $database_Database_Test.$table_name where DATE>=\"$fromdate\" AND DATE<=\"$todate\""; 
};

3 ответа

Решение

Убрал скобки [] из HTML-кода (check_sol[]), вероятно, он не подходит для радиокнопок. Плюс несколько заметных изменений в php-коде.

HTML:

<tr><td><input name="solstices" type="checkbox" id="solstices" value="1" />Solstices</td></tr>
 <td><input name="check_sol" type="radio"  value="8" checked="checked" />Summer Solstice</td>
 <td><input name="check_sol" type="radio"  value="9" />Winter Solstice  <br /></td></tr>

PHP:

if(isset($_POST['solstices'])){
        if($_POST['check_sol']=='8'){
        $tmp="SELECT DISTINCT ".implode(",", $sql_columns)." FROM $database_Database_Test.$table_name where DATE=\"2012-06-11\"";
        }
        else { 
        $tmp="SELECT DISTINCT ".implode(",", $sql_columns)." FROM $database_Database_Test.$table_name where DATE= \"2011-12-21\"";
        }
}
else {
$tmp ="SELECT DISTINCT ".implode(",", $sql_columns)." FROM $database_Database_Test.$table_name where DATE>=\"$fromdate\" AND DATE<=\"$todate\""; 
};

Пожалуйста, попробуйте это как...

if(isset($_POST['solstices']))
{
    if(isset($_POST['check_sol'][0])=='1')
    {
    $tmp="SELECT DISTINCT ".implode(",", $sql_columns)." FROM $database_Database_Test.$table_name where DATE=\"2012-06-11\"";
    }
    if(isset($_POST['check_sol'][0])=='2') 
    {
    $tmp="SELECT DISTINCT ".implode(",", $sql_columns)." FROM $database_Database_Test.$table_name where DATE= \"2011-12-21\"";
    }
}
else
{
    $tmp ="SELECT DISTINCT ".implode(",", $sql_columns)." FROM $database_Database_Test.$table_name where DATE>=\"$fromdate\" AND DATE<=\"$todate\""; 
}

Вы перезаписываете переменную check_sol[], чтобы она всегда содержала 2. Добавление [] в идентификатор не делает его массивом. Вам нужно дать обоим входам разные идентификаторы и создать массив на стороне PHP, если он вам действительно нужен.

Другие вопросы по тегам