Mehrere Select-Auswahllisten auswerten

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

  • Mehrere Select-Auswahllisten auswerten

    Hallo Zusammen

    Ich bin ein PHP-Newbie, hab mir aber dank google schon ein paar Sachen selber lernen können...

    Zu meinem Problem: Ich habe ne DB mit 2 Spalten: Name & Brand (Marke, bin ja kein Pyromane...)

    Nun lese ich die Einträge in 2 Select-Auswahllisten und lösche doppelte Einträge.

    http://www.duckszone.com/joomla/mosa..._advanced2.php

    Ich werde noch eine leere Zeile hinzufügen, damit der User auch gar keine Auswahl treffen kann.

    Nun möchte ich, dass der Benutzer seine Auswahl trifft, und ich nun aus der DB nur die Zeilen auslese, welche beiden (wenn nur eine Auswahl getroffen wird, natürlich nur eine) ausgewählten Listenwerten entspricht.

    Nur...wie mach ich das? Muss ich das an ne neue PHP-Seite übergeben?

  • #2
    Kannst du dein Problem ein bischen konkretisieren?

    Generell:

    auf der anzeigeseite machst du ein SELECT auf die Tabelle mit der entsprechenden Bedingung, die hast du gerade genannt (WHERE x = ... und y = ...) das wars schon.

    Kommentar


    • #3
      Klar, sorry...ich bin jetzt auch schon ein Stück weiter...

      $auswahl_name=$_GET['name'];
      $auswahl_brand=$_GET['brand'];

      echo("$name");

      $username="***";
      $password="***";
      $database="***";

      mysql_connect(localhost,$username,$password);
      @mysql_select_db($database) or die( "Unable to select database");
      $query="SELECT * FROM autogramme_tradelist WHERE Name='$auswahl_name' AND Brand='$auswahl_brand'";
      $result=mysql_query($query);

      // $num=mysql_numrows($result);

      mysql_close();

      $Brand=mysql_result($result,"Brand");
      $Name=mysql_result($result,"Name");
      $Sub_Brand=mysql_result($result,"Sub-Brand");
      $Year=mysql_result($result,"Year");
      $Team=mysql_result($result,"Team");
      $Color=mysql_result($result,"Color");

      echo("<table border=0 cellspacing=0 cellpadding=2 width=500>\n");


      // Tabellenüberschrift generieren
      echo("<TR>\n" .
      "<TD> Player</TD>\n" .
      "<TD> Brand</TD>\n" .
      "<TD> Sub-Brand</TD>\n" .
      "<TD> Year</TD>\n" .
      "<TD> Team</TD>\n" .
      "<TD> Color</TD>\n" .
      "</TR>\n");


      while ( $row = mysql_fetch_array($result)) {
      echo("<TR>\n" .
      "<TD>" . $row["Name"] . "</TD>\n" .
      "<TD>" . $row["Brand"] . "</TD>\n" .
      "<TD>" . $row["Sub_Brand"] . "</TD>\n" .
      "<TD>" . $row["Year"] . "</TD>\n" .
      "<TD>" . $row["Team"] . "</TD>\n" .
      "<TD>" . $row["Color"] . "</TD>\n" .
      "</TR>\n");
      }
      echo("</TABLE>\n");


      ?>
      Nun funktioniert die Abfrage...aber wenn ich nun 2 Einträge hätte, die angezeigt werden müssten, erscheint nur einer...wenns einer wäre, erscheint keiner

      z.B.
      Sollte einen Eintrag anzeigen

      Sollte zwei Einträge anzeigen
      Zuletzt geändert von Ducks; 22.07.2006, 16:02.

      Kommentar


      • #4
        Hab den Fehler selbst entdeckt...und gleich nen neuen gefunden

        1. fehler:

        PHP-Code:
        $Brand=mysql_result($result,"Brand");
        $Name=mysql_result($result,"Name");
        $Sub_Brand=mysql_result($result,"Sub-Brand");
        $Year=mysql_result($result,"Year");
        $Team=mysql_result($result,"Team");
        $Color=mysql_result($result,"Color"); 
        musste weg, danach funktionierts...

        2. Neues Problem: Falls ich nun nur einen Wert vorgeben möchte...z.B. nur den Namen. Wie mache ich, dass dies automatisch erkannt wird. Muss ich ne leere Zeile in die DB schreiben, so dass ich nen leeren Suchwert erkennen kann und diesen dann abfangen?
        Zuletzt geändert von Ducks; 22.07.2006, 16:12.

        Kommentar


        • #5
          Jo, und bevor ich mir den letzten Beitrag jetzt duchlese, denkste da jetzt auch erstmal was länger nach und liest zur Abwechslung mal unsere Regeln (z.B. bezgl. PHP-Tags und anderer nützlicher Tipps)

          Kommentar


          • #6
            Mhhh...hab die Regeln gelesen, (inkl. Code-Tags). Und ich habe vorher ziemlich lange nachgedacht, hatte einfach nen Geistesblitz

            Nun steh ich aber richtig auf dem Schlauch. Ich möchte 6x
            PHP-Code:
            WHERE 
            Abfragen benutzen, da ich 6 Listen habe. Da aber bei jeder Auswahlliste auch "all" gewählt werden kann, müsste ich die WHERE dynamisch einfügen lassen können.

            Z.B. wenn ein Benutzer bei 5 Auswahllisten "all" wählt und bei einer ne bestimmte Kategorie...dann müsste ich ja nur 1x WHERE setzen. Geht das dynamisch? Respektive, ich denke mir das es dynamische gehen muss! Aber wie? Muss ich alle Eingaben mit Schlaufen oder IF abfangen?

            Kommentar


            • #7
              if(eintrag1 != all)
              $where.= AND eintrag1 = bla;

              und das ganze dann 6 mal, oder in einer schleife.

              Kommentar


              • #8
                Ich hab das so angepasst, erhalte aber folgende Meldung:
                Parse error: parse error, unexpected '='
                in dieser Zeile:
                PHP-Code:
                $where.= AND eintrag1 bla
                Zudem: Muss das AND da drin sein? Hätte ich dann nicht den Befehl WHERE AND eintrag1=bla?

                Kommentar


                • #9
                  Jo, dann informier dich bitte über pseudocode...
                  OffTopic:
                  du hast nicht wirklich geglaubt, dass ich euch alles in den allerwertesten schiebe?

                  Kommentar


                  • #10
                    Original geschrieben von TobiaZ
                    OffTopic:
                    du hast nicht wirklich geglaubt, dass ich euch alles in den allerwertesten schiebe?
                    Touché

                    Aber das grösste Problem löst ja auch deine Lösung wohl nicht: Ich kann schon 6x ne If -Abfrage machen...aber falls Überall "ALL" gewählt ist, brauche ich gar kein WHERE...und kriege dann trotzdem ne Fehlermeldung

                    Ich muss also rausfinden, ob ich überhaupt ein WHERE brauche, wo ich es einsetzen muss (muss ja in ner IF-Abfrage sein) und wo ich ein dann noch AND einsetzen muss...soviel Aufwand für so wenig Nutzen. Das muss doch irgendwie einfacher gehen...naja...schaun mer mal, was wir noch so in der PHP/MySQL Wundertüte finden.
                    Zuletzt geändert von Ducks; 22.07.2006, 17:35.

                    Kommentar


                    • #11
                      Aber das grösste Problem löst ja auch deine Lösung wohl nicht: Ich kann schon 6x ne If -Abfrage machen...aber falls Überall "ALL" gewählt ist, brauche ich gar kein WHERE...und kriege dann trotzdem ne Fehlermeldung
                      doch.

                      denn wenn 6 mal die if-bedingung nicht zutrifft, dann weiß ich, dass ich kein where brauche. Hab doch gesagt, dass ich nicht alles in den...

                      es gibt natürlich ne ganz schöne sache, nennt sich arrays. da speicherst du alle bedinungen rein
                      if(bla)
                      $where[] = bedingung;

                      if(count(where) > 0)
                      // where wird benötigt.
                      $sql.= $where;
                      Zuletzt geändert von TobiaZ; 22.07.2006, 18:12.

                      Kommentar


                      • #12
                        lol...das mit den arrays krieg ich nicht hin...aber mit nur 45 Zeilen Code gehts jetzt...

                        Kommentar

                        Lädt...
                        X