Select filter?

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

  • Select filter?

    Hallo und nen guten Abend

    Ich suche eine Liste mit allen Select Filtern im Netz. Weis Jemand wo man diese in deutsch finden kann?
    (Select Filter = zB SELECT * FROM db_tabelle WHERE id='$id' ) Da wäre WHERE der Filter, es gibt ja noch ne menge andere Filter aber ich hab leider noch kein passendes gefunden für mein Problem.

    Ich könnte natürlich auch mal mein Problem schildern:

    Eine MySQL Tabelle mit folgenden Spalten

    TABSPALTE = zB DS
    id = 2
    serie = TCV
    rubrik = 2
    worin = string (2 3 17 43 6) {dieser string wurde aus einem array gebildet}
    was = string (1 4 26 5) {dieser string wurde aus einem array gebildet}
    wie = 3
    bg = bild.jpg
    stand = 11234343459 (Timestamp)

    so jetzt mochte ich dem user ein Formular anbieten, wo er checkboxen anklicken kann und dessen Wert aus zahlen besteht.
    Eine Gruppe dieser Checkboxen heißt worin[] und erzeugt ein array. Die zweite gruppe heißt was[] und erzeugt ebenfalls ein array. Es gibt noch eine dritte gruppe die wie heißt, aber mit radio-boxen erstellt wird und daher nur ein wert haben kann. Soweit alles klar.

    Nun soll in einer abfrage nur diese Datensätze angezeigt werden, wo 'wie'= '$wie' ist und die Zahlen aus dem Array-Worin auch in dem String-Worin vorkommen und auch die Zahlen aus dem Array-Was in dem String-Was vorkommt. Dabei können in dem String viel mehr Zahlen stehen als in dem Array oder gar umgekehrt, und das macht ua. die Sache so kompliziert.
    Meine Idee
    PHP-Code:
    $sql="SELECT * FROM m_serie WHERE wie='$wie' AND worin IN '$worin' AND was IN '$was' ORDER BY serie"
    Nur das gibt kein ergebnis zurück. Nun suche ich halt eine andere Filterfunktion.

    wer kann mir helfen.....

    lorenZ DEKker

  • #2
    ich könnte wetten ...
    - du benutzt kein mysql_error()
    - prüfst nicht, was in $sql steht
    - hast "WHERE ... IN()" nicht verstanden

    ... aber ich kann mich ja irren
    Kissolino.com

    Kommentar


    • #3
      Du hast recht

      ich hab keine mysql-error() funktion drin und ich hab wohl auch nicht Where ... IN() funktion nicht verstanden..... bin halt schon etwas älter und ..... aber vieleicht bist du so nett und erklärst es mir ?
      wäre super !

      Lorenz Dekker

      Kommentar


      • #4
        Original geschrieben von zdek
        bin halt schon etwas älter
        ************taner-Seite-JRG ... erstellt am: März / 2004
        OffTopic:
        wenn das die klasse deines sprösslings ist, bist du entweder ein später vater
        oder jünger als ich. im letzteren fall zieht die entschuldigung "alters-demenz" nicht


        @topic
        PHP-Code:
        echo $sql
        ^^ ausgabe?
        PHP-Code:
        mysql_query($sql) or die(mysql_error()); 
        ^^ ausgabe?

        bei "... spalte IN(...)" sollte afaik eine komma-separierte liste stehen, keine leerzeichen-separierte.
        Kissolino.com

        Kommentar


        • #5
          An Wurzel
          Ok das war auch nicht ganz ernst gemeint mit dem
          ALTER.

          Ich werde dies morgen früh mal testen , bin jetzt seit ca 17 stunden unterwegs gewesen...

          werde mich dann nochmal melden so, oder so

          danke
          lorenz dekker

          Kommentar


          • #6
            Guten Morgen

            So ich habe getestet ob es funzt. Aber irgendwie funzt es nicht.

            Folgenden Code hab ich jetzt benützt:
            PHP-Code:
            // Aus Array ein String machen
            $wastext implode(',',$was);
            // Testanzeige von $wastext
            echo "$wastext<br><br>";

            // Aus Array ein String machen
            $worintext implode(',',$worin);
            // Testanzeige von $worin
            echo "$worintext<br><br>";

            $sql="SELECT * FROM m_serie WHERE wie='$wie' AND worin IN '$worintext' AND was IN '$wastext' ORDER BY serie";
            echo 
            "$sql<br>"// Ausgabe von $sql
            $result=mysql_query($sql) or die(mysql_error()); 
            Dabei kommt dan folgende Anzeige:
            1,3 // Testanzeige von $wastext

            1,2,3 // Testanzeige von $worintext

            // ausgabe von echo $sql
            SELECT * FROM m_serie WHERE wie='2' AND worin IN '1,2,3' AND was IN '1,3' ORDER BY serie

            // Errormeldung
            You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''1,2,3' AND was IN '1,3' ORDER BY serie' at line 1

            Fazit:
            1. Das Umwandeln von den Arrays $worin und $was in $worintext und $wastext funzt
            2. Die Ausgabe von $sql finde ich eigendlich auch in ordnung
            'AND worin(spaltennamen) IN string(worintext) AND was(spaltenname) IN string($wastext)
            3. Aber die Errormeldung sagt das in der $sql ein fehler in der syntax im bereich " '1,2,3' (string $worintext) AND was IN '1,3' (string $wastext) " ist

            Was löst den Fehler aus ?
            1. Soweit ich weis müssen Variablen in der Abfrage mit einfachen hochkommas seperiert werden( '$variable' )
            2. Soweit ich weis, muss der aufbau so sein (WHERE spalte IN '$variable' (bedingung)) und nicht (WHERE '$variable' IN spalte)
            3. Geht es vielleicht nur wenn man kein String aus dem Array macht?
            4. Oder ich bin zu blöd

            Nur so finde ich auch keine lösung
            Gibt es nicht eine Website wo die WHERE functionen alle beschrieben werden (in deutsch)?

            lorenz Dekker

            Kommentar


            • #7
              http://dev.mysql.com/doc/mysql/de/select.html und
              http://dev.mysql.com/doc/mysql/de/co...operators.html
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                @ Mr Happiness

                Ja diese Seite hab ich inzwischen auch gefunden, aber leider wird die Syntax da auch nicht genau beschrieben.

                Inzwischen habe ich auch gelesen das die Vision von MySQL min. 4.1 sein soll. Meine Vision ist aber 4.0.20 . Kann ich denn evtl mit Like arbeiten oder funzt das auch nur bei einer höheren Vision?

                Welche Möglichkeit hat man dann überhaupt noch?

                Gruß
                Lorenz Dekker

                Kommentar


                • #9
                  da steht auch
                  mysql> select 'wefwf' IN (0,3,5,'wefwf');
                  funktioniert sogar mit mysql 3.23
                  Kissolino.com

                  Kommentar


                  • #10
                    Es heißt Version, nicht Vision.
                    Original geschrieben von zdek
                    @ Mr Happiness

                    Ja diese Seite hab ich inzwischen auch gefunden, aber leider wird die Syntax da auch nicht genau beschrieben.
                    Ich finde schon. Da sind sogar tolle Beispiel...

                    Und wenn keine Visionsangabe da steht, funktioniert's auch mit Version 3.x
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Na gut , dann aufs neue .....

                      Lorenz Dekker

                      Kommentar


                      • #12
                        Hab ein paar Fragen um das Problem einzugrenzen.

                        1. Ist es korrekt, dass es "SELECT * FROM tabelle WHERE db-spalte IN $variable "; ist oder $variable IN spalte?
                        (so müsste es eigendlich logischer sein, zumindest für mein Problem)

                        2. Es werden im Beispiel der MySQL Seite, Klammern gesetzt und die Komma-separierte Zahlenfolge ist ohne Hochkommas aber der String ist in Hochkommas, bei mir ist es ja inzwischen so, dass in der DB -Spalte ein String ist und auch die Variable ein String ist.

                        Könnte mir mal jemand eine Korrekte Select-Abfrage mit IN (als Beispiel wie unter1.) hier posten?

                        Lorenz Dekker

                        Kommentar


                        • #13
                          PHP-Code:
                          $sql "SELECT * FROM tabelle WHERE db-spalte IN (1,2,3,4)";
                          //^^ integer werte

                          $sql "SELECT * FROM tabelle WHERE db-spalte IN ('a','b','c','d')";
                          //^^ strings

                          $sql "SELECT * FROM tabelle WHERE db-spalte IN (1,'b',3,'d')";
                          //^^ gemischt 
                          Kissolino.com

                          Kommentar


                          • #14


                            Ich bin am verzweifeln !

                            Kann man überhaupt eine SELECT-Abfrage machen, wo mit einem String (zusammengesetzt aus den werten eines Arrays mit implode) , ein anderen String (ebenso zusammengesetzt) mittels WHERE ... IN ... abfragen?
                            PHP-Code:
                            "SELECT * FROM tabelle WHERE db-spalte (beinhaltet STRING) IN variable (beinhaltet STRING) ORDER BY serie"
                            Verglichen werden soll dabei, ob ein Teilwert der variablen-string (1,2,3,4) z.B. 1 und 4 auch in dem db-spalte-string (1,2,3,5,7) vorkommt!

                            So damit man jetzt mal selber testen kann.
                            1. meine DB-Tabelle "m_serie"
                            Code:
                            #
                            # Tabellenstruktur für Tabelle `m_serie`
                            #
                            
                            CREATE TABLE m_serie (
                              id int(11) NOT NULL auto_increment,
                              serie varchar(20) NOT NULL default '',
                              rubrik varchar(80) NOT NULL default '',
                              worin varchar(30) NOT NULL default '',
                              was varchar(30) NOT NULL default '',
                              wie varchar(30) NOT NULL default '',
                              bg varchar(40) NOT NULL default '',
                              stand varchar(20) NOT NULL default '',
                              PRIMARY KEY  (id)
                            ) TYPE=MyISAM;
                            
                            #
                            # Daten für Tabelle `m_serie`
                            #
                            
                            INSERT INTO m_serie VALUES (34, 'TCNV', '2', '1,2,3,4,6', '1,2,3', '1', 'bg_TCNV.jpg', '1112944690');
                            INSERT INTO m_serie VALUES (35, 'DC SV 5000', '8', '1,2,3,4,5,6', '1,2,3,6', '3', 'bg_DC-SV-5000.jpg', '1112944792');
                            INSERT INTO m_serie VALUES (36, 'TCV', '2', '1,2,3,4,5', '1,2,3,4', '1', 'bg_TCV.jpg', '1112945014');
                            INSERT INTO m_serie VALUES (39, 'test', '3', '1 2 4 5', '1 2 3 4 5', '2', 'bg_TCni.jpg', '1112820226');
                            und mein seite anzeige.php
                            PHP-Code:
                            <html>
                            <head>
                            <title>test</title>
                            </head>
                            <body>
                            <?php
                             
                            // Verbindung zur Datenbank herstellen
                            include("inc/connect.inc.php");

                            // Aus Array ein String machen
                            $wastext implode(',',$was);
                            // Testanzeige von $wastext
                            echo $wastext;
                            echo 
                            "<br>";

                            // Aus Array ein String machen
                            $worintext implode(',',$worin);
                            // Testanzeige von $worin
                            echo $worintext;
                            echo 
                            "<br>";

                            $sql="SELECT * FROM m_serie WHERE wie='$wie' AND worin IN ($worintext) AND was IN ($wastext) ORDER BY serie";
                            //  $sql ="SELECT * FROM m_serie WHERE wie='$wie' AND worin LIKE '%".$worintext."%' AND was LIKE '%".$wastext."%' ORDER BY serie";
                            //    $sql ="SELECT * FROM m_serie WHERE wie='$wie' AND worin LIKE '$worintext' AND was LIKE '$wastext' ORDER BY serie";
                                
                            echo "$sql<br>";
                                
                            $result=mysql_query($sql) or die(mysql_error());
                                  if (
                            mysql_Num_Rows($result) > 
                                     {
                                         while (
                            $row mysql_fetch_array ($result))
                                             { 
                                             echo
                            "
                            ID = 
                            $row[id]<br>
                            Serie = 
                            $row[serie]<br>
                            Rubrik_ID = 
                            $row[rubrik]<br>
                            Worin soll die Ware verpackt werden:<br>
                            Verwendungszwecke(Worin) = 
                            $row[worin]<br>
                            Was für Ware soll verpackt werden:<br>
                            Verwendungszwecke(Was) = 
                            $row[was]<br>
                            Wie soll die Ware verpackt werden (manuell, halbautom., automatisch)<br>
                            Verwendungszwecke (Wie) = 
                            $row[wie]<br>
                            Hintergrundbild = 
                            $row[bg]<br>
                            Zeitstempel der Erstellung = 
                            $row[stand]<br>
                            <hr noshade>"
                            ;
                                               }
                                     }
                            ?>
                            </body>
                            </html>
                            und nun das Auswahlmenü für den User:
                            auswahl.php

                            PHP-Code:
                            <html>
                            <
                            head>
                            <
                            title>auswahl</title>
                            <
                            meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                            </
                            head>
                            <
                            body>
                            <
                            form name="form1" method="post" action="anzeige.php">
                              <
                            table border="0" cellpadding="0" cellspacing="1" bgcolor="#000000">
                                <
                            tr
                                  <
                            td align="center" bgcolor="#333333"><font color="#FFFFFF" size="2"><strong>Worin soll die 
                                    
                            ware verpackt werden?</strong></font> </td>
                                </
                            tr>
                                <
                            tr
                                  <
                            td><table width="300" border="0" cellpadding="3" cellspacing="0" bgcolor="#FFFFFF">
                                      <
                            tr
                                        <
                            td width="25">
                            <
                            input name="worin[]" type="checkbox" id="worin[]" value="1"></td>
                                        <
                            td>S&auml;cke</td>
                                      </
                            tr>
                                      <
                            tr
                                        <
                            td width="25">
                            <
                            input name="worin[]" type="checkbox" id="worin[]" value="2"></td>
                                        <
                            td>Beutel</td>
                                      </
                            tr>
                                      <
                            tr
                                        <
                            td width="25">
                            <
                            input name="worin[]" type="checkbox" id="worin[]" value="3"></td>
                                        <
                            td>Folien</td>
                                      </
                            tr>
                                      <
                            tr
                                        <
                            td width="25">
                            <
                            input name="worin[]" type="checkbox" id="worin[]" value="4"></td>
                                        <
                            td>Netze</td>
                                      </
                            tr>
                                      <
                            tr
                                        <
                            td width="25">
                            <
                            input name="worin[]" type="checkbox" id="worin[]" value="5"></td>
                                        <
                            td>Naturdarm</td>
                                      </
                            tr>
                                      <
                            tr
                                        <
                            td width="25">
                            <
                            input name="worin[]" type="checkbox" id="worin[]" value="1"></td>
                                        <
                            td>Kunstdarm</td>
                                      </
                            tr>
                                    </
                            table></td>
                                </
                            tr>
                                <
                            tr
                                  <
                            td bgcolor="#FFFFFF">&nbsp;</td>
                                </
                            tr>
                                <
                            tr
                                  <
                            td align="center" bgcolor="#999999"><font size="2"><strong>Was soll verpackt 
                                    werden
                            ?</strong></font></td>
                                </
                            tr>
                                <
                            tr
                                  <
                            td><table width="300" border="0" cellpadding="3" cellspacing="0" bgcolor="#FFFFFF">
                                      <
                            tr
                                        <
                            td width="25">
                            <
                            input name="was[]" type="checkbox" id="was[]" value="1"></td>
                                        <
                            td>Wurst</td>
                                      </
                            tr>
                                      <
                            tr
                                        <
                            td width="25">
                            <
                            input name="was[]" type="checkbox" id="was[]" value="2"></td>
                                        <
                            td>Fleisch</td>
                                      </
                            tr>
                                      <
                            tr
                                        <
                            td width="25">
                            <
                            input name="was[]" type="checkbox" id="was[]" value="3"></td>
                                        <
                            td>Schinken</td>
                                      </
                            tr>
                                      <
                            tr
                                        <
                            td width="25">
                            <
                            input name="was[]" type="checkbox" id="was[]" value="4"></td>
                                        <
                            td>K&auml;se</td>
                                      </
                            tr>
                                      <
                            tr
                                        <
                            td width="25">
                            <
                            input name="was[]" type="checkbox" id="was[]" value="5"></td>
                                        <
                            td>ObstGem&uuml;se</td>
                                      </
                            tr>
                                      <
                            tr
                                        <
                            td width="25">
                            <
                            input name="was[]" type="checkbox" id="was[]" value="1"></td>
                                        <
                            td>Fisch</td>
                                      </
                            tr>
                                    </
                            table></td>
                                </
                            tr>
                                <
                            tr
                                  <
                            td bgcolor="#FFFFFF">&nbsp;</td>
                                </
                            tr>
                                <
                            tr
                                  <
                            td align="center" bgcolor="#CCCCCC"><font size="2"><strong>Wie soll die 
                                    
                            Ware verpackt werden?</strong></font></td>
                                </
                            tr>
                                <
                            tr
                                  <
                            td><table width="300" border="0" cellpadding="3" cellspacing="0" bgcolor="#FFFFFF">
                                      <
                            tr
                                        <
                            td width="25"> <input name="wie" type="radio" value="1" checked></td>
                                        <
                            td>manuell</td>
                                      </
                            tr>
                                      <
                            tr
                                        <
                            td width="25"> <input type="radio" name="wie" value="2"></td>
                                        <
                            td>halbautomatisch</td>
                                      </
                            tr>
                                      <
                            tr
                                        <
                            td width="25"> <input type="radio" name="wie" value="3"></td>
                                        <
                            td>automatisch</td>
                                      </
                            tr>
                                    </
                            table></td>
                                </
                            tr>
                              </
                            table>

                            <
                            input name="go" type="submit">
                            </
                            form>
                            </
                            body>
                            </
                            html
                            Es könnte sein das jetzt hier kleine Tippfehler drin sind!
                            Jetzt noch ein paar Infos, eigendlich sind die zahlen, bei worin, was und wie, die id´s der Datensätze der DB-Tabellen m_worin, m_was, m_wie, hab hier aber einfacherweise feste Werte gesetzt, die aber identisch mit den werten aus den Tabellen sind!

                            Lorenz Dekker
                            Zuletzt geändert von zdek; 08.04.2005, 16:52.

                            Kommentar


                            • #15
                              *autsch*

                              schau dir mal hier im forum das sticky von mrhappiness an => "Joins".

                              versteh es. setze es auf dein problem um, d.h. überarbeite deine datenbank, normalisiere deine tabellen, lege passende tabellen für rubriken, was, wie, wo & co an und arbeite mit den joins. alles andere ist hampelei.
                              Kissolino.com

                              Kommentar

                              Lädt...
                              X