2017-05-02 4 views
1

Ich mache meine erste Datenbank (Pokémon-Datenbank) für die Schule mit PHP und ich dachte, es wäre nett, wenn Sie alle Pokémon mit einem 'Optionsformular' sortieren könnten. Nun habe ich versucht, mehrere Optionsformulare zu verwenden, so dass Sie verschiedene Auswahlen kombinieren konnten, um eine bestimmte Liste von Pokemon zu erhalten.Wie verwenden Sie mehrere Formulare, ohne Variablenwerte zu verlieren?

Würdest du zum Beispiel "type = water" und "sort by name" wählen, erhältst du alle Wassertypen pokémon, sortiert nach Namen. Ich habe versucht, dies zu tun, aber es vergisst den Wert der Variablen in einem Formular, wenn ich eine neue Option in meinen anderen Formularen auswähle.

dies ist mein Code (es ist sehr schlampig, sorry dafür)

HTML:

<form method="post" action="SQLpokemondb.php"> 
    <select name="sort" id="sort" onchange="this.form.submit();"> 
     <option value="ID" <?php if ($option == 'ID'){echo 'selected="selected"';};?>>ID</option> 
     <option value="Naam" <?php if ($option == 'Naam'){echo 'selected="selected"';};?>>Naam</option> 
     <option value="Soort" <?php if ($option == 'Soort'){echo 'selected="selected"';};?>>Soort</option> 
    </select> 
</form> 
</span> 

<form method="post" action="SQLpokemondb.php"> 
    <select name="gen" id="gen" onchange="this.form.submit();"> 
     <option value="0" <?php if ($where == '0'){echo 'selected="selected"';};?>>All gens</option> 
     <option value="1" <?php if ($where == '1'){echo 'selected="selected"';};?>>Gen 1</option> 
     <option value="2" <?php if ($where == '2'){echo 'selected="selected"';};?>>Gen 2</option> 
     <option value="3" <?php if ($where == '3'){echo 'selected="selected"';};?>>Gen 3</option> 
     <option value="4" <?php if ($where == '4'){echo 'selected="selected"';};?>>Gen 4</option> 
     <option value="5" <?php if ($where == '5'){echo 'selected="selected"';};?>>Gen 5</option> 
     <option value="6" <?php if ($where == '6'){echo 'selected="selected"';};?>>Gen 6</option> 
     <option value="7" <?php if ($where == '7'){echo 'selected="selected"';};?>>Gen 7</option>   
    </select> 
</form> 
</span> 

Bei zunächst der Seite besuchen, ich den nächsten PHP-Code hinzugefügt Variablen Werte zu geben, ohne ein Wert:

if (empty($_POST['sort'])) 
{ 
    $option = 'id'; 
} 
else 
{ 
    $option = $_POST['sort']; 
} 

if (empty($_POST['gen'])) 
{ 
    $where = 'ID=ID'; 
} 
else 
{ 
    $where = $_POST['gen']; 
} 

if (empty($_POST['type'])) 
{ 
    $where2 = 'ID=ID'; 
} 
else 
{ 
    $where2 = $_POST['type']; 
} 

Es wird automatisch das Formular abschicken, wenn Sie eine Auswahl treffen. Das nächste, was ich tue, ist festzustellen, welche Option ausgewählt wurde unter Verwendung von PHP:

if (empty($_POST['sort'])) 
{ 
    $sort = 'id'; 
} 
elseif ($_POST['sort'] == 'ID') 
{ 
    $sort = 'id'; 
} 
elseif ($_POST['sort'] == 'Naam') 
{ 
    $sort = 'naam, ID'; 
} 
elseif ($_POST['sort'] == 'Soort') 
{ 
    $sort = 'type, ID'; 
} 

if (empty($_POST['gen'])) 
{ 
    $where = 'ID=ID'; 
} 
elseif ($_POST['gen'] == '0') 
{ 
    $where = 'ID=ID'; 
} 
elseif ($_POST['gen'] == '1') 
{ 
    $where = 'generation = 1'; 
} 
elseif ($_POST['gen'] == '2') 
{ 
    $where = 'generation = 2'; 
} 
elseif ($_POST['gen'] == '3') 
{ 
    $where = 'generation = 3'; 
} 
elseif ($_POST['gen'] == '4') 
{ 
    $where = 'generation = 4'; 
} 
elseif ($_POST['gen'] == '5') 
{ 
    $where = 'generation = 5'; 
} 
elseif ($_POST['gen'] == '6') 
{ 
    $where = 'generation = 6'; 
} 
elseif ($_POST['gen'] == '7') 
{ 
    $where = 'generation = 7'; 
} 

Last, lege ich die Variablen in der Abfrage für MySQL:

mysql_connect("localhost", "root", "usbw"); 
mysql_select_db("pokemon"); 

$result = mysql_query("SELECT * FROM pokemon WHERE ($where2) AND ($where) ORDER BY $sort"); 
while($data = mysql_fetch_assoc($result)) { ........ } 

Ich war nicht in der Lage eine Lösung für mich zu finden, Ich wäre dankbar, wenn mir jemand helfen könnte.

+1

Warum haben Sie mehrere Formular, wenn Sie Aktionsseite gleich ist? –

Antwort

0

Das Problem besteht darin, dass Sie zwei FORM-Tags verwenden. Wenn das erste Formular seinen Wert gesendet hat, wird das zweite Formular ignoriert und umgekehrt. Wenn Sie also Ihre Eingaben in eine einzige FORM schreiben, sollte das funktionieren.

<form method="post" action="SQLpokemondb.php"> 
 
    <select name="sort" id="sort" onchange="this.form.submit();"> 
 
     <option value="ID" <?php if ($option == 'ID'){echo 'selected="selected"';};?>>ID</option> 
 
     <option value="Naam" <?php if ($option == 'Naam'){echo 'selected="selected"';};?>>Naam</option> 
 
     <option value="Soort" <?php if ($option == 'Soort'){echo 'selected="selected"';};?>>Soort</option> 
 
    </select> 
 

 
    <select name="gen" id="gen" onchange="this.form.submit();"> 
 
     <option value="0" <?php if ($where == '0'){echo 'selected="selected"';};?>>All gens</option> 
 
     <option value="1" <?php if ($where == '1'){echo 'selected="selected"';};?>>Gen 1</option> 
 
     <option value="2" <?php if ($where == '2'){echo 'selected="selected"';};?>>Gen 2</option> 
 
     <option value="3" <?php if ($where == '3'){echo 'selected="selected"';};?>>Gen 3</option> 
 
     <option value="4" <?php if ($where == '4'){echo 'selected="selected"';};?>>Gen 4</option> 
 
     <option value="5" <?php if ($where == '5'){echo 'selected="selected"';};?>>Gen 5</option> 
 
     <option value="6" <?php if ($where == '6'){echo 'selected="selected"';};?>>Gen 6</option> 
 
     <option value="7" <?php if ($where == '7'){echo 'selected="selected"';};?>>Gen 7</option> 
 
    </select> 
 
</form>

Verwandte Themen