Auswahlliste mit mehreren Reihen erstellen

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

dumbledore

Mitglied
14 September 2017
38
0
6
26
Guten Tag,
ich möchte eine Auswahlliste mit mehreren Reihen erstellen, welches letztendlich zu einem Link führt.
So sollte es ungefähr aussehen:

Reihe 1: Marke - Reihe 2: Modell - Reihe 3: Jahr

Man klickt sich durch und die Auswahl wird dementsprechend weiter eingeschränkt.
Nach Eingabe von Reihe 3 wird ein Link hinter dem Button hinterlegt.

Wie gehe ich die Sache am besten an?
Die Daten sind bereits in der Datenbank.
 

basti1012

Senior HTML'ler
26 November 2017
1.116
113
63
39
Minden
sebastian1012.bplaced.net
Was heist man clickt sich durch ?
Wenn man am Anfang zb Opel auswählen tut , wird dann die nächste Liste geladen mit den ganzen Opel Namen ?
Hast du die ganzen Namen in einer Datenbank stehen oder wo kommen die her ?
Wenn du dann zb Opel , Baujahr , preis hast könnte das zusammengebaute Html dann so ausehen
was beim Senden dann so ein Link öffnet würde http://beispiel.de?automarke=Opel&baujahr=2000&preiss=9000

Deshalb müßte man von die mehrere Angaben haben.

Wo kommt der Inhalt der Auswahlfelder her ( Datenbank ,json usw ).
Willst du Javascript ( Ajax ) nutzen um die Listen nachzuladen ?
Darf der Link so ausehen wie mein Beispiel Link , oder sollen die Angaben nicht im Link sichtbar sein ?
Das sind jetzt noch Infos womit man besser arbeiten könnte
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.016
120
63
Hast du die ganzen Namen in einer Datenbank stehen oder wo kommen die her ?
Wo kommt der Inhalt der Auswahlfelder her ( Datenbank ,json usw ).
Und ja, Basti, es soll erst eine Marke ausgewählt werden und dann in der zweiten Liste nur noch die Modelle und dann in der dritten Liste nur die passenden Baujahre erscheinen. Was ist daran schwer zu verstehen?

Siehe https://www.easy-coding.de/wiki/Entry/30-Select-Auswahl-mit-AJAX-Abhängigkeit/
 
Zuletzt bearbeitet:

dumbledore

Mitglied
14 September 2017
38
0
6
26
Hallo zusammen,
es ist genau so, wie es m.scatello bereits gesagt hat. Die Daten kommen von einer Datenbank, die ich erstellt habe.
Letztendlich geht es darum, dass jemand Fahrzeug, Modell und Motor auswählt und ihm im nächsten Schritt ein Link zur Verfügung gestellt wird. Welche Variablen ich letztendlich noch wähle muss ich mir noch sagen lassen.

Ich habe die selbe Frage auch bereits auf stackoverflow gestellt und eine Antwort erhalten. Nur kann ich den Code den ich dort bekommen habe aktuell nicht implementieren.

Vielleicht hilft es euch dabei, mir zu helfen:



@ m.scatello danke für den Link. Ajax und JS sind für mich aktuell noch Fremdwörter. Kann man das Problem nicht mit der Post Methode lösen wie in dem Link oben? Falls nicht muss ich mich mit den zwei genannten Themen näher auseinander setzen.
 
Zuletzt bearbeitet:

dumbledore

Mitglied
14 September 2017
38
0
6
26
Das wäre eigentlich kein Problem. Für mich geht es ehrlich gesagt nur darum, es so einfach wie möglich umzusetzen.
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.016
120
63
Was hast du denn bisher gemacht? Zeige mal deine Scripte, dann kann man dir bestimmt Tipps geben.
 

dumbledore

Mitglied
14 September 2017
38
0
6
26
Bisher habe ich diese 3 Zeilenpakete geschrieben, bei welchem die Werte aus der Datenbank abgefragt werden.
Je Zeilenpaket muss ein Post definiert werden und das nächste Zeilenpaket muss dann beim Abfragen der Werte noch prüfen where = alter post zustand.
Und das bekomme ich nicht mehr hin. Ich hatte mal vor 4-5 Jahren ein Lagerprogramm erstellt wo ich das verwendet hatte nur ist das zu lange her.

So sieht es aktuell aus:


PHP:
<?php
$conn = mysqli_connect("localhost", "XXX", "XXX", "XXX") or die("Connection Error: " . mysqli_error($conn));
$result = mysqli_query($conn, "SELECT * FROM XXX");
?>
<select name="dynamic_data">
<?php
$i=0;
while($row = mysqli_fetch_array($result)) {
?>
<option value="<?=$row["hersteller"];?>"><?=$row["hersteller"];?></option>
<?php
$i++;
}
?>
</select>
<?php
mysqli_close($conn);
?>

<?php
$conn = mysqli_connect("localhost", "XXX", "XXX", "XXX") or die("Connection Error: " . mysqli_error($conn));
$result = mysqli_query($conn, "SELECT * FROM XXX");
?>
<select name="dynamic_data">
<?php
$i=0;
while($row = mysqli_fetch_array($result)) {
?>
<option value="<?=$row["model"];?>"><?=$row["model"];?></option>
<?php
$i++;
}
?>
</select>

<?php
$conn = mysqli_connect("localhost", "XX", "XXX", "XXX") or die("Connection Error: " . mysqli_error($conn));
$result = mysqli_query($conn, "SELECT * FROM XX");
?>
<select name="dynamic_data">
<?php
$i=0;
while($row = mysqli_fetch_array($result)) {
?>
<option value="<?=$row["motortyp"];?>"><?=$row["motortyp"];?></option>
<?php
$i++;
}
?>
</select>
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.016
120
63
Guck mal, so macht man das: https://pkw.car2db.com/

Die Demo-Datenbank dort ist leider nicht vollständig, aber darum geht es auch nicht. Die Skripte kann man dort downloaden, helfen vielleicht als Muster.
 

dumbledore

Mitglied
14 September 2017
38
0
6
26
Danke für den Link aber das wäre für mich ja jetzt ein enormer Aufwand meine Datenbank anzupassen, mich dort einzulernen etc. Ich möchte einfach nur die Post Funktion implementieren. Das sollten nur ein paar Zeilen Code sein.
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.016
120
63
Ungetestet:
PHP:
<?php

   $hersteller = isset($_POST['hersteller']) ? $_POST['hersteller'] : "";
   $model      = isset($_POST['model']) ? $_POST['model'] : "";
   $motortyp   = isset($_POST['motortyp']) ? $_POST['motortyp'] : "";
 
   $conn = mysqli_connect("localhost", "XXX", "XXX", "XXX")
      or die("Connection Error: " . mysqli_error($conn));
     
   $result = mysqli_query($conn, "SELECT `hersteller` FROM XXX");

   echo '<select name="hersteller">';

   while($row = mysqli_fetch_array($result))
   {
      $selected = $row["hersteller"] == $hersteller ? 'selected="selected"' : "";
     
      echo '<option value="' . $row["hersteller"] . '" $selected>' . $row["hersteller"] . '</option>';
   }

   echo '</select>';
 
   if (strlen($hersteller))
   {
      $result = mysqli_query($conn, "SELECT `model` FROM XXX where `hersteller`='" . mysqli_real_escape_string($hersteller) . "'");

      echo '<select name="model">';

      while($row = mysqli_fetch_array($result))
      {
         $selected = $row["model"] == $model ? 'selected="selected"' : "";
     
         echo '<option value="' . $row["model"] . '" $selected>' . $row["model"] . '</option>';
      }

      echo '</select>';
     
      if (strlen($model))
      {
         $result = mysqli_query($conn, "SELECT `motortyp` FROM XXX  where `hersteller`='" . mysqli_real_escape_string($hersteller) . "' and `model`='" . mysqli_real_escape_string($model) . "'");

         echo '<select name="motortyp">';

         while($row = mysqli_fetch_array($result))
         {
            $selected = $row["motortyp"] == $motortyp ? 'selected="selected"' : "";
     
            echo '<option value="' . $row["motortyp"] . '" $selected>' . $row["motortyp"] . '</option>';
         }

         echo '</select>';
       
         if (strlen($motortyp))
           echo "<a href='http://example.com?hersteller=$hersteller&amp;model=$model&amp;motortyp=$motortyp'>Link</a>";
     }
   }
?>
Eventuelle Fehler musst du korrigieren, ab vom Prinzip her sollte das so gehen. Du musst allerdings nach jeder Auswahl das Formular abschicken.
 

dumbledore

Mitglied
14 September 2017
38
0
6
26
Habe das ganze mal kurz getestet. Also das erste Formular wird angezeigt und die anderen zwei nicht.
Beim ersten kann ich eine Marke auswählen. Du schreibst ja, dass ich das Formular nach der Auswahl abschicken muss.
Muss ich nun ein submit button hinzufügen? Oder sollte er das normalerweise selbst machen durch die Auswahl?

Müsste im Code nicht irgendwo etwas von formular method post o.ä. stehen?
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.016
120
63
Du könntest das Formular automatisch per JavaScript senden oder einen Submit-Button einbauen
 

dumbledore

Mitglied
14 September 2017
38
0
6
26
Ich habe es gerade mit einem Button probiert, jedoch scheint es nicht zu funktionieren. Ich habe folgenden Code vor der ersten if Schleife hinzugefügt:

Code:
?>
<button type="submit" name="action" value="$_POST['hersteller']">Senden</button>
<?php
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.016
120
63
Code:
value="$_POST['hersteller']
Das ist Quatsch.

Versuche es mal mit
PHP:
echo '<select name="hersteller" onchange="this.form.submit()">';
 
Werbung: