bestimtes wort aus sql suchen und mit erweiterten variabeln anzeigen lassen.....

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • bestimtes wort aus sql suchen und mit erweiterten variabeln anzeigen lassen.....

    Hallöchen.

    Ich möchte ein bestimtes Wort aus der Sql-Datenbank suchen lassen und dann mit den erweiterten variabeln anzeigen lassen.

    Die sql datenbank besteht aus:

    text / farbe1 / farbe2
    -----------------------------
    test / ccccccc / ff0000
    testb / ff0000/ cccccc

    hier kommt das problem:

    er findet immer nur "test" statt "testb" und gibt somit nur "test" aus.

    der code:

    Quellcode

    1. <?PHP
    2. $abfrag = 'SELECT * FROM '.PREFIX.'texte';
    3. $abfrage = mysql_query($abfrag);
    4. while ($row = mysql_fetch_object($abfrage)) {
    5. $message = eregi_replace("$row->text",create_gradient("$row->text","$row->farbe1","$row->farbe2", "$fverlauf"),$message);
    6. }
    7. ?>
  • Also jetzt mal rein auf den Query bezogen, wenn du "test" hast, und alles haben möchtest, was mit "test" anfängt, würde das über LIKE klappen.
    SELECT spalte FROM tabelle WHERE spalte LIKE 'test%'

    (% = Platzhalter)

    Aber du gehst doch eh alle Zeilen in der Datenbank über die while durch?

    btw, eregi_replace ist seit php5.3 deprecated - benutze stattdessen lieber preg_replace oder str_replace, das würde hier auch gehen.
    Jan Thurau
    Software and Systems Engineer
    janthurau.de

    [IMG:http://www.pageheroes.com/media/image/pageheroes_logo.png] - We get your page working!
  • Hallöchen...

    da liegt der hacken...

    Wie geschrieben, wenn

    "test" = test"

    und

    "testb" = testb

    ist aud dem text

    Quellcode

    1. $text = "hallo test und hallo testb";


    gibt er bei allem nur

    "hallo test und hallo testb"

    Sprich, die farbe für "testb" nimmt er nicht da er in der SQl nur den ersten eintrag nimmt den er findet!!!!

    greets
  • Hallöchen...

    Ich hab da eine Möglichkeit gefunden...

    Quellcode

    1. <?PHP
    2. $message = "Hallo Test";
    3. $array = array("Test" => "01");
    4. echo strtr($message, $array);
    5. ?>


    "Gibt aus "hallo 01"."

    Quellcode

    1. <?PHP
    2. $message = "Hallo test";
    3. $array = array("Test" => "01");
    4. echo strtr($message, $array);
    5. ?>


    "Gibt aus "Hallo test"."

    Nur hier besteht das Problem das er die Groß und Kleinschreibung beachtet.
    Wie kann man es umsetzen das er diese nicht beachtet?

    greets
  • Hallo,

    der kleine Denkfehler in deinem Ursprungspost liegt darin, dass du zuerst auf test überprüfst und danach auf testb oder umgekehrt - du definierst es schlichtweg nicht. Er kann testb nicht mehr finden weil deine Funktion create_gradient den Text irgendwie verändert z.b.:

    Quellcode

    1. Das ist mein testb Test.

    Quellcode

    1. Das ist mein <pseudo type="gradient_rot">test</pseudo>b Test.

    Lösungsvorschlag, sortiere bei der SQL - Query nach Länge. Das Ergebnis wird aber warsch. auch nicht das erwartete. Weil nun folgendes Ergebnis stattfindet:

    Quellcode

    1. Das ist mein <pseudo type="gradient_gruen"><pseudo type="gradient_rot">test</pseudo>b</pseudo> Test.

    Quellcode

    1. SELECT * FROM `texte` ORDER BY LENGTH(`text`);

    Um dir aber eine seriösere Antwort zu geben, wäre es wichtig, dass du genau definierst was die erwartete Ausgabe sein soll. (Beispiel?)

    Liebe Grüße

    rauchmelder
  • Hallöchen...

    Die länge der texte angeben würde wieder ein Script voraussetzen die zählt wie lang das Wort ist, da die Wörter Zwischen 3 und 20 zeichen lang sein können.

    Das weitere Problem wäre wenn ein Eintrag mit "testa" und "testb" vorhanden wäre würde er trotz der "LENGTH" wieder die beiden einträge finden und da wären wir wieder am Anfang!!!

    Das Problem bestand zu diesem Zeitpunkt das er immer nur 1 Eintrag nahm den er in der Sql gefunden hatte deshalb hab ich mal die andere lösung geposted mit den arrays was auch funktioniert.

    Nur ist das Problem das er die Groß und kleinschreibung beachtet was ich wiederum nicht brauche.

    Also wenn der Anfangsbuchstabe Groß ist, aber Klein eingetippt wird findet der den ARRAY somit nicht.

    Über ARRAYS finde ich ist auch die einfachste lösung?

    greets

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von toxic ()