Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] array bilden aus Schleife

Einklappen

Neue Werbung 2019

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

  • [Erledigt] array bilden aus Schleife

    Hallo PHP Profis,

    kann mir bitte einer Helfen, ich steh irgendwie an!
    Ich bastle gerade ein BadWord Filter, wie folgt:
    Habe eine DB mit BadWords, wo ich durch eine Schleife (id) die Badwords mit "preg_match" eine Variable durchsuche. Das klappt ganz gut, jetzt gebe ich sie Testweise mit echo an der Web wieder, jetzt möchte ich aber die gefunden Werte in eine array backen um sie auszuwerten bzw, weiter zu bearbeiten, bring sie aber nicht in die array, warscheinlich wegen der Schleife, oder wie?

    Kann mir da einer helfe?

    Mein script:
    <?php
    include('../config.ini');
    mysql_connect($host, $user, $pass) or die ("Kein Zugriff auf die Datenbank.");
    mysql_select_db($db) or die ("Die Datenbank existiert nicht.");

    $id = mysql_query("SELECT * FROM BadWords");
    $CountID = mysql_num_rows($id);

    $id = 1;
    while ($id < $CountID)
    {

    $result = mysql_query("SELECT * FROM BadWords WHERE id = $id");
    while ($spalte = mysql_fetch_array( $result )) {
    $BadWord = $spalte['BadWord'];
    }
    mysql_free_result( $result );
    $testtext = "Fickschlitz ist ein Bad word, auch Arsch ist ein schlimmes Wort.";
    preg_match("/\b$BadWord\b/", $testtext, $ausgabe);
    echo $ausgabe[0]." ";
    $id++;
    }
    ?>


  • #2
    So 'n Quatsch hab ich auch schon lange nichtmehr gesehn. Wozu ließt du die Tabelle nicht einfach ganz normal aus, ohne WHERE und die unnötige Query davor?
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Weil ich es schon mit mysql_fetch_assoc() versucht habe, es aber nicht klappte, wo query pflicht ist, danke für deine Aussage, statt Hilfe!

      Kommentar


      • #4
        PHP-Code:
        while ($spalte mysql_fetch_array$result )) {
         
        $BadWord $spalte['BadWord'];
         } 
        Dir ist klar, dass du somit nur den letzten DB Eintrag rausziehst, oder?

        Edit: Ach sorry. Doch nicht. Aber das Gedöns ist so seltsam aufgebaut, dass man da schnell in Schwankungen kommt.
        Die mysql_* Erweiterung ist veraltet!
        Besser: mysqli_* oder (noch besser) PDO

        Kommentar


        • #5
          Zitat von tkausl Beitrag anzeigen
          So 'n Quatsch hab ich auch schon lange nichtmehr gesehn.
          Dem kann ich mich nur anschließen! Wer so ein Script zusammenschustert, hat im Fortgeschrittenen-Forum wohl eher nichts zu suchen!

          Außerdem benutzt du die veraltete MySQL-Extension, steige um auf MySQLi

          16.14. Warum soll ich nicht SELECT * schreiben?
          http://net.co.at/doc/howto/docs/dclp...ql-select.html
          Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

          Kommentar


          • #6
            Ne, das ganze ist ja schon in einer anderen Schleife, in der er alle ID's durchgeht und die als Where-Klausel nimmt um nochmal ein Wort rauszunehmen.
            Wie tkausl schon sagte, unnötig.
            Dazu ist das hier eindeutig das falsche Unterforum.

            Standardtext für die Datenbankverbindung:
            Die mysql_* Erweiterung ist veraltet und wird in der nächsten PHP-Version entfernt.
            Durch einen Wechsel auf mysqli_* oder PDO greifst du auf die modernere API zu und hast die Möglichkeiten Prepared Statements zu benutzen die gegen Injections schützen.
            Ich persönlich bevorzuge PDO, schönes Tutorial: http://www.peterkropff.de/site/php/pdo.htm
            Relax, you're doing fine.
            RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

            Kommentar


            • #7
              Zitat von VPh Beitrag anzeigen
              Ne, das ganze ist ja schon in einer anderen Schleife, in der er alle ID's durchgeht und die als Where-Klausel nimmt um nochmal ein Wort rauszunehmen.
              Stimmt, war mir auch gerade aufgefallen. Habe die äußere Schleife glatt überlesen, einfach weil ich so etwas noch nie gesehen habe.
              Die mysql_* Erweiterung ist veraltet!
              Besser: mysqli_* oder (noch besser) PDO

              Kommentar


              • #8
                Danke für eure...
                Habe es durch break, Schleife stoppen wenn Wert gefunden und array übergabe gelöst!

                Kommentar


                • #9
                  Jo, formulier dein Anliegen beim nächsten mal verständlicher, poste Code in die dafür vorgesehenen Tags und schreib ins richtige Unterforum. Dann fallen die Antworten auch ein bisschen hilfreicher aus.
                  Relax, you're doing fine.
                  RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

                  Kommentar


                  • #10
                    Generell sind SQL Queries in Schleifen schlecht! Wozu überhaupt erst alles selektieren um die Menge zu erfahren? Die ganze äußere Schleife ist unnötig, da kann man gleich alle Daten auslesen und den Vergleich starten... überhaupt solltest du die Suche in die Datenbank verlagern (Stichwort WHERE).
                    Desweiteren kann es in den Schlüsseln Lücken geben, einfach von 1 bis Anzahl der Datensätze zu iterieren ist daher eine ganz schlechte Idee.
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar

                    Lädt...
                    X