2011-06-05 114 views
0

所以我有很多复选框需要传递给PHP脚本,然后对于每个选中的复选框,都将值写入文件。通过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); 

行,那么我敢肯定有更简单的方法d o使用循环或其他东西。我可以把桌子换成我心中的内容。帮帮我!

谢谢!

回答

2

是的,有:

<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) { 
     ... 
    } 
} 
+0

@ben所以,然后我把$ timeframe作为变量并写入它? – 2011-06-06 00:11:42

+0

是的,在这种情况下,'$ timeframe'看起来像是'8:30 PM - 9:00 PM'! – Benjamin 2011-06-06 00:14:25

+0

@ben嗯......当我这样做时,我得到:'警告:为第2行的updatetime.php中的foreach()提供的无效参数。这是我使用的PHP:'<?php foreach($ _POST ['timeframes'] as $ timeframe){ \t $ date = $ timeframe。 '\ n'; \t $ handle = fopen('times','w')or die(“Failure。”); \t fwrite($ handle,$ data); \t fclose($ handle); \t } ?>' – 2011-06-06 00:16:49

2

只要给他们所有的同一个名字:<input name="time[]" />

然后,如果你喜欢的名字=“checkboxgroup [8830AM]”,变量名称中使用括号标记阅读与$_POST['time']

0

数组$ _ POST [ 'checkboxgroup']随后将是一个数组,就这么简单:)

0

$ _POST数组是一个关联键=>值数组,在这种情况下,键将是选中框的名称(例如, 903010PM)和值将是无论是在输入的 '价值' 属性(例如9:30 PM - 10:00 PM)

if(isset($_POST)){ 

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

} 

所以如果(10:00 AM - 10:30 AM) (11:00 - 11:30 AM)和(12:00 PM - 12:30 PM)被选择,下面的代码:

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

将输出:

键:(101030AM)价值:(上午10:00 - 上午10:30)

关键:(111130AM)价值:(上午11:00 - 上午11:30)

关键:(121230PM)值:(12:00 PM - 12:30 PM)

0

我曾尝试一种简单的方法在任何PHP表单创建复选框以及单选按钮。唯一的事情是我正在使用Codeigniter MVC框架。

这里是你可以插入你的共同模型或任何帮助文件的函数定义。

function createOptions($fieldName, $labelsArray=array(), $selectedOption, $fieldType,$valuesArray = array()) { 
     $returnString = ''; 
     if(count($valuesArray)!=count($labelsArray)) 
      $valuesArray=$lebelsArray; 
     if ($fieldType === 'checkbox') { 
      for ($i=0;$i<count($labelsArray);$i++) { 
       $returnString.='&nbsp&nbsp&nbsp<input type="checkbox" name=' . $fieldName.' value='.$valuesArray[$i].' id='.$valuesArray[$i]; 
       if(in_array($valuesArray[$i], $selectedOption)){ 
         $returnString.=' checked="checked" '; 
       } 
       $returnString.=' />&nbsp&nbsp<label>'.$labelsArray[$i].'</label>'; 
      } 
     } 
     if ($fieldType === 'radio') { 
      for ($i=0;$i<count($labelsArray);$i++) { 
       $returnString.='&nbsp&nbsp<input type="radio" name=' . $fieldName.' value='.$valuesArray[$i].' id='.$valuesArray[$i]; 
       if($valuesArray[$i]== $selectedOption) 
         $returnString.=' checked="checked" '; 
       $returnString.=' /><label>'.$labelsArray[$i].'</label>'; 
      } 
     } 
     return $returnString; 
    } 

而且,你必须调用视图文件,因为这功能,

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

第一个参数是复选框字段或无线电场,这始终会是相同的,对于两种情况的所有选项的名称。第二个是标签数组,第三个是选择的选项,它会在加载表单时显示这些选项。第四种是字段类型,它是一个字符串,如'checkbox'或'radio'。第五个是values数组,如果存在的话,它将包含与标签相同顺序的标签值。如果它不存在,标签数组将被视为值数组。

相关问题