2010-10-21 2 views
2

у меня есть это поле выбора, что пользователи могут использовать, чтобы выбрать вариант, но им застрял на том, как я могу обрабатывать его с PHP и вставить значение в MySQL:html select php processing question?

<select name="vote[]"> 
    <option value="support">I support this</option> 
    <option value="against">Im against this</option> 
    <option value="dont">I want the audience to decide!</option> 

$insert=mysql_query("INSERT INTO topic (topic, founder, choice, date) VALUES('".$course."', '".$user_id."', '".$_POST['vote[]']."',NOW())"); 
+0

Это выглядит правильно для меня ... где проблема? – Ben

+0

все вставляет вправо, ожидают $ _POST ['vote []'] для поля выбора, его не вставляют, когда я что-то выбираю? :)) – getaway

ответ

3

В дополнение к тому, что Бен уже сказал, вы хотите сбросить скобки из атрибута name.

<select name="vote"> 

Когда вы идете, чтобы получить значение, просто используйте $_POST["vote"]. Использование квадратных скобок заключается только в том случае, если вы намереваетесь иметь несколько полей с тем же именем (т. Е .: позволить пользователю динамически генерировать поля «на лету»). Вам не нужно использовать его с раскрывающимися списками.

EDIT

Кроме того, в качестве резидента PHP гуру, я по контракту обязан напомнить вам ВСЕГДА избежать каких-либо данных, которая вставляется в запрос SQL. Это означает, что каждый раз энергично используйте mysql_real_escape_string(). Только вы можете предотвратить лесные пожары, VD, и бог знает, что еще, но вы можете сделать это, только если вы избегаете своих параметров SQL.

+0

Oop. ..Сейчас Бен удалил свой ответ. – mattbasta

+0

Я удалил его, а затем восстановил. Я понял, что после того, как я ответил, что он, вероятно, знал все, что я уже говорил, что он подтвердил. Однако вы правы - я не вижу необходимости в скобках. –

+0

приветствует это, спасибо – getaway

0

Первое, обязательно закройте свой тег select. ;) </select>

Во-вторых, то, что вы, вероятно, хотите сделать, это включить выберите тег внутри <form> с method="post" и action="somepage.php".

Затем, когда пользователь отправляет форму, они будут перенаправлены на somepage.php. В вашем PHP-коде на somepage.php у вас будет переменная массива с именем $_POST, которая будет иметь запись с именем vote, где вы можете увидеть, какой элемент был выбран в поле выбора. Затем вы можете использовать эту информацию, чтобы изменить способ обработки somepage.php.

Дополнительная информация об использовании $_POST с формами here.

Чтобы получить эту информацию в базе данных, вам необходимо получить доступ к информации в переменной $_POST и сформулировать строку запроса (остерегайтесь внедрения SQL!). Затем отправьте запрос, используя mysql_query(), как и ожидалось.

+0

все права обработки, им просто показывается фрагмент моего кода, единственная проблема, с которой я сталкиваюсь, - это когда я выбираю вариант, который он не вставляет в базу данных, где подана койка, я получаю пустую ячейку – getaway

0

alt text

Использование mysql_real_escape_string на своих входах базы данных, или я буду использовать редактор HTML и изменить значение одного из этих <option> с до '); DROP TABLE *; -- и нажмите кнопку.

Вы должны прочитать о SQL Injection, чтобы вы знали, что вы против здесь. Я уверен, что есть другие вещи, которые можно прочитать отдельно от руководства по данному вопросу, но я не знаю, в частности, что я должен был бы связать вас.