1
2
3
<code>php接收多個同名複選框資訊不像asp那樣自動轉換成為數組,這給使用帶來了一定不便。但是還是有解決辦法的,就是利用javascript做一下預處 理。多個同名複選框在javascript中還是以數組的形式存在的,是以在表單送出之前可以利用javascript把複選框中的資訊組合成一個字元數 組指派給表單中的隐藏元素,然後用php中的</code><code>explode</code><code>函數解析此數組,這樣就可以實作複選框資訊的傳遞了。下面舉例說明。</code>
<code>假設有這樣一個表單:</code>
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<code>這個表單有四個名字都是item的複選框,當使用者單擊submit按鈕的時候,checker函數會被調用,并且如果checker傳回true表單 就被送出,傳回false表單就不會被送出。這裡checker函數就是我們要編寫的預處理函數。在html的header部分添加下面的 javascript:</code>
<code>function</code>
<code>checker()</code>
<code>{</code>
<code> </code><code>form1.items.value =</code><code>""</code><code>;</code>
<code> </code><code>if</code>
<code>( !form1.item.length )</code><code>// 隻有一個複選框,form1.item.length = undefined</code>
<code> {</code>
<code> </code><code>if</code>
<code>( form1.items.checked )</code>
<code> form1.items.value = form1.item.value;</code>
<code> }</code>
<code> </code><code>else</code>
<code> </code><code>for</code>
<code>( i = 0 ; i < form1.item.length ; i++ )</code>
<code> {</code>
<code> </code><code>if</code>
<code>( form1.item(i).checked )</code><code>// 複選框中有選中的框</code>
<code> {</code>
<code> form1.items.value = form1.item(i).value;</code>
<code> </code><code>for</code>
<code>( j = i + 1 ; j < form1.item.length ; j++ )</code>
<code> {</code>
<code> </code><code>if</code>
<code>( form1.item(j).checked )</code>
<code> {</code>
<code> form1.items.value +=</code><code>" "</code><code>;</code><code>//用空格做分割符</code>
<code> form1.items.value += form1.item(j).value;</code>
<code> }</code>
<code> }</code>
<code> </code><code>break</code><code>;</code>
<code> }</code>
<code> }</code>
<code> </code><code>return</code>
<code>true;</code>
<code>}</code>
<code>這樣就可以把所有選中的複選框的value組合成為一個字元串數組,在myphp.php使用這樣的語句:</code>
<code>1 </code><code>$items</code>
<code>=</code><code>explode</code><code>(</code><code>" "</code><code>,</code><code>$http_post_vars</code><code>[</code><code>"items"</code><code>]);</code>
<code>就可以把這些選項分離出來成為數組。需要注意的是選項中的value不能包含分割符(這裡是空格)。</code>