2 Auswahllisten


  • michi311984
  • 2089 Aufrufe 15 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 2 Auswahllisten

    Hallo FSB-ler.

    Ich möchte gern ein Kontaktforumlar erstellen, das neben den üblichen Eingabetext (Name und so) auch 2 Auswahllisten enthält, das soll dann alles per E-Mail gesendet werden. Soweit so gut, habe auch schon das Formular fertig, funzt auch prima, nur mein Problem besteht darin:

    Liste 1:

    Auswahl an Automarken

    Liste 2:

    Genaue Modelle


    Sprich, liste 2 soll auf Liste aufbauen. Wenn in Liste 1 eine Marke gewählt wird, soll dann in Liste 2 die passenden Modelle aufgelistet werden. Ich habe nur keine Ahnung wo ich da ansetzen kann.
    Habt ihr eine Idee?

    mfg michi
  • Hi,

    soweit mir bekannt kann man das nicht mit HTML lösen. Weil hier eine gewissen dynamik drin steckt.

    Eine Ansatz wäre das ganze über Javascript zu machen. Dadurch kann die zweite Liste immer der ersten angepasst werden.

    Eine weitere Möglichkeit, was allerdings weitaus mehr Kenntnisse benötigt, wäre über Ajax. Aber meiner Meinung nach zu übertrieben für sowas kleines.

    Dann gäbe es noch die Möglichkeit über Flash, was aber auch zu umständlich dafür ist.

    Nur über HTML und PHP müsstest du ein Formular bauen für die erste Auswahlliste, das Formular über den Button abschicken und dann mit PHP den entsprechenden Ausgabetext für die zweite Auswahlliste erzeugen.

    Hoffe konnte dir helfen. Evtl. haben andere ja bessere und einfachere Lösungsvorschläge.

    Gruß Blueson1c
  • Rein in PHP ist das nicht schön zu lösen, noobgamer. Dabei fällt zuviel Traffic an für ein so einfaches Script. Wenn du ganz um JavaScript drum rum kommen willst, gäbe es noch die (vielleicht nicht am modernsten anmutende) Möglichkeit, Eine Auswahlliste mit Untergruppen zu verwenden.

    PHP-Quellcode

    1. <select name="Auto">
    2. <optgroup label="Volkswagen">
    3. <option label="Golf3">3er Golf</option>
    4. <option label="Golf4">4er Golf</option>
    5. <option label="Kaefer">K&auml;fer</option>
    6. </optgroup>
    7. <optgroup label="Renault">
    8. <option label="Clio">Clio</option>
    9. <option label="Civic">Civic</option>
    10. </optgroup>
    11. <optgroup label="Toyota">
    12. <option label="Corolla">Corolla</option>
    13. <option label="IQ">iQ</option>
    14. <option label="Yaris">Yaris</option>
    15. </optgroup>
    16. </select>
    Alles anzeigen


    Lg
    RamsesV
  • Hallo michi311984,

    ich hab dir mal kurz nen script geschrieben (ungeprüft, sollte aber funktionieren) ;)

    1. Deine HTML Datei:

    PHP-Quellcode

    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    3. <html xmlns="http://www.w3.org/1999/xhtml">
    4. <head>
    5. <title>Liste</title>
    6. <script type="text/javascript" src="scripts/ajax.js"></script>
    7. </head>
    8. <body>
    9. <div>
    10. <select name="carmaker" id="carmaker" onblur="getCars();" onchange="getCars();" onclick="getCars();">
    11. <option value="audi">Audi</option>
    12. <option value="bmw">BMW</option>
    13. <option value="honda">Honda</option>
    14. <option value="hyundai">Hyundai</option>
    15. <option value="jaguar">Jaguar</option>
    16. <option value="kia">KIA</option>
    17. <option value="lexus">Lexus</option>
    18. <option value="maybach">Maybach</option>
    19. <option value="mercedes">Mercedes</option>
    20. <option value="opel">Opel</option>
    21. <option value="peugeot">Peugeot</option>
    22. <option value="renault">Renault</option>
    23. <option value="rolls_royce">Rolls Royce</option>
    24. <option value="skoda">Skoda</option>
    25. <option value="smart">Smart</option>
    26. <option value="toyota">Toyota</option>
    27. <option value="vw">VW</option>
    28. <option value="others">Andere...</option>
    29. </select>
    30. <select name="cars" id="cars"></select>
    31. </div>
    32. </body>
    33. </html>
    Alles anzeigen


    2. Die eingebundene JavaScript Datei:

    PHP-Quellcode

    1. var req = null;
    2. getXMLHttp();
    3. var req_current = false;
    4. function getXMLHttp() {
    5. try{
    6. req = new XMLHttpRequest();
    7. }
    8. catch (e){
    9. try{
    10. req = new ActiveXObject("Msxml2.XMLHTTP");
    11. }
    12. catch (e){
    13. try{
    14. req = new ActiveXObject("Microsoft.XMLHTTP");
    15. }
    16. catch (failed){
    17. req = null;
    18. }
    19. }
    20. }
    21. }
    22. function getCars()
    23. {
    24. if (req_current) req.abort();
    25. req_current = true;
    26. var carmaker = document.getElementById('carmaker').value;
    27. req.open('GET', 'http://domain.tld/getCars.php?carmaker='+carmaker+'&rand='+new Date(), true);
    28. req.onreadystatechange = function()
    29. {
    30. if (req.readyState == 4)
    31. {
    32. if (req.status == 200)
    33. {
    34. document.getElementById('cars').innerHTML = req.responseText;
    35. }
    36. req_current = false;
    37. }
    38. else
    39. {
    40. return false;
    41. }
    42. }
    43. req.send(null);
    44. }
    Alles anzeigen


    und zum Schluss die aufgerufene PHP Datei getCars.php

    PHP-Quellcode

    1. <?php
    2. // DB Verbindung...
    3. $carmaker = mysql_real_escape_string($_GET['carmaker']);
    4. $query = mysql_query("SELECT `car`, `car_value` FROM `cars` WHERE `carmaker` = '".$carmaker."'");
    5. while ($row = mysql_fetch_object($query))
    6. {
    7. echo "<option value=\"".$row['car_value']."\">".$row['car']."</option>\n\r";
    8. }
    9. // Verbindung schließen
    10. ?>
    Alles anzeigen


    Hoffe das hilft dir etwas ;)

    gruß
    snip3r
    Rechteübersicht * Forenregeln * F.A.Q. * Lexikon
    Suchfunktion * Chat * User helfen User
    Patrioten reden nur davon, dass sie für ihr Land sterben, niemals davon, dass sie für ihr Land töten. (Bertrand Russell)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Snip3r ()

  • Moin michi,
    die car daten würde ich in einer MySQL Datenbank speichern. Das wäre das einfachste.
    Alternativ könnte man diese auch in einem Array speichern, allerdings müsste man dann ein paar sachen umschreiben.
    Auch die Hersteller würde ich aus einer MySQL Datenbank auslesen (im Prinzip auch eine while() Schleife wie in der getCars.php).

    mfg
    snip3r
    Rechteübersicht * Forenregeln * F.A.Q. * Lexikon
    Suchfunktion * Chat * User helfen User
    Patrioten reden nur davon, dass sie für ihr Land sterben, niemals davon, dass sie für ihr Land töten. (Bertrand Russell)
  • Hast du denn in deinem Webhosting Paket eine MySQL Datenbank (und PHP) inklusive?
    Wenn nicht, würde ich den Hoster wechseln ;)

    Wenn doch. Gibt es ein schönes Tool (PHPMyAdmin), mit dem du deine Datenbank verwalten kannst.

    Wenn du speziellere Hilfe brauchst, schreib mir ne PN (ich kann allerdings erst morgen dran arbeiten).
    Rechteübersicht * Forenregeln * F.A.Q. * Lexikon
    Suchfunktion * Chat * User helfen User
    Patrioten reden nur davon, dass sie für ihr Land sterben, niemals davon, dass sie für ihr Land töten. (Bertrand Russell)
  • ja snip3r, bei deinem script sollte genau das gleich Problem vorliegen, kp woran das liegt

    PHP-Quellcode

    1. <h1>&nbsp;</h1>
    2. <h1>Kontaktformular</h1>
    3. <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
    4. <dl>
    5. <?php
    6. // Script to Query the Concerts Table to Display the results
    7. /* database configuration */
    8. $dbConfig['type']="mysql";
    9. $dbConfig['server']="rdbms.strato.de";
    10. $dbConfig['username']="DB-User";
    11. $dbConfig['password']="DB-PSW";
    12. $dbConfig['database']="DB-Name";
    13. include_once("JSDropDown.class.php");
    14. $frmObjName="JSddForm";
    15. echo "<form name=\"$frmObjName\" method=\"post\">";
    16. $JSdd = new JSDropDown($dbConfig);
    17. $JSdd->DataFetch(); // Call the Function which will fetch the data.
    18. $JSdd->createfrmObject($frmObjName); // Pass the Current Form name as the parameter
    19. $JSdd->close_JSDropDown_database();
    20. echo "</form>";
    21. ?>
    22. <dt>Name:</dt>
    23. <dd><input type="text" name="Name" /></dd>
    24. <dt>Vorname:</dt>
    25. <dd><input type="text" name="Vorname" /></dd>
    26. <dt>Straße:</dt>
    27. <dd><input type="text" name="Straße" /></dd>
    28. <dt>Postleitzahl:</dt>
    29. <dd><input type="text" name="Postleitzahl" />
    30. </dd>
    31. <dt>Ort:</dt>
    32. <dd><input type="text" name="Ort" /></dd>
    33. <dt>E-Mail:</dt>
    34. <dd><input type="text" name="E-Mail" /></dd>
    35. <dt>Baujahr:</dt>
    36. <dd><select name="Baujahr">
    Alles anzeigen


    wie gesagt, wenn ich das script vor dem form setze gehts, dahinter net.