Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP auswahlbegrenzung

Einklappen

Neue Werbung 2019

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

  • PHP auswahlbegrenzung

    hallo Leute,

    ich habe wieder eine Frage, ich habe das Problem mit der Filterfunktion bei 2 Tabelle, bei erste Auswahl wähle ich zum beispiel ein CC 01, dann zeig er mir bei 2. Auswahl nur noch Einrichtungen von CC01, das funktioniert, weil Einrichtung und CC in eine Tabelle drin ist, und jetzt möchte ich genauso weiter machen mit wenn ich Einrichtung ausgewählt habe, muss er wieder dieser Arbeitsbereich eingrenzen, aber tut er nicht, ich habe mit dieses vergleichsfunktion $_Post verwendet, aber hier geht es nicht da Arbeisbereich in eine andere Tabelle drin ist, ich habe alles ausprobiert aber es klappt nicht, bitte helf mir.

    danke euch im Voraus.

    derneue

    PHP-Code:
     <?php
    include("dbconnect.php");
    error_reporting(E_ALL); // debug
    ini_set('display_errors'true);
    ?> 
      <script type="text/javascript">
    function submitForm() {
      var form = document.getElementsByName('form')[0];
      form.submit();
    }
    </script>
        <form name="form" id="form" method="post" action="formularA.php">
     
                 <select name="select_centren" id="select_centren" onchange="submitForm()">
                    <option value="" selected="selected">w&auml;hlen</option>
                    <?php
            $abfrageStgr 
    "SELECT DISTINCT CC
                            FROM campies
                            ORDER by CC ASC"
    ;  //F?llen der Drop-Down-Auswahl Standorte
            
    $ergebnisStgr mysql_query($abfrageStgr);
              while(
    $rows=mysql_fetch_array($ergebnisStgr))
             {
             
    ?>
              <option value="<?php echo $rows["CC"];
              
    ?>"><?php echo $rows["CC"];
              
    ?></option><?
              }
    ?>
                </select>
     
                 <select name="select_einrichtung" id="select_einrichtung" onchange="submitForm()">
                 <option value="" selected="selected">w&auml;hlen</option>
    <?php
    if( isset( $_POST['select_centren'] ) ) {
            
    $abfrageStgr1 "SELECT DISTINCT einrichtung
                            FROM campies
          WHERE cc = '"
    $_POST['select_centren']."'
                            ORDER by einrichtung ASC"
    ;  //F?llen der Drop-Down-Auswahl Standorte
            
    $ergebnisStgr1 mysql_query($abfrageStgr1);
              while(
    $rows=mysql_fetch_array($ergebnisStgr1))
             {
             
    ?>
              <option value="<?php echo $rows["einrichtung"];
              
    ?>"><?php echo $rows["einrichtung"];
              
    ?></option><?
              }
     
     // Datenbank hier
    }
    ?>
    </select>
     <select name="select_arbeitsbereich" id="select_arbeitsbereich" onchange="submitForm()">
     <option value="" selected="selected">w&auml;hlen</option>
     <?php
    if( isset( $_POST['select_einrichtung'] ) ) {
            
    $abfrageStgr1 "SELECT DISTINCT arbeitsbereich
                            FROM lab_inst, campies
          WHERE einrichtung = '"
    $_POST['select_einrichtung']."'
                            ORDER by arbeitsbereich ASC"
    ;  //F?llen der Drop-Down-Auswahl Standorte
            
    $ergebnisStgr1 mysql_query($abfrageStgr1);
              while(
    $rows=mysql_fetch_array($ergebnisStgr1))
             {
             
    ?>
              <option value="<?php echo $rows["arbeitsbereich"];
              
    ?>"><?php echo $rows["arbeitsbereich"];
              
    ?></option><?
              }
     
     // Datenbank hier
    }
    ?>
     
    </form>
    ImageShack - Image Hosting :: auswahlus1.jpg so sieht es aus, aber bei 2. auswahl funktioniert es nicht mehr weiter

  • #2
    Aus den ersten beiden Abfrage entnehme ich, dass campies mindestens so aussieht
    Code:
    CREATE TABLE campies (
      cc ...,
      einrichtung ...
    )
    Wie sieht lab_inst aus? Und wie hängen die beiden Tabellen zusammen?

    Kommentar


    • #3
      hallo David,

      anbei ein BildLink:

      http://img386.imageshack.us/img386/8968/campieqb5.jpg

      also ist campies_Nr haben die gleichen id

      gruß

      derneue

      ps. danke dir im Voraus

      Kommentar


      • #4
        Und ist campies.einrichtung eindeutig oder erst die Kombination cc+einrichtung?

        Kommentar


        • #5
          erst die kombination cc + einrichtung, deshalb weiss ich nicht wie man dieser code schreibt =o(

          also muss einrichtung nur aus der davorrige ausgewählt sein, und irgendwie in kombination mit cc, sodass die phpmaschine es weisst


          PHP-Code:
          if( isset( $_POST['select_einrichtung'] ) ) {
                  
          $abfrageStgr1 "SELECT DISTINCT arbeitsbereich
                                  FROM lab_inst, campies
                WHERE einrichtung = '"
          $_POST['select_einrichtung']."'
                                  ORDER by arbeitsbereich ASC"
          ;  //F?llen der Drop-Down-Auswahl Standorte
                  
          $ergebnisStgr1 mysql_query($abfrageStgr1);
                    while(
          $rows=mysql_fetch_array($ergebnisStgr1)) 
          hier in dieser teil muss was geändert werden, aber ich weiss nicht wie

          Kommentar


          • #6
            Na dann fangen wir mal an... (mal sehen wie lange es dauert )

            Jedes Mal, wenn das Formular abgeschickt wird (ob durch den submit-Button oder durch javascript-submit(), egal) sendet der Browser alle benannten, gültigen Elemente des Formulars als Name=Wert Paare an den Webserver. Daraus, und nur daraus, baut PHP für diesen Durchlauf des Skripts das Feld _POST zusammen.
            Durch
            <option value="" selected="selected">w&auml;hlen</option>
            sorgst Du dafür, dass bei jedem Durchlauf die "leere" Option als default ausgewählt wird. Wird das Formular erneut abgeschickt, ohne dass der Benutzer erneut den Wert auswählt, wird also ein leerer Parameter übermittelt und PHP baut daraus aus leere Zeichenkette in _POST zusammen.

            Das musst Du erstmal ändern, bevor Du das Skript weiterbauen kannst.
            Wenn also $_POST['select_centren'] gesetzt ist, musst Du schon in der ersten while-Schleife überprüfen, ob $rows["CC"]===$_POST['select_centren'] ist. Und wenn das der Fall ist, genau dieses <option> Element mit selected="selected" versehen. Genauso dann mit $rows["einrichtung"] in der nächsten while-Schleife.

            Kommentar


            • #7
              genau, das problem wollte ich auch noch lösen, aber jetzt ist es egal, hauptsache die innere filterfunktion funktioniert =o) aber es funktioniert jetzt noch nicht, wenn ich jetzt bei CC auswähle, filtert er gleich alles was bei Einrichtung aus die in z.b. CC01 sind, und weiter macht er nicht, weil Arbeitsbereich in der 2. Tabelle drin ist und ich nicht weisst wie man bei sqlabfrage so schreibt damit er weiter eingrenzt und nur das zeigt was in arbeitsbereich xy von einrichtung drin ist, so schwer für mich das ganze zeug, aber ich muss irgendwie schaffen, mit deine/eure hilfe

              gruß

              derneue

              Kommentar


              • #8
                Nein, es ist nicht egal. Die "innere filterfunktion" wird so nicht funktionieren, bis Du dieses Problem nicht gelöst hast.
                Ich weiß, sehen heißt glauben ...also soll PHP es Dir zeigen
                PHP-Code:
                include("dbconnect.php");
                error_reporting(E_ALL); // debug
                ini_set('display_errors'true);

                echo 
                '<pre> Und so sieht _POST jetzt aus: 'var_dump($_POST); echo "</pre>\n"flush(); 

                Kommentar


                • #9
                  hm, und wieso funktioniert es dann bei erste auswahl obwohl es dann wieder auf wählen erscheint?

                  bin echt noob ey

                  Kommentar


                  • #10
                    Dann war das vielleicht nicht "sehen" genug.

                    Genau Dein Skript mit ein paar echo-Ausgaben mehr:
                    PHP-Code:
                    <?php
                    include("dbconnect.php");
                    error_reporting(E_ALL); // debug
                    ini_set('display_errors'true);

                    echo 
                    '<pre>_POST:'var_dump($_POST); echo "\nZeit:"date('H:i:s');"</pre>\n";

                    ?>
                    <script type="text/javascript">
                        function submitForm() {
                            var form = document.getElementsByName('form')[0];
                            form.submit();
                        }
                    </script>
                    <form name="form" id="form" method="post" action="formularA.php">

                        <select name="select_centren" id="select_centren" onchange="submitForm()">
                            <option value="" selected="selected">w&auml;hlen</option>
                            <?php
                            $abfrageStgr 
                    "SELECT DISTINCT CC
                            FROM campies
                            ORDER by CC ASC"
                    ;  //F?llen der Drop-Down-Auswahl Standorte
                            
                    $ergebnisStgr mysql_query($abfrageStgr);
                            while(
                    $rows=mysql_fetch_array($ergebnisStgr))
                            {
                                
                    ?>
                                <option value="<?php echo $rows["CC"];
                                    
                    ?>"><?php echo $rows["CC"];
                                    
                    ?></option><?
                                }
                                ?>
                            </select>
                            
                            echo '<div>Debug: select_centren="', isset( $_POST['select_centren'] ) ? $_POST['select_centren'] : '--nicht vorhanden--', '"</div>';
                            
                            <select name="select_einrichtung" id="select_einrichtung" onchange="submitForm()">
                                <option value="" selected="selected">w&auml;hlen</option>
                                <?php
                                
                    if( isset( $_POST['select_centren'] ) ) {
                                    
                    $abfrageStgr1 "SELECT DISTINCT einrichtung
                                    FROM campies
                                    WHERE cc = '"
                    $_POST['select_centren']."'
                                    ORDER by einrichtung ASC"
                    ;  //F?llen der Drop-Down-Auswahl Standorte
                                    
                    $ergebnisStgr1 mysql_query($abfrageStgr1);
                                    while(
                    $rows=mysql_fetch_array($ergebnisStgr1))
                                    {
                                        
                    ?>
                                        <option value="<?php echo $rows["einrichtung"];
                                            
                    ?>"><?php echo $rows["einrichtung"];
                                            
                    ?></option><?
                                        }

                                        // Datenbank hier
                                    }
                                    ?>
                                </select>
                                echo '<div>Debug: select_einrichtung="', isset( $_POST['select_einrichtung'] ) ? $_POST['select_einrichtung'] : '--nicht vorhanden--', '"</div>';
                                <select name="select_arbeitsbereich" id="select_arbeitsbereich" onchange="submitForm()">
                                    <option value="" selected="selected">w&auml;hlen</option>
                                    <?php
                                    
                    if( isset( $_POST['select_einrichtung'] ) ) {
                                        
                    $abfrageStgr1 "SELECT DISTINCT arbeitsbereich
                                        FROM lab_inst, campies
                                        WHERE einrichtung = '"
                    $_POST['select_einrichtung']."'
                                        ORDER by arbeitsbereich ASC"
                    ;  //F?llen der Drop-Down-Auswahl Standorte
                                        
                    $ergebnisStgr1 mysql_query($abfrageStgr1);
                                        while(
                    $rows=mysql_fetch_array($ergebnisStgr1))
                                        {
                                            
                    ?>
                                            <option value="<?php echo $rows["arbeitsbereich"];
                                                
                    ?>"><?php echo $rows["arbeitsbereich"];
                                                
                    ?></option><?
                                            }

                                            // Datenbank hier
                                        }
                                        ?>

                                    </form>
                    <?php
                    echo '<div>Debug: Skript Ende 'date('H:i:s'), "</div>\n";
                    Schau Dir die Ausgaben mal bei jedem Schritt genau an. Dieses Skript wird immer von oben nach unten vollständig durchlaufen - Schritt für Schritt. D.h. wenn Du die Ausgabe
                    Debug: select_centren="--nicht vorhanden--"
                    erhälst, wird auch das isset() danach false liefern. Wenn Du die Ausgabe
                    Debug: select_centren=""
                    erhälst wird das darauf folgende isset() true liefern, aber es handelt sich um eine leere Zeichenkette (leer ist nicht gleich nicht vorhanden).

                    Kommentar


                    • #11
                      hm, ok ich hab jetzt step by step gesehen,

                      wenn ich zuerst bei CC drücke, cc1 zb, dann merkt er sich das, dann filtert er auch echt einrichtungen die nur zur cc1 gehören, das klappt bis hierher, aber wenn ich jetzt bei einrichtung auswähle, dann spuckt er alle arbeitsbereich aus, genau das bei letzte arbeitsbereich muss bei der sql abfrage modifiziert werden damit er dann auch nur aus einrichtungen eingrenzt, von center zur einrichtung klappt es noch wunderbar weil es in eine tabelle drin ist, dagegen ist arbeitsbereich in eine andere tabelle (lab_inst), deshalb filtert der nicht richtig und spuckt alles aus egal was ich dann bei einrichtung auswähle, ich weiss nicht welche sql abfrage ich dahin schreibe damit er richtig filtert

                      bin echt noob, danke dir für die Hilfe, ich bin mir sicher du kannst es sofort lösen =o)

                      Kommentar


                      • #12
                        "er" merkt sich da garnichts.
                        Jedes Mal, wenn das Formular abgeschickt wird (ob durch den submit-Button oder durch javascript-submit(), egal) sendet der Browser alle benannten, gültigen Elemente des Formulars als Name=Wert Paare an den Webserver. Daraus, und nur daraus, baut PHP für diesen Durchlauf des Skripts das Feld _POST zusammen.
                        PHP macht aufgrund der _POST Daten etwas und schickt eine neue HTML Seite mit einem neuen Formular an den Browser.

                        Gehen wir es mal von Anfang an durch. Du rufst das Skript das erste Mal auf, das erste <select> wird mit den DB-Daten gefüllt, der Rest ist erstmal egal.
                        Du wählst im ersten <select> CC01 aus. Der Browser sendet die Anfrage mit select_centren=CC01&select_einrichtung=&select_arbeitsbereich= ab. PHP macht daraus
                        PHP-Code:
                        $_POST = array(
                          
                        'select_centren' => 'CC01',
                          
                        'select_einrichtung' => '',
                          
                        'select_arbeitsbereich' => ''
                        ); 
                        und dann wird Dein Skript abgearbeitet - von oben nach unten. Das erste <select> wird <option value="" selected="selected> und den Daten aus der DB gefüllt.
                        $_POST['select_centren'] ist gleich 'CC01' also wird das zweite <select> mit <option value="" selected="selected> und dem Ergebnis der Abfrage
                        Code:
                        SELECT DISTINCT einrichtung ... WHERE cc='CC01' ...
                        gefüllt. Das dritte <select> ist hier egal.
                        So, diese Ausgabe ersetzt die bisherige Seite im Browser. Die Standardwerte der ersten beiden <select> Elemente sind "". Wird das Formular wieder abgeschickt, macht der Browser wieder genau das gleiche: Das aktuelle Formular nehmen, die bennanten, gültigen Elemente als Name=Wert Paare an den Webserver senden. Und das ist nach den Voreinstellungen select_centren=&select_einrichtung=&select_arbeitsbereich=
                        Und PHP macht daraus
                        PHP-Code:
                        $_POST = array(
                          
                        'select_centren' => '',
                          
                        'select_einrichtung' => '',
                          
                        'select_arbeitsbereich' => ''
                        ); 
                        Und dann wird Dein Skript abgearbeitet - wieder von oben nach unten. Das erste <select> wird <option value="" selected="selected> und den Daten aus der DB gefüllt.
                        $_POST['select_centren'] ist gleich ''. Also wird das zweite <select> mit <option value="" selected="selected> und dem Ergebnis der Abfrage
                        Code:
                        SELECT DISTINCT einrichtung ... WHERE cc='' ...
                        gefüllt.
                        usw usw. Es ist immer das selbe Spiel. Browser stellt Seite dar, Browser sendet Anfrage samt aktuellen Daten an den Webserver, PHP macht was mit den Daten und sendet Antwort, Browser ersetzt Seite durch Antwort.
                        Was Du jetzt willst (es gibt andere Möglichkeiten, aber bleiben wir bei der hier) ist, dass bereits ausgewählte Daten im neuen Formular als Standardwert markiert werden. Wenn der Benutzer also nichts am neuen Formular ändert (einen anderen Wert auswählt) wird wieder der bisherige Wert als Name=Wert Paar an den Webserver geschickt.
                        Wenn also $_POST['select_centren'] gesetzt ist, musst Du schon in der ersten while-Schleife überprüfen, ob $rows["CC"]===$_POST['select_centren'] ist. Und wenn das der Fall ist, genau dieses <option> Element mit selected="selected" versehen. Genauso dann mit $rows["einrichtung"] in der nächsten while-Schleife.

                        Kommentar


                        • #13
                          hi David,

                          ich danke dir für die ausführliche erklärung, ich verstehe jetzt mehr php,

                          aber was ich will habe ich schlecht erklärt, deshalb hast du noch nicht verstanden, wenn ich jetzt CC1 auswählen, kann ich bei einrichtung nur noch einrichtungen auswählen die nur in CC1 drin sind, also das kann er jetzt, aber wenn ich jetzt weiter nachdem ich schon einrichtung ausgewählt habe, will ich arbeitsbereich auswählen, aber nur diese arbeitsbereich von der einrichtung die ich ausgewählt habe, jetzt momentan spuckt er alle arbeitsbereiche rein was ich nicht will, ich will dass er bei arbeitsbereich nur die anzeigt die zur einrichtung1 gehört und andere z.b. arbeitsbereiche von einrichtung2 nicht anzeigt.

                          jetzt hoffe ich dass du mehr verstehst was ich meine.

                          =o)

                          Kommentar


                          • #14
                            Na dann zeig mir mal den jetzigen Code mit den oben besprochenen Änderungen.
                            Ohne die ...sorry, sehe ich einfach nicht, wie das klappen soll.

                            Kommentar

                            Lädt...
                            X