2009-09-29 4 views
2

У меня есть форма, которая использует флажки.Проблема с PHP post checkbox

<input type="checkbox" name="check[]" value="notsure"> Not Sure, Please help me determine <br /> <input type="checkbox" name="check[]" value="keyboard"> Keyboard <br /> <input type="checkbox" name="check[]" value="touchscreen"> Touch Screen Monitors <br /> <input type="checkbox" name="check[]" value="scales">Scales <br /> <input type="checkbox" name="check[]" value="wireless">Wireless Devices <br />

А вот код, который обрабатывает эту форму в внешнем файле PHP.

$addequip = implode(', ', $_POST['check']); 

Я продолжаю получать эту ошибку ниже;


<b>Warning</b>: implode() [<a href='function.implode'>function.implode</a>]: Invalid arguments passed in <b>.../process.php</b> on line <b>53</b><br /> 
OK 
+0

Почему вы хотите взорвать массив? – Eric

ответ

1

является любой из ваших флажков галочкой? $_POST массив PHP будет иметь только флажков, которые были галочкой

, чтобы заставить замолчать ваше предупреждение использовать это:

$addequip = implode(', ', empty($_POST['check']) ? array() : $_POST['check']); 
+0

Я также хотел бы убедиться, что вы используете метод формы POST ... – null

+0

Я получаю ту же ошибку, даже если флажок установлен. Я пробовал этот метод с http://www.kirupa.com/web/php_contact_form3.htm до сих пор нет костей – 2009-09-29 19:35:13

+0

вы уверены, что используете метод post в форме? default (no attribute) is get – knittl

0

Привет я м исходный пользователь, разместивший этот вопрос я не мог логин на мой счет, чтобы разместить с другого счета , После нескольких часов попыток я каким-то образом сумел заставить его работать частично. Ниже измененная форма HTML и процесс код для флажков

<input type="checkbox" name="check" value="Touchscreen"> Touchscreen<br> 
<input type="checkbox" name="check" value="Keyboard"> Keyboard<br> 
<input type="checkbox" name="check" value="Scales"> Scales<br> 

мне пришлось удалить [], так что это будет работать. Также ниже приведен весь метод публикации для тех, кто хотел бы видеть. Он отлично работает с любой другой областью.

<form id="contact_form" action="process.php" method="POST" onSubmit="return processForm()"> 

Ниже приведен код обработки php для обработки. По какой-то причине я должен сказать скрипту, что $ _POST ['check'] - это массив без него, только возвращающий массив. Все другие предлагаемые методы возвращают недопустимый аргумент.

$chckbox = array($_POST['check']); 
       if(is_array($chckbox)) 
       { 
        foreach($chckbox as $addequip) { 
        $chckbox .="$addequip\n"; 
        } 
       } 

Таким образом, этот код работает, но возвращает только одно значение флажка, которое отмечено даже независимо от того, сколько вы отметили.

+0

Что произойдет, если вы выберете onSubmit = "return processForm()" из вашего тега формы? Возможно, что javascript вызывает проблему. – dnagirl

+0

Нет никакой разницы в том, что представление формы все равно получает только одно значение. Он используется для класса k i captcha с использованием ajax, поэтому отправка страницы не открывает другую страницу, и форма будет очищена после завершения отправки. – shaytac