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

  • raveone
    hat ein Thema erstellt [Erledigt] array bilden aus Schleife.

    [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++;
    }
    ?>

  • lstegelitz
    antwortet
    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.

    Einen Kommentar schreiben:


  • VPh
    antwortet
    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.

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • nameless97
    antwortet
    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.

    Einen Kommentar schreiben:


  • VPh
    antwortet
    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

    Einen Kommentar schreiben:


  • uha
    antwortet
    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

    Einen Kommentar schreiben:


  • nameless97
    antwortet
    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.

    Einen Kommentar schreiben:


  • raveone
    antwortet
    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!

    Einen Kommentar schreiben:


  • tkausl
    antwortet
    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?

    Einen Kommentar schreiben:

Lädt...
X