Array in for-Schleife in einer Datenbank abfragen

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

  • Array in for-Schleife in einer Datenbank abfragen

    Hallo Zusammen!

    Bin grade beim Hacken und habe ein Problem, bei dem ich nicht weiter komme. Vielleicht ist das Grundkonzept ja auch bescheuert und ich merks nur nicht. Habe ein Array mit Worten als Elemente. Jetzt möchte ich eigentlich nur Abragen, ob eines dieser Worte aus dem Array in einer Tabelle vorkommt.

    $wortab = "SELECT gta_act
    FROM gt_act
    WHERE gta_act = '$worte[$i]' ";



    for($i=0; $i<$lg; $i++){
    if (!($wortergeb = @mysql_query ($wortab)))
    echo("<p>Fehler bei der Ausführung der Abfrage: " .
    mysql_error() . "</p>");

    //hier sollte eine Abbruch-Bedingung rein, falls er eine Übereinstimmung findet
    }

    while ($kopf = @mysql_fetch_array($wortergeb)){
    echo ("<p>Übereinstimmung ist " . $kopf["gta_act"] . "</p>");
    }

    Tja, einfach gedacht scheint aber doch komplizierter. Vielleicht setzte ich in dem SELECT ja auch nur das eine oder andere Zeichen verkehrt.

    Bin für jedes Posting dankbar.

    Gruß
    Alex
    Zuletzt geändert von AlexQ; 08.06.2004, 21:56.

  • #2
    lies mal den untertitel von 'codeschnipsel'. da steht was von fertig drin. gell?

    *VERSCHIEB*

    EDIT:
    @Wurzel. du sollst mir nicht vorgreifen.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Re: Array in for-Schleife in einer Datenbank abfragen

      Original geschrieben von AlexQ
      Bin für jedes Posting dankbar.
      OffTopic:
      aber nicht in den codeschnipseln *verschieb*
      Kissolino.com

      Kommentar


      • #4
        schau dir mal im mysql-manual "WHERE spalte IN (...)" in verbindung mit implode() (php-man) an ... könnte helfen.

        @haxe
        nicht vormucken
        Kissolino.com

        Kommentar


        • #5
          Original geschrieben von Wurzel
          @haxe
          nicht vormucken
          du bist nur zu langsam ...

          OffTopic:
          so ..... n8
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Original geschrieben von Abraxax
            du bist nur zu langsam ...
            OffTopic:
            dafür hab ich mehr tags benutzt ... schlaf schön, nougatlippe
            Kissolino.com

            Kommentar


            • #7
              Missverständnis

              @haxe & @wurzel: Sorry erstmal, das ich die Sache ins falsche Archiv gestellt habe. Soll nicht wieder vorkommen.

              Zur Sache:
              Habe ein Missverständnis erzeugt....Der oben angegebene Code funzt nicht. Und zwar hängt das mit der Variable zusammen, die ich in den SELECT eingefügt habe. Die mysql_query-Anweisung kommt damit wohl nicht in einer for-Schleife zurecht. Weiß aber nicht warum! Mit der Laufvariablen $i möchte ich jedesmal den SELECT entsprechend verändern, immer 1 weiter zum nächsten Array-Element! Danach wollte ich eigentlich fragen. Seht ihr da einen Fehler? Ich bekomme einfach keine Ausgabe! Ich weiß nicht, ob man diesen Mechanismus so bauen darf!?

              Gruß
              Alex

              Kommentar


              • #8
                1. sind queries innerhalb einer schleife (while/for/foreach) böse.

                2. könntest du dir $wortab mal mit echo ausgeben und sehen was drin steht.

                3. ... mysql_query ($wortab) or die(mysql_error()); ist sehr hilfreich beim debuggen.

                4. (ich greife vor) ist hier
                PHP-Code:
                $wortab "SELECT gta_act
                FROM gt_act
                WHERE gta_act = '
                $worte[$i]' "
                $i noch nicht bekannt, also nicht existent, also 'nix'. wenn das nicht böse wäre, gehörte es in die schleife ( for(){} )

                5. array-elemente in einen string einzubetten ist auch böse.
                PHP-Code:
                // böse:
                $wortab "SELECT gta_act FROM gt_act WHERE gta_act = '$worte[$i]' ";
                // gut:
                $wortab "SELECT gta_act FROM gt_act WHERE gta_act = '".$worte[$i]."' "
                6. lassen sich die indices von $worte später nicht mehr über $i in $wortab beeinflussen, da schon eine ausgabe erfolgte und die var kein array mehr ist.

                7. vergiss mein 'WHERE ... IN' ... schau dir stattdessen mal LIKE an ... die query sollte in etwa so aussehen:
                PHP-Code:
                $sql 'SELECT gta_act
                FROM gt_act
                WHERE gta_act like "'
                .$worte[0].'" 
                OR gta_act like "'
                .$worte[1].'" 
                OR ......'

                ^^ lässt sich schön per for/foreach zusammenstellen und per stringverkettung an die query anhängen

                8. im forum beim posten php-tags verwenden ... macht den code so schön bunt
                Kissolino.com

                Kommentar

                Lädt...
                X