2015-11-09 53 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); 
相关问题