dynamisches Formular bei Auswahl select -> per include via PHP-Datei erweitern

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • dynamisches Formular bei Auswahl select -> per include via PHP-Datei erweitern

    Hallo,

    ich möchte ein dynamisches Formular erstellen, das bei Auswahl der option im select, per include via PHP-Datei erweitert wird.
    Das Formular ist sehr umfangreich, daher sollen nur die Formularfelder angezeigt werden, die für das jeweilige Objekt relevant sind.

    zum Bsp. wählt der User die Option "rent" includieren Formularfelder wie Mietpreis, Kaution, Nebenkosten etc. aus rent.php ,
    wählt der User die Option "sale" kommen die Formularfelder aus sale.php ,

    Das Formular ist sehr umfangreich, hier ein Ausschnitt:

    Source Code

    1. <form name="item" action="<?php echo base_url(true) ; ?>" method="post" enctype="multipart/form-data">
    2. <input type="hidden" name="action" value="item_add" />
    3. <input type="hidden" name="page" value="item" />
    4. <fieldset>
    5. .
    6. .
    7. .
    8. <div class="clearfix">
    9. <?php
    10. if( Session::newInstance()->_getForm('pre_property_type') != '' ) {
    11. $detail['e_type'] = Session::newInstance()->_getForm('pre_property_type');
    12. }
    13. ?>
    14. <label for="property_type">Typ</label>
    15. <select name="property_type" id="property_type">
    16. <option value="" selected="selected" >bitte auswählen</option>
    17. <option value="1" <?php if(@$detail['e_type'] == 'RENT') { echo "selected"; } ?>>
    18. rent
    19. </option>
    20. <option value="2" <?php if(@$detail['e_type'] == 'SALE') { echo "selected"; } ?>>
    21. sale
    22. </option>
    23. </select>
    24. </div>
    25. .
    26. <div id="include"></div> <!-- Form erweitern //-->
    27. .
    28. <button type="submit">sent</button>
    29. </fieldset>
    30. </form>
    Display All


    So nun weiß ich nicht weiter.
    Ich habe das Tut "Select-Auswahl mit AJAX Abhängigkeit" gelesen und weitere Posts zu ähnlichen Problemen, allerdings bringen die mich nicht wirklich weiter, abgesehen dass ich auf dem Gebiet auch keine Expertin bin (leider).

    Ich versuche nun folgendes per JS

    Source Code

    1. $("#property_type").change(function () {
    2. var str = "";
    3. $("#property_type option:selected").each(function () {
    4. str += $(this).val();
    5. });
    6. var property_type=str;
    7. if (property_type!="") {
    8. $.ajax({
    9. type: "GET",
    10. url: "index.php",
    11. data: {"ajaxget":1,"property_type":property_type},
    12. dataType:"json",
    13. success: function (reqCode) {
    14. $("#include").replaceWith(reqCode[0]);
    15. }
    16. });
    17. }
    18. return false;
    19. });
    20. $("#property_type").change();
    Display All


    und per PHP soll die Erweiterung eingefügt werden

    Source Code

    1. <?php
    2. if (isset($_GET['ajaxget']) AND $_GET['ajaxget']==1) {
    3. if (isset($_GET['property_type'])) {
    4. $ausgabe= include_once 'rent.php';
    5. header('Content-type: application/json');
    6. echo json_encode(array($ausgabe));
    7. }
    8. }
    9. var_dump ($_GET);
    10. print_r ($_POST);
    11. var_dump ($_GET['ajaxget']);
    12. var_dump ($ausgabe);
    13. ?>
    Display All


    Die Werte werden nicht per JS verarbeitet. $_GET['ajaxget'] ist leer.
    var_dump ($_GET) und print_r ($_POST) geben folgendes aus. Die anderen beiden Variablen sind null

    Source Code

    1. array (size=2)
    2. 'page' => string 'item' (length=4)
    3. 'action' => string 'item_add' (length=8)
    4. Array
    5. (
    6. [page] => item
    7. [action] => item_add
    8. )


    Mein Ansatz funktioniert leider nicht. Es gibt auch keine Fehlermeldung. Das Formular wird ansonsten korrekt ausgeführt und die Werte in der Datenbank gespeichert.
    Kann mir jemand einen Tipp geben, wo der Fehler ist?

    Danke
  • Um mich um deinen Code zu kämpfen, bin ich zur Zeit etwas unmotiviert. Was ich dir aber empfehlen kann ist: mach es einfacher.

    Ich würde in deiner Situation, das komplette Formular in ein Dokument packen. Natürlich wären alle select-abhängigen Teile versteckt (CSS display: hidde). Dann würde ich mit JQuery auf die Auswahl triggern und die entsprechenden Teile einblenden.

    Beispiel: jsfiddle.net/tqwEx/

    Wobei man aber noch sagen muss, das man auf JQuery auch verzichten könnte. Aber falls es eh schon im Projekt implementiert ist, kann man es auch nutzen.
    =O
  • Hi,

    hast du mal per Firebug (o.ä.)nachgesehen was genau per ajax funktion verschickt wird?! Denn wenn schon $_GET['ajaxget'] null ist, dann werden wohl die Daten nicht korrekt übertragen.
    Wie schon geschrieben, am einfachsten mal per firebug nachgucken was genau übertragen wird. Achso, nach dem "echo json_encode(array($ausgabe));" solltest du noch ein die(); oder exit(); einbauen, denn sobald nach dem JSON String noch weitere Daten gesendet werden (in diesem Fall die debug ausgabe) gibts probleme...

    also meine kleine standard ajax request funktion sieht übrigends so aus vllt hilft dir das weiter:

    Source Code

    1. var request = //irgendwas ...
    2. $.ajax({
    3. url: "libs/datei.php",
    4. type: "POST",
    5. dataType: "JSON",
    6. data: request,
    7. success: function( data ) {
    8. //code
    9. }
    10. },"JSON");
  • Hallo Bastey,

    bastey wrote:

    Ich würde in deiner Situation, das komplette Formular in ein Dokument packen. Natürlich wären alle select-abhängigen Teile versteckt (CSS display: hidde). Dann würde ich mit JQuery auf die Auswahl triggern und die entsprechenden Teile einblenden.

    Super, genau wonach ich gesucht habe! Ich würde Option 3 wählen ;)

    bastey wrote:

    Wobei man aber noch sagen muss, das man auf JQuery auch verzichten könnte. Aber falls es eh schon im Projekt implementiert ist, kann man es auch nutzen.
    Diese Variante wäre mir am liebsten, doch wie stelle ich das an? Ich müsste per if abfragen, welche Option ausgewählt wurde, oder?
    Doch wie komme ich an diese Information? Via PHP hatte ich bisher kein Erfolg, da das Formular ja noch nicht abgeschickt wurde...

    @ Robert,
    vielen Dank auch für Deine Hilfe. Ich werde das auch mal testen. Man lernt ja schließlich nie aus.
  • bastey wrote:

    Wobei man aber noch sagen muss, das man auf JQuery auch verzichten könnte. Aber falls es eh schon im Projekt implementiert ist, kann man es auch nutzen.
    Diese Variante wäre mir am liebsten, doch wie stelle ich das an? Ich müsste per if abfragen, welche Option ausgewählt wurde, oder?[/quote]

    Hier ein Beispiel ohne JQuery: jsfiddle.net/rvwtH/


    bastey wrote:

    Doch wie komme ich an diese Information? Via PHP hatte ich bisher kein Erfolg, da das Formular ja noch nicht abgeschickt wurde...
    Welche Informationen meinst du?
    =O
  • Hi Basty,

    Vielen Dank, noch einmal.
    Welche Informationen meinst du?
    Ich meinte den Value. Wie ich jetzt sehe, brauche ich den ja gar nicht. Muss wohl noch viel viel lernen.
    Der andere Code funktioniert auch super.
    Frage welchen Code soll ich nun nehmen? Ich meine welcher Code wird besser von allen Browsern unterstützt? Oder ist das gleich?