abhängige Selects aus der Datenbank via AJAX/PHP

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • abhängige Selects aus der Datenbank via AJAX/PHP

    Hallo Community,

    seit ein paar Stunden probiere ich mit einem Script herum und finde den Fehler bzw. die Lösung einfach nicht.

    Ich habe eine Datenbank mit verschiedenen Artikeln, die haben verschiedene Größen und Farben.

    Aufgebaut wie folgt:

    HTML-Code:
    id | artikelnummer |  farbkombination | groesse
    1  |  DA-1000-PA   |  grün-weiß       | 34/36
    2  |  DA-1000-PA   |  grün-blau       | 40/42
    Nun soll man in einem ersten <select> die Farbwerte auswählen können, worauf hin sich in Abhängigkeit der Farbe die vorhandenen Größen in einem zweiten <select> ausgegeben werden.

    Habe schon ein Script gefunden, und versucht, dieses anzupassen, doch funktioniert es leider nicht, sprich, mein zweiter select wird nach einer bereits ersten Auswahl nicht richtig geladen "nachgeladen".

    Wenn ich als erstes die grün-weiss-Variation wähle, erscheint der select mit der Größenauswahl richtig.
    Entscheide ich mich dann aber um, und wähle Farbe grün-blau, erhalte ich keine Größen mehr zur Auswahl, nur noch mein erstes <option> mit Größe wählen </option>.

    Das script wie folgt:
    HTML-Code:
    <head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
    
    <script type="text/javascript">
    $(document).ready(function() {
    	$('#wait_1').hide();
    	$('#farbe').change(function(){
    	  $('#wait_1').show();
    	  $('#result_1').hide();
          $.get("inc/functions.php", {
    		func: "farbe",
    		drop_var: $('#farbe').val(),
    		artikelnummer: $('#artikelnummer').val()
    		},
    		function(response){
    			$('#result_1').fadeOut();
    			setTimeout("finishAjax('result_1', '"+escape(response)+"')", 400);
    		}
    	  );
          return false;
    	});
    });
    
    function finishAjax(id, response) {
      $('#wait_1').hide();
      $('#'+id).html(unescape(response));
      $('#'+id).fadeIn();
    }
    </script>
    </head>
    <body>
    <form action="" method="post">
      
        <select name="farbe" id="farbe">
        
          <option value="" selected="selected" disabled="disabled">Farbe wählen</option>
          
          <?php getSelectFarbe($artikelnummer); ?>
        
        </select> 
        <input type="hidden" id="artikelnummer" name="artikelnummer" 
        value="<?php echo $artikelnummer; ?>" />
        <span id="wait_1" style="display: none;">
        <img alt="Please Wait" src="ajax-loader.gif"/>
        </span>
        <span id="result_1" style="display: none;"></span> 
      
    </form>
    </body>
    Die PHP-Funktion dazu wie folgt:

    PHP-Code:
    <?php

    function getSelectFarbe($artikelnummer) {
        
    $result mysql_query("SELECT 
        DISTINCT farbkombination 
        FROM groessen_und_farben 
        WHERE artikelnummer='
    $artikelnummer'"
        or die(
    mysql_error());

          while(
    $farbe mysql_fetch_array$result )) {
               echo 
    '<option value="'.$farbe['farbkombination'].'">'.$farbe['farbkombination'].'</option>';
            }

    }


    if(
    $_GET['func'] == "farbe" && isset($_GET['func'])) { 
       
    farbe($_GET['drop_var'],$_GET['artikelnummer']); 
    }

    function 
    farbe($drop_var,$artikelnummer) {  
        
    $result mysql_query("SELECT * 
        FROM groessen_und_farben 
        WHERE farbkombination='
    $drop_var
        AND artikelnummer='
    $artikelnummer'"
        or die(
    mysql_error());
        
        echo 
    '<select name="groesse" id="groesse">
              <option value="" disabled="disabled" selected="selected">Größe wählen</option>'
    ;

               while(
    $groessen mysql_fetch_array$result )) {
                  echo 
    '<option value="'.$groessen['groesse'].'">'.$groessen['groesse'].'</option>';
                }
        
        echo 
    '</select> ';
        echo 
    '<input type="submit" name="submit" value="Submit" />';
    }
    ?>
    Wo ist denn hier der Haken?
    Geht mit irgendwo die Info für die Artikelnummer verloren oder warum ergibt die DB-Abfrage hier keine Werte mehr?
    Ich bin mal eher so ein richtiger AJAX-Nichtkönner, daher mein Posting in diesem Bereich. Vermute einen Nachladefehler mittels JS/AJAX, kann das sein?

    Vielen Danke schon mal und sonnige Grüße,
    susi1600

  • #2
    .... selber drauf gekommen

    Hoi, ja also wie es sein soll findet man den Fehler natürlich NACHDEM man ein Posting gemacht hat....

    Es lag an der Codierung der DB, immer bei Sonderzeichen in den Farben lädt der keine Größen rein - Käse aber auch!

    Kommentar

    Lädt...
    X