2012-07-11 108 views
1

我正在研究涉及多選複選框的PHP表單。我想將用戶選擇的選項加載到字符串中並進行回顯。我想用逗號和單詞「和」來分隔選項。在字符串之間插入文字

例如:
如果用戶只選擇選項1,我想回顯「opt1」。如果用戶選擇選項1,選項2和選項3,我想回顯「opt1,opt2和opt3」。

這裏是我的HTML:

<p><b>Product:</b><br> 
<INPUT NAME="product[]" TYPE="CHECKBOX" VALUE="opt1"> 
    Option 1<BR> 
<INPUT NAME="product[]" TYPE="CHECKBOX" VALUE="opt2"> 
    Option 2<BR> 
<INPUT NAME="product[]" TYPE="CHECKBOX" VALUE="opt3"> 
    Option 3<BR> 
<INPUT NAME="product[]" TYPE="CHECKBOX" VALUE="opt4"> 
    Option 4<BR></p> 

感謝您的幫助PHP的小白!

+0

我已經嘗試使用複選框作爲單獨的項目。 (我的意思是每個「NAME =」對於每個複選框都是不同的,我敢肯定這樣做不會起作用,因爲我不能使用計數來選擇所選的選項數量。 – user1518609 2012-07-11 18:25:42

回答

2

如果您希望這些opt值在運行時動態加載,則需要使用Javascript。 PHP在服務器端加載時最初加載頁面,所以當用戶選中一個框時,PHP不能自己對屏幕上的值做echo值。

+0

我是實際上在用戶按下一個提交按鈕後會回顯這些值,所以除非我誤會了,我想我可以使用PHP。對嗎? – user1518609 2012-07-11 18:22:55

+0

當他們按下提交按鈕後,如果它鏈接的表單轉到另一頁,可以做到這一點(如果回聲值存在於另一個頁面上),否則,你必須使用javascript來實現這一點。 – 2012-07-11 18:25:22

-1

首先,正確的語法規定您不要在最後的and之前放置逗號。

所以,你真正需要做的是用and,分開最後兩個單詞。

那麼,假設你已經在一個數組中有你的話,你所要做的就是array_pop最後一個元素結束。然後join,其餘元素,並把它與最後一個與and之間。如果只有一個單詞,只需返回它。

我們不是在這裏爲您編寫代碼,但這一點可以幫助您。

+1

[Oxford comma](http://en.wikipedia.org/wiki/Oxford_Comma)。 – 2012-07-11 17:56:43

+0

「在許多語言中連續的逗號不是標準,甚至可能違背標點規則。「 - 事實上,似乎只有美國人覺得正常添加標點符號。 – 2012-07-11 18:09:35

1

一個簡單的解決辦法是做三件事;如果只有一個選擇,一個用於兩個選擇,一個用於多於兩個選擇。

這(未經測試)解決方案應該讓你在正確的方向:

<?php 

$products = (isset($_POST['product']) && is_array($_POST['product'])) ? $_POST['product'] : array(); 
$count = count($products); 

$options = ''; 
if ($count == 1) { 
    $options = $products[0]; 
} else if ($count == 2) { 
    $options = $products[0] . ' and ' . $products[1]; 
} else if ($count > 0) { 
    // remove (and store) the last product selected 
    $last = array_pop($products); 
    // join all remaining products by comma-separation, then add the last product 
    // to the end with an "and" 
    $options = implode(', ', $products) . ' and ' . $last; 
} 
echo $options; 
?> 

請注意,上述方案還假定您是通過POST陣接收的用戶選擇。

+0

這似乎是我在找的東西。非常感謝你很多,當我測試它時,我得到這個:0){$ last = array_pop($產品); $ options = implode(',',$ products)。 '和'。 $最後; } echo $ options; ?> – user1518609 2012-07-11 18:19:21

+0

我假設有一個語法錯誤,我沒有看到。 – user1518609 2012-07-11 18:19:42

+0

我複製/粘貼代碼並運行它並沒有收到任何錯誤。此外,我測試它通過放置這一切之上:'code' $ _POST ['product'] = array('opt1','opt2','opt3','opt4');'code'並且它工作正常;你能發佈一個用例如何測試它嗎? – newfurniturey 2012-07-11 18:30:16