2011-06-05 117 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數組,如果存在的話,它將包含與標籤相同順序的標籤值。如果它不存在,標籤數組將被視爲值數組。

相關問題