2015-11-09 112 views
2

我有一個php窗體,其中有一個複選框選項,如果用戶選擇「其他」,則出現文本輸入。這很好,但數據沒有提交。 IM流汗錯誤消息PHP破滅():傳遞PHP implode():傳遞的參數無效

這裏無效參數是:

PHP驗證

if(!isset($_POST['competitor_model'])){ 
echo '<p><font color="red" size="+1">• Please select at least one competitor model</font></p>'; 
} else { 
$compmodel = implode(',', $_POST['competitor_model']); 
} 

這裏是JS/HTML形式

 <script type="text/javascript"> 
     var temp = ''; 
     function disableTxt() { 
     var field = document.getElementById("other"); 
     if(field.value != '') { 
     temp = field.value; 
     } 
     field.style.display = "none"; 
     field.value = ''; 
     } 
     function enableTxt() { 
     document.getElementById("other").style.display = "inline"; 
     document.getElementById("other").value = temp; 
     } 
     </script>   


     <input type="checkbox" value="BMW 3-series" onchange="disableTxt()" name='competitor_model[]'>BMW 3-series<br> 
     <input type="checkbox" value="Mercedes Benz C-class" onchange="disableTxt()" name='competitor_model[]'>Mercedes Benz C-class<br> 
     <input type="checkbox" value="Lexus IS" onchange="disableTxt()" name='competitor_model[]'>Lexus IS<br> 
     <input type="checkbox" value="Audi A4" onchange="disableTxt()" name='competitor_model[]'>Audi A4<br> 
     <input type="checkbox" value="Other" onchange="enableTxt(Number)" name='competitor_model[]'>Other <em>If yes please submit model</em> 
     <input type="text" name="competitor_model[]" id="other" style="display:none;" value="<?php if (isset($_POST['competitor_model'])) echo $_POST['competitor_model']; ?>"/> 
+1

你不應該使用'competitor_model [ ]輸入文字。此外,''標籤已棄用多年。改用CSS。最後,在使用'implode()之前,你至少應該在PHP中檢查'is_array()'' – Raptor

+2

錯誤似乎很清楚 –

+0

'$ _POST ['competitor_model']'必須是一個數組。試試'var_dump($ _ POST ['competitor_model'])'並確認? – camelCase

回答

4

$_POST['competitor_model']是一個陣列。試試這個:

if (is_array($_POST['competitor_model'])) 
     { 
     $compmodel = implode(",", $_POST['competitor_model']); 
     } 

,或者嘗試所謂

echo implode(', ', (array)$_POST['competitor_model']); 

PHP implode()

+1

問題在別處。 – Raptor

+0

你可不可以'var_dump'並查看這些值是否被獲取? –

+1

可能是因爲'$ _POST ['competitor_model']'不會導致數組 –

2

我面臨同樣的問題,這對我來說 在Laravel什麼工作:

$contributes = $request->your_contribute; 
$each_contribute = implode(',', (array)$contributes); 
相關問題