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

Auswahlliste mit mehreren Reihen erstellen

dumbledore

Mitglied
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.
 
Werbung:
Was heißt man klickt sich durch?
Wenn man am Anfang z. B. Opel auswählt , 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 z. B. 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üsste man von dem 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 zusehen wie mein Beispiel Link , oder sollen die Angaben nicht im Link sichtbar sein?
Das sind jetzt noch Informationen, womit man besser arbeiten könnte
 
Zuletzt bearbeitet:
Hast du die ganzen Namen in einer Datenbank stehen oder wo kommen die her ?
Wo kommt der Inhalt der Auswahlfelder her ( Datenbank ,json usw ).

Die Daten sind bereits in der Datenbank.

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 von einem Moderator:
Werbung:
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:
Werbung:
Was hast du denn bisher gemacht? Zeige mal deine Scripte, dann kann man dir bestimmt Tipps geben.
 
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:
CZeGM.png


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>
 
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.
 
Werbung:
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.
 
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.
 
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?
 
Werbung:
Du könntest das Formular automatisch per JavaScript senden oder einen Submit-Button einbauen
 
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
 
Code:
value="$_POST['hersteller']
Das ist Quatsch.

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