2016-04-19 4 views
0

У меня есть форма, где я получаю другую информацию. Но тогда у меня есть выбор с несколькими параметрами, и я хочу, чтобы иметь возможность отправить это в базу данных в 1 или 0/true или false. Но это не работает. Это мой код до сих пор:Использование POST для получения значения опции выбора из HTML-формы

   <select name="multipleSelect[]" multiple> 
       <option value="" disabled selected>Choose your option</option> 
       <option name="esea" value="esea">ESEA</option> 
       <option name="faceit" value="faceit">FaceIT</option> 
       <option name="matchmaking" value="matchmaking">Matchmaking</option> 
       </select> 
       <label>What are you looking to play?</label> 

И это мой PHP:

$esea = 0; 
$faceit = 0; 
$matchmaking = 0; 
foreach ($_POST['multipleSelect'] as $value) { 
    if ($value == 'esea')  { $esea = 1;  } 
    if ($value == 'faceit')  { $faceit= 1;  } 
    if ($value == 'matchmaking') { $matchmaking= 1; } 
} 


    // Sätt in dataN 
    $sql = "INSERT INTO users (steamid, profilename, profileurl, avatar, region, age, ranks, esea, faceit, matchmaking, textarea1) VALUES ( 
    '{$mysqli->real_escape_string($_POST['steamid'])}', 
    '{$mysqli->real_escape_string($_POST['profilename'])}', 
    '{$mysqli->real_escape_string($_POST['profileurl'])}', 
    '{$mysqli->real_escape_string($_POST['avatar'])}', 
    '{$mysqli->real_escape_string($_POST['region'])}', 
    '{$mysqli->real_escape_string($_POST['age'])}', 
    '{$mysqli->real_escape_string($_POST['ranks'])}', 
    $esea, 
    $faceit, 
    $matchmaking', 
    '{$mysqli->real_escape_string($_POST['textarea1'])}')"; 
    $insert = $mysqli->query($sql); 

Я знаю, что этот код не работает, но я не знаю, что делать, чтобы заставить его работать. Я не хочу отправлять 1 или 0 в зависимости от того, выбрали ли вы альтернативу или нет.

ответ

1

Ваш <select> для многократного выбираемой выпадающего списка должен быть массив, определенный name="NameThatMakesSense[]"

<select name="NameThatMakesSense[]" multiple> 

Это будет возвращать вам поле с именем $ _POST [ 'NameThatMakesSense '], который сам является массивом, содержащим 1 или более значений, указывающих, какие элементы в выпадающем списке были выбраны. Из атрибута <option> тега

value="" Тогда ваш будет необходимо для предварительной обработки NameThatMakesSense массива подобрать значения которых фактически были выбраны из мульти выбора выпадающего меню.

$esea = 0; 
$esea = 0; 
$esea = 0; 
foreach ($_POST['NameThatMakesSense'] as $value) { 
    if ($value == 'esea')  { $esea = 1;  } 
    if ($value == 'faceit')  { $faceit= 1;  } 
    if ($value == 'matchmaking') { $matchmaking= 1; } 
}  

$sql = "INSERT INTO users 
      (profilename, profileurl, avatar, region, 
       age, esea, faceit, matchmaking, textarea1) 
     VALUES ( 

'{$mysqli->real_escape_string($_POST['profilename'])}', 
'{$mysqli->real_escape_string($_POST['profileurl'])}', 
'{$mysqli->real_escape_string($_POST['avatar'])}', 
'{$mysqli->real_escape_string($_POST['region'])}', 
'{$mysqli->real_escape_string($_POST['age'])}', 
'{$mysqli->real_escape_string($_POST['ranks'])}', 
$esea, 
$faceit, 
$matchmaking, 
'{$mysqli->real_escape_string($_POST['textarea1'])}')"; 
+0

Как я забираю это сообщение? Я все еще использую '{$ mysqli-> real_escape_string ($ _ POST [' esea '])}', '{$ mysqli-> real_escape_string ($ _ POST [' faceit '])}', '{$ mysqli-> real_escape_string ($ _ POST ['matchmaking'])} ', – Tim

+0

Спасибо за помощь RiggsFolly! :) – Tim

+0

Что я должен здесь вставить: '' {$ mysqli-> real_escape_string ($ _ POST [''])} ', 'для этого, чтобы забрать $ val? – Tim

2

Ваш тег select html должен иметь атрибут name, чтобы форма onSubmit отправлялась на «бэкэнд».

так:

<select name="enterNameThatMakesSense" multiple> // <----- HERE 
    <option value="" disabled selected>Choose your option</option> 
    <option name="esea" value="1">ESEA</option> 
    <option name="faceit" value="1">FaceIT</option> 
    <option name="matchmaking" value="1">Matchmaking</option> 
</select> 
<label>What are you looking to play?</label> 
+2

И если вы на самом деле хотите использовать несколько значений в '$ _POST' вам нужен массив:' enterNameThatMakesSense [] ' – AbraCadaver

+0

@AbraCadaver Да, я не прочитал его таким образом, чтобы начать с – RiggsFolly

+0

Но' '

Смежные вопросы