Самый простой способ отправить форму флажка через PHP - PullRequest
0 голосов
/ 06 июня 2011

Итак, у меня есть много флажков, которые необходимо передать в сценарий PHP, а затем для каждого флажка, который отмечен, значение записывается в файл.

Например, если 7:30- проверяется 8:30, затем PHP fwrites в файл с именем times.С этим я могу справиться.Часть, в которой у меня возникают проблемы - это передача флажков в PHP.Разве это самый умный способ сделать это?

<div id="table">
<form action="updatetime.php" method="post">
<table>
<tr><td>
<table>
<tr><td>8:00 AM - 8:30 AM</td><td><input type="checkbox" name="8830AM" value="9:30 PM - 10:00 PM" /></td></tr>
<tr><td>8:30 AM - 9:00 AM</td><td><input type="checkbox" name="8309AM" value="8:30 AM - 9:00 AM" /></td></tr>
<tr><td>9:00 AM - 9:30 AM</td><td><input type="checkbox" name="9930AM" value="9:00 AM - 9:30 AM" /></td></tr>
<tr><td>9:30 AM - 10:00 AM</td><td><input type="checkbox" name="93010AM" value="9:30 AM - 10:00 AM" /></td></tr>
<tr><td>10:00 AM - 10:30 AM</td><td><input type="checkbox" name="101030AM" value="10:00 AM - 10:30 AM" /></td></tr>
<tr><td>10:30 AM - 11:00 AM</td><td><input type="checkbox" name="103011AM" value="10:30 AM - 11:00 AM" /></td></tr>
<tr><td>11:00 AM - 11:30 PM</td><td><input type="checkbox" name="111130AM" value="11:00 AM - 11:30 PM" /></td></tr>
<tr><td>11:30 AM - 12:00 PM</td><td><input type="checkbox" name="113012PM" value="11:30 AM - 12:00 PM" /></td></tr>
<tr><td>12:00 PM - 12:30 PM</td><td><input type="checkbox" name="121230PM" value="12:00 PM - 12:30 PM" /></td></tr>
<tr><td>12:30 PM - 1:00 PM</td><td><input type="checkbox" name="12301PM" value="12:30 PM - 1:00 PM" /></td></tr>
<tr><td>1:00 PM - 1:30 PM</td><td><input type="checkbox" name="1130PM" value="1:00 PM - 1:30 PM" /></td></tr>
<tr><td>1:30 PM - 2:00 PM</td><td><input type="checkbox" name="1302PM" value="1:30 PM - 2:00 PM" /></td></tr>
<tr><td>2:00 PM - 2:30 PM</td><td><input type="checkbox" name="2230PM" value="2:00 PM - 2:30 PM" /></td></tr>
<tr><td>2:30 PM - 3:00 PM</td><td><input type="checkbox" name="2303PM" value="2:30 PM - 3:00 PM" /></td></tr></table></td><td><table>
<tr><td>3:00 PM - 3:30 PM</td><td><input type="checkbox" name="3330PM" value="3:00 PM - 3:30 PM" /></td></tr>
<tr><td>3:30 PM - 4:00 PM</td><td><input type="checkbox" name="3304PM" value="3:30 PM - 4:00 PM" /></td></tr>
<tr><td>4:00 PM - 4:30 PM</td><td><input type="checkbox" name="4430PM" value="4:00 PM - 4:30 PM" /></td></tr>
<tr><td>4:30 PM - 5:00 PM</td><td><input type="checkbox" name="4305PM" value="4:30 PM - 5:00 PM" /></td></tr>
<tr><td>5:00 PM - 5:30 PM</td><td><input type="checkbox" name="5530PM" value="5:00 PM - 5:30 PM" /></td></tr>
<tr><td>5:30 PM - 6:00 PM</td><td><input type="checkbox" name="5306PM" value="5:30 PM - 6:00 PM" /></td></tr>
<tr><td>6:00 PM - 6:30 PM</td><td><input type="checkbox" name="6630PM" value="6:00 PM - 6:30 PM" /></td></tr>
<tr><td>6:30 PM - 7:00 PM</td><td><input type="checkbox" name="6307PM" value="6:30 PM - 7:00 PM" /></td></tr>
<tr><td>7:00 PM - 7:30 PM</td><td><input type="checkbox" name="7730PM" value="7:00 PM - 7:30 PM" /></td></tr>
<tr><td>7:30 PM - 8:00 PM</td><td><input type="checkbox" name="7308PM" value="7:30 PM - 8:00 PM" /></td></tr>
<tr><td>8:00 PM - 8:30 PM</td><td><input type="checkbox" name="8830PM" value="8:00 PM - 8:30 PM" /></td></tr>
<tr><td>8:30 PM - 9:00 PM</td><td><input type="checkbox" name="8309PM" value="8:30 PM - 9:00 PM" /></td></tr>
<tr><td>9:00 PM - 9:30 PM</td><td><input type="checkbox" name="9930PM" value="9:00 PM - 9:30 PM" /></td></tr>
<tr><td>9:30 PM - 10:00 PM</td><td><input type="checkbox" name="93010PM" value="9:30 PM - 10:00 PM" /></td></tr>

</table>
</tr></td>
</table>
<div style="margin-right:auto;margin-left:auto;width:40px;padding-right:30px !important">
<input type="submit" name="submit" value="Update Times" />
</div>
</form>

(Не ненавидите меня за использование моего стола, в конце концов, это стол.)

Так, как я имеюон установил, что я получу значение каждого, делая что-то вроде

$a = $_POST['8830AM'];
$b = $_POST['8309AM'];

... и так далее, и так далее, тогда

$data = $a . '\n' . $b . '\n' . ...
$handle = fopen('times', 'w') or die('Failure.');
fwrite($handle, $data);
fclose($handle);

Я уверенЕсть более простой способ сделать это с помощью цикла или чего-то еще.Я могу изменить таблицу в соответствии с моим сердцем.Помоги мне!

Спасибо!

Ответы [ 5 ]

2 голосов
/ 06 июня 2011

Да, есть:

<tr><td>8:30 PM - 9:00 PM</td><td><input type="checkbox" name="timeframes[]" value="8:30 PM - 9:00 PM" /></td></tr>

...

if (isset($_POST['timeframes'])) {
    foreach ($_POST['timeframes'] as $timeframe) {
        ...
    }
}
2 голосов
/ 06 июня 2011

Просто назовите их все одинаково: <input name="time[]" />

А затем прочитать его как массив с $_POST['time']

0 голосов
/ 05 декабря 2012

Я попробовал простой способ создания флажков, а также переключателей в любой форме PHP.Единственное, что я использую Codeigniter MVC Framework.

Вот определение функции, которое вы можете вставить в вашу общую модель или любой вспомогательный файл.эта функция в файле вида:

<?php
echo $this->common_model->createOptions('userHobbies[]', $hobbyOptions, $userHobbies, 'checkbox'); ?>

Первый параметр - это имя поля флажка или радиополя, которое всегда будет одинаковым для всех вариантов в обоих случаях.Второй - массив меток, третий - выбранные параметры, которые будут отображаться как проверенные при загрузке формы.В-четвертых, это тип поля, которое будет представлять собой строку «флажок» или «радио».Пятый будет массив значений, который, если он присутствует, будет содержать значения для меток в том же порядке, что и метки.Если он отсутствует, массив меток будет рассматриваться как массив значений.

0 голосов
/ 06 июня 2011

массив $ _POST является массивом ассоциативного ключа => значения, и в этом случае ключом будет имя установленного флажка (например, 903010PM), а значением будет то, что находится в атрибуте входного значения 'value' ( например, с 9:30 до 22:00)

if(isset($_POST)){

    foreach($_POST as $key => $val){
        $key = ... (ex. 903010PM)
        $val = ... (ex. 9:30 PM - 10:00 PM)
    }

}

Таким образом, если (10:00 - 10:30), (11:00 - 11:30) и (12:00 - 12:30), был выбран следующий код:

if(isset($_POST)){
    foreach($_POST as $key => $val){
        echo "key: ($key)  value: ($val)  <br/>";
    }
}

будет выводить:

ключ: (101030 утра) значение: (10:00 утра - 10:30 утра)

ключ: (111130 утра) значение: (11:00 утра - 11:30 утра)

ключ: (121230PM) значение: (12:00 - 12:30 PM)

0 голосов
/ 06 июня 2011

если вы используете скобочное обозначение в имени, например name = "checkboxgroup [8830AM]", переменная $ _POST ['checkboxgroup'] будет тогда массивом, это так просто:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...