Как разместить выбранное значение в 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, если он вам действительно нужен.