Mit 2 Selectboxen Filtern

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

  • #16
    zeig mal den relevanten Code und ggf. ein Online-Beispiel

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #17
      Also hier ist mal das Online Beispiel mit integriertem onchange

      Test

      Und hier ist der relevante Quelltext

      PHP-Code:
      <?php
      header
      ('Content-Type: text/html; charset=UTF-8');
      include (
      "../db/connect1.php");
      if(!isset(
      $_POST['ok']) && (!isset($_POST['action']))){
      // DIE NEW PHP IST NUR DAS SQL STATEMENT
          
      require_once("new.php");
      $posi .="ORDER BY tore DESC";
      $res mysql_query($posi) or die(mysql_error());
      include_once (
      "middle.php");
      };
      if(isset(
      $_POST['ok'])){
      switch(
      $_POST['action']){
      case 
      '1':{
      //Tore
      require_once ("new.php");
      $posi .= "ORDER BY Tore DESC";
      $res mysql_query($posi) or die(mysql_error());
      include_once (
      "middle.php");
      break;
      }
      Die middle.php sieht dann so aus

      HTML-Code:
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset= utf-8" />
      <title>Test</title>
      <link rel="stylesheet" type="text/css" href="../style/css.css" media="all"/>
      </head>
      <body>
      Login:
      <input type="button" name="dritte" value="Login" onclick="self.location.href='../login/'" />
      <hr />
      Hier kannst Du Dir die Tabelle nach verschiedenen Kriterien filtern:<br/>
      <hr />
      <form action = "<?php $_SERVER['SCRIPT_NAME']?>" name ="filt" method = "post">
      
      <select name="action" onchange="document.filt.submit();"  >
      <optgroup label="Allgemeine Filter">      
        <option value="1">Tore</option>
        <option value="2">7-Meter</option>
      </optgroup>
      <optgroup label="Einzelne Positionen">
        <option value="3">LA</option>
        <option value="4">RL</option>
        <option value="5">RM</option>
        <option value="6">RR</option>
        <option value="7">RA</option>
        <option value="8">KM</option>
        <option value="9">TW</option>
      </optgroup>
      </select>
      <?php
      $sele = '<select name="team" size="1">';
      $stg = (0 == $rows)? 'select = "selected"' :'';
      $sele.= '<option value ="">-----</option>';
      while($rows = mysql_fetch_array($ateam)){
      $se = ($rows[0] == $_POST['action']) ?  "selected='selected'":  '';
      $sele.= '<option value ="'.$rows[0].'" '.$se.'>' . $rows[0] . '</option>';
          }
      $sele.= '</select>';
      echo $sele;
      ?>
      <input type="submit" name="ok" value="Filter anwenden"/> 
      </form>  
      <hr />
      <div class="div1" /><table width="100%">
      <tr bgcolor="#999999">
          <td><b>Platz:</b></td>
          <td><b>Nachname:</b></td>
          <td><b>Vorname:</b></td>
          <td><b>Verein:</b></td>
          <td><b>Position:</b></td>
          <td><b>Erzielte Tor:</b></td>
          <td><b>7-Meter:</b></td>
          <td><b>Spiele:</b></td>
      </tr>
      <?php 
      while($row = mysql_fetch_object($res)){ 
      //Platzierung setzen
      $platz = $platz +1;
      ?>
      <tr>
      <td><?php echo $platz?></td>
      <td><?php echo $row->nachname ?></td> 
      <td><?php echo $row->vorname ?></td>
      <td><?php echo $row->team ?></td>
      <td><?php echo $row->position ?></td>
      <td><?php echo $row->tore ?></td>
      <td><?php echo $row->sieben ?></td>
      <td><?php echo $row->spiele ?></td>
      </tr>
      <?php }    ?>
      </table>
      </body>
      </html>

      Kommentar


      • #18
        Deine includes scheinen nicht korrekt zu. Da hilft nur eins: Testausgaben! Und zwar so lange, bis du den Fehler gefunden hast.

        Peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #19
          So ich habe dann nochmals alles ein wenig überarbeitet und verschiedene Sachen ausprobiert.

          Ich hatte zum Schluß dann mal folgende Codezeile auskommentiert

          PHP-Code:
          //if(isset($_POST['ok'])){ 
          Also quasi die Überprüfung ob der Button gedrückt wurde oder nicht und schon funktionierte es mit der ersten Selectbox.

          Das ist erstmal gut.
          Nur habe ich jetzt noch ein Verständnisproblem.

          Ich habe ja nun meine Daten nach Selectbox 1 gefiltert. Nur wie bringe ich das jetzt reell mit der 2 Selectbox in Verbindung?

          Ich "fange" ja die statischen Daten in einem Switch/Case Konstrukt ab und gebe Sie dann per Schleife aus.
          Da ich aber in der 2 Selectbox die Daten dynamisch aus der DB hole habe ich diese Möglichkeit ja gar nicht..

          mmmh..

          Kommentar


          • #20
            Es muss doch irgendeine Relation von den value-Werten des ersten select mit den Daten in der Db geben. Oder?

            Peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #21
              Klar gibt es den.
              DB Aufbau ist folgender Auszugsweise
              Table Spieler id, vorname, nachname, position_id, verein_id
              Table Position id, position
              Table Verein id, verein

              Im ersten Select stehen ja die Positionen, und Daten der Spieler,
              und im zweiten Select werden die einzelnen Spieler der Vereine gelistet.

              Hier dann über den ForeignKey verein_id "verknüpft".

              Laut Deiner Fragestellung gehe ich davon aus, dass hier ein SQL Statement des Rätsels Lösung ist?

              Kommentar


              • #22
                Zitat von Bravestar2010 Beitrag anzeigen
                Laut Deiner Fragestellung gehe ich davon aus, dass hier ein SQL Statement des Rätsels Lösung ist?
                Was sonst?

                Peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #23
                  Das habe ich schon versucht, komme aber da auch nicht weiter.

                  Die Ausgaben der ersten Selectbox stützt sich ja auch auf SQL Statements.

                  Habe es nun mal mit UNION versucht, aber komme da irgendwie nicht weiter.
                  Vielleicht hast Du ja noch einen guten Vorschlag?
                  Hier mal mein bisher versuchtes Beispiel in verkürzter Form

                  PHP-Code:
                  SELECT
                  id
                  ,
                  vorname,
                  nachname,
                  spieler.team_id,
                  team.team,
                  spieler.position_id,
                  position.position
                  FROM
                  spieler
                  LEFT JOIN
                  position
                  ON spieler
                  .position_id position.id
                  LEFT JOIN
                  team
                  ON spieler
                  .team_id team.id
                  WHERE
                  position_id 
                  '1' 
                  ORDER BY tore DESC
                  // Bis hierhin klappt alles. 
                  // Bedeutet dann also: Gib mir alle Spieler der Position 1 aus

                  // Die zweite einzelne Ausgabe wäre
                  SELECT
                  id
                  ,
                  vorname,
                  nachname,
                  spieler.team_id,
                  team.team,
                  spieler.position_id,
                  position.position
                  FROM
                  spieler
                  LEFT JOIN
                  position
                  ON spieler
                  .position_id position.id
                  LEFT JOIN
                  team
                  ON spieler
                  .team_id team.id
                  WHERE
                  team 
                  '".$_POST['team']."'
                  ORDER BY tore DESC

                  //Das klappt auch als einzelne Abfrage
                  //Bedeutet dann also: Gib mir alle Spieler des ausgewählten Teams der //Selectbox aus. 
                  Wie bringe ich das denn jetzt auf einen Punkt?
                  Also zeige mir alle Spieler eines ausgewählten Teams nach ausgewählter Postion ?

                  Kommentar

                  Lädt...
                  X