2016-04-19 10 views
0

Ich habe ein Formular, wo ich einige verschiedene Informationen erhalten. Aber dann habe ich eine Auswahl mit mehreren Optionen und ich möchte in der Lage sein, dies an die Datenbank in 1 oder 0/wahr oder falsch zu senden. Aber es funktioniert nicht. Dies ist mein Code so weit:Verwenden von POST, um Optionswert aus HTML-Formular zu erhalten

   <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> 

Und das ist mein 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); 

Ich weiß, dass dieser Code nicht funktioniert, aber ich weiß nicht, was es Arbeit zu tun zu machen. Ich möchte eine 1 oder 0 senden, je nachdem ob die Alternative gewählt wurde oder nicht.

Antwort

1

Ihre <select> für eine mehrere auswählbare Dropdown benötigt ein Array sein, definiert durch name="NameThatMakesSense[]"

<select name="NameThatMakesSense[]" multiple> 

Dies wird Ihnen dann wieder ein Feld $ _POST genannt [ 'NameThatMakesSense '], die selbst ein Array mit 1 oder mehr Werten ist, die angeben, welche Elemente im Dropdown ausgewählt wurden. Vom value="" Attribut des <option> Tag

Dann wird Ihr vorverarbeiten müssen die NameThatMakesSense Array bis wählen, welche Werte wurden die Multiauswahl Dropdown tatsächlich gewählte Form.

$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

Wie hole ich das nach oben ab? Ich benutze immer noch '{$ mysqli-> real_escape_string ($ _ POST [' esea '])}', '{$ mysqli-> real_escape_string ($ _ POST [' faceit '])}}, ' {$ mysqli-> real_escape_string ($ _ POST ['matchmaking'])} ', – Tim

+0

Danke für deine Hilfe RiggsFolly! :) – Tim

+0

was soll ich hier reinstellen: ''{$ mysqli-> real_escape_string ($ _ POST [' '])}}, damit es das $ val aufnimmt? – Tim

2

Ihr select HTML-Tag muss ein name Attribut haben, damit das Formular onSubmit an das "Backend" sendet.

wie so:

<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

Und wenn Sie tatsächlich mehrere Werte in '$ _POST' wollen, müssen Sie ein Array:' enterNameThatMakesSense [] ' – AbraCadaver

+0

@AbraCadaver Yup, hatte ich nicht, dass es so lesen mit – RiggsFolly

+0

Aber' '

Verwandte Themen