Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Tabellenfilterung mit Dropdownfeldern

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

  • [Erledigt] Tabellenfilterung mit Dropdownfeldern

    Hallo PHP Forum,

    also sitze zur Zeit an nem Projekt.



    Und zwar möchte ich, dass wenn ich wie im Bildbeispiel hier nach "IK_IB_AC" und "Winter_2015" sortiere er auch wirklich nur die ausgibt die IK_IB_AC und Winter_2010 sind und nicht VM oder sonstwas.

    Wenn ich in meiner Abfrage das OR durch ein AND ersetze, sortiert er mir allerdings die tabelle nicht mehr wenn ich nur eine dropdown "ausgefüllt" habe.

    Also wenn ich z.B. nur nach IK_IB_AC sortieren will und das "Pruefungszeit" Feld dafür leer lasse.

    Im Grunde bräuchte ich son AND OR zwischending
    Hab keine Ahnung wie ich das realisieren kann.

    Die Dropdown wird automatisch aus der Datenbank generiert.

    mein Code dazu hier:
    PHP-Code:
    $sql mysql_query("SELECT * FROM auszubildende WHERE beruf = '".$_POST['beruf']."' OR pruefungszeit = '".$_POST['pruefungszeit']."' "); 


  • #2
    Du willst nicht sortieren, sondern filtern. Das ist ein wichtiger Unterschied.
    Du musst die Query eben dynamisch zusammenbauen. PHP und if() verwenden. Du brauchst auch kein OR, sondern ein AND. Schliesslich willst Du beide Bedingungen erfüllt sehen.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      ja stimmt falsche Ausdrucksweise.

      ich teste mal was und dann poste ich nochmal.

      PHP-Code:
      if ( $_POST['pruefungszeit'] == "" && $_POST['beruf'] == "" )
      {
      $sql2 mysql_query("SELECT * FROM auszubildende");
      }

      elseif ( 
      $_POST['pruefungszeit'] == $row['pruefungszeit'] && $_POST['beruf'] == "")
      {
      $sql2 mysql_query("SELECT * FROM auszubildende WHERE pruefungszeit = '".$_POST['pruefungszeit']."' ");
      }

      elseif ( 
      $_POST['pruefungszeit'] == "" && $row['beruf'] == $_POST['beruf'] )
      {
      $sql2 mysql_query("SELECT * FROM auszubildende WHERE beruf = '".$_POST['beruf']."' ");
      }

      elseif ( 
      $_POST['pruefungszeit'] == $row['pruefungszeit'] && $_POST['beruf'] == $row['beruf'] )
      {
      $sql2 mysql_query("SELECT * FROM auszubildende WHERE beruf = '".$_POST['beruf']."' AND pruefungszeit = '".$_POST['pruefungszeit']."' ");

      die erste abfrage geht, aber die anderen "elseif" nicht

      wenn ich die letzte abfrage zu einer elseumbaue dann funktioniert diese auch aber die elseif immernoch nicht
      also des hat nich so ganz geklappt

      der sagt mir für meine
      PHP-Code:
      while($row2 mysql_fetch_array($sql2)) 
      Warning: mysql_fetch_array() expects parameter 1 to be resource, null given

      also denke ich mal er findet nichts in der db aber er muss ja was finden, was in den dropdownlisten steht, da diese einträge ja aus der selben DB kommen oder wo ist mein denkfehler?

      die logik scheint mir richtig

      Kommentar


      • #4
        -beitrag bitte entfernen-

        Kommentar


        • #5
          Zitat von Andre3000 Beitrag anzeigen
          Warning: mysql_fetch_array() expects parameter 1 to be resource, null given

          also denke ich mal er findet nichts in der db aber er muss ja was finden, was in den dropdownlisten steht, da diese einträge ja aus der selben DB kommen oder wo ist mein denkfehler?
          Und ich denke, mysql_fetch_array hätte gerne eine gültige Resource anstatt NULL, um zu überprüfen ob Ergebnisse vorliegen.

          Du hast einen Fehler in einer Abfrage.. benutze mysql_error() um herauszufinden, wo...
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar


          • #6
            mysql_error(); ist mir bekannt
            allerdings hab ich grad versucht es mal einzubauen, aber ne meldung gibt es mir nicht was ich sehr seltsam finde oO

            habs überall mal hingesetzt ins skript ich ralls nich oO

            Kommentar


            • #7
              Dann zeig deinen Code...
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                hier der code:
                (ist nurn schnippsel aber alles was benötigt wird)
                habs jetzt mal mit !isset versucht,
                läuft aber aufs gleiche hinaus


                PHP-Code:
                <meta http-equiv="Content-Type" content="text/html; charset=iso8859-1">
                <link rel="icon" href="pictures/favicon.ico" type="image/ico">
                <?php
                $mysqluser 
                'admin';
                $mysqlpasswd '1223454';
                $mysqlhost 'localhost';
                $database 'azubi_data_csv';

                mysql_connect ($mysqlhost$mysqluser$mysqlpasswd) or die('ERROR!'); 
                mysql_select_db ($database);


                echo (
                '
                <html>
                <head>
                <title>Auswertung</title>
                <link rel="stylesheet" type="text/css" href="../data/style.css">
                <script src="../data/script.js" type="text/javascript"></script>
                </head>
                <body>
                <form action="test.php" method="post" name="checkliste">
                <a href="http://www.php.de/startseite.php" border="0"><input type="button" name="zurueck" value="Startseite"></a>
                <div class="rahmen2">
                <table align="center" style="border: 1px solid black;border-collapse:collapse;">
                <center><h3>Checkliste:</h3></center>
                <center><input type="submit" name="suchen" value="sortieren"></center>

                <tr>
                    <td>PI-Nr:</td>
                    <td>Vorname:</td>
                    <td>Name:</td>
                    <td>Beruf:</td>
                    <td>Prüfungszeit:</td>
                </tr>
                <tr>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td>
                <select name="beruf">
                <option value=""></option>
                '
                );

                $sql mysql_query("SELECT DISTINCT beruf FROM auszubildende");
                while(
                $row mysql_fetch_array($sql))
                {
                echo(
                '
                        <option value='
                .$row['beruf'].'>'$row['beruf'] .'</option>
                '
                );
                }

                echo(
                '
                </select></td>
                <td>
                <select name="pruefungszeit">
                <option value=""></option>
                '
                );

                $sql mysql_query("SELECT DISTINCT pruefungszeit FROM auszubildende");
                while(
                $row mysql_fetch_array($sql))
                {
                echo(
                '
                        <option value='
                .$row['pruefungszeit'].'>'$row['pruefungszeit'] .'</option>
                '
                );
                }

                echo(
                '
                </select></td>
                </tr>

                '
                );

                $row mysql_fetch_array($sql);
                //------------------------START Tabellenfilterung------------------------
                if ($_POST['pruefungszeit'] == "" && $_POST['beruf'] == "")
                {
                $sql2 mysql_query("SELECT * FROM auszubildende");
                }

                elseif ( 
                $_POST['pruefungszeit'] == $row['pruefungszeit'] && !isset($_POST['beruf']))
                {
                $sql2 mysql_query("SELECT * FROM auszubildende WHERE pruefungszeit = '".$_POST['pruefungszeit']."' ");
                }

                elseif ( !isset(
                $_POST['pruefungszeit']) && $row['beruf'] == $_POST['beruf'] )
                {
                $sql2 mysql_query("SELECT * FROM auszubildende WHERE beruf = '".$_POST['beruf']."' ");
                }
                //elseif ( $_POST['pruefungszeit'] == $row['pruefungszeit'] && $_POST['beruf'] == $row['beruf'] )
                else
                {
                $sql2 mysql_query("SELECT * FROM auszubildende WHERE beruf = '".$_POST['beruf']."' AND pruefungszeit = '".$_POST['pruefungszeit']."' ");
                }

                //------------------------ENDE Tabellenfilterung------------------------

                while($row2 mysql_fetch_array($sql2))
                {
                if (
                $row2['flag']==0)
                {
                echo (
                '
                <tr style="color:red;">
                '
                );
                }
                else
                {
                echo (
                '
                <tr style="color:green;">
                '
                );
                }
                echo (
                '
                <td>'
                .$row2[pinr].'</td>
                <td>'
                .$row2[vorname].'</td>
                <td>'
                .$row2[name].'</td>
                <td align="center">'
                .$row2[beruf].'</td>
                <td>'
                .$row2[pruefungszeit].'</td>
                <td><a href="druckansicht.php?action='
                .$row2['pinr'].'"><img src="http://www.php.de/pictures/printer.png" border="0"></a></td>
                </tr>    
                '
                );
                }
                echo(
                '
                </table>
                <table align="center" style="border: 1px solid black;border-collapse:collapse;">
                <br><br>
                <tr>
                    <td bgcolor="red" style="color:red;">...........</td>
                    <td>= nicht erledigt!</td>
                </tr>
                <tr>
                    <td bgcolor="green" style="color:green;">...........</td>
                    <td>= erledigt!</td>
                </tr>

                </table>
                </div>
                </body>
                </html>
                '
                );

                ?>

                Kommentar


                • #9
                  Man sieht schon am Highlighting, das da was nicht stimmt...

                  ist das dein REALER Code oder hast du den abgetippt fürs Forum?
                  Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                  Kommentar


                  • #10
                    wie beschrieben war nurn schnippsel
                    hab jetzt mal den gesamten code gepostet

                    mit dem code bekomme ich keinen mysql_fetch fehler mehr

                    da er sich jetzt nurnoch auf die if+else bezieht und die elseif einfach missachtet

                    auch die filterung mit der if+else funktioniert.

                    sobald ich die letzte else wieder zur elseif umforme bin ich wieder da wo ich am anfang war mit dem fehler

                    Kommentar


                    • #11
                      Zitat von Andre3000 Beitrag anzeigen
                      wie beschrieben war nurn schnippsel
                      hab jetzt mal den gesamten code gepostet

                      mit dem code bekomme ich keinen mysql_fetch fehler mehr

                      da er sich jetzt nurnoch auf die if+else bezieht und die elseif einfach missachtet

                      auch die filterung mit der if+else funktioniert.

                      sobald ich die letzte else wieder zur elseif umforme bin ich wieder da wo ich am anfang war mit dem fehler
                      Schonmal dran gedacht, das if/elseif auch dazu führen kann, das KEIN Zweig angesprungen wird (was bei dir passiert ist).

                      Wenn 1. Bedinung nicht erfüllt..
                      checke 2. Bedingungen, wenn die nicht erfüllt..
                      checke 3. Bedingungen (auch nicht erfüllt.. und nu?)
                      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                      Kommentar


                      • #12
                        danke für deine hilfe aber nen kollege hat den fehler gefunden.

                        Ist doch schwachsinnig wenn ich etwas was ich aus der Datenbank ziehe und das wiederum mit den selben Daten vergleiche oder?

                        Programm läuft!

                        Kommentar

                        Lädt...
                        X