Swen: MySQL- Abfrage WHERE url != '' "

Hallo,

Ich rufe mit:

$abfrage = "SELECT * from $tab_verzeichnis WHERE url != '' AND ort LIKE 'TEST' ORDER BY RAND() LIMIT 1";

eine MySQL-Datenbank ab.
Und es sollen nur Einträge ausgegeben werden, in denen eine URL steht - das würde ja mit WHERE url != '' funktionieren. Leider Sind in der DAtenbank auch Einträge wo im Feld url nur Leerzeichen stehen oder irgendwelche Zeichen. Di esollen natürlich nicht ausgegeben werden. Die URLs werden immer in der Form www.test.de oder test.de gespeichert.

Wie krieg ich das jetzt hin, das nur die Zeilen ausgeben werden, in denen auch eine korrekte URL steht?

Danke,
Swen

  1. Hi,

    Leider Sind in der DAtenbank auch Einträge wo im Feld url nur Leerzeichen stehen oder irgendwelche Zeichen.

    tja, da fragt man sich doch: Wie sind die da rein gekommen?

    Man sollte grundsätzlich dafür sorgen, dass in einer DB nur Werte stehen, die auch einen Sinn ergeben. Also: _Vor_ dem INSERT INTO prüfen.

    Di esollen natürlich nicht ausgegeben werden.

    In den meisten Sprachen heißt eine Funktion zum Abtrennen bestimmter Zeichen TRIM.

    Die URLs werden immer in der Form www.test.de oder test.de gespeichert.

    Das sind keine URLs, sondern Hostnamen.

    Wie krieg ich das jetzt hin, das nur die Zeilen ausgeben werden, in denen auch eine korrekte URL steht?

    Bei Deiner Art der Speicherung kommt das nie vor ;-)

    Cheatah

    1. Cheatah ist wieder KLEINLICH heute!
      Potzenprobleme??? ;)

      1. Cheatah ist wieder KLEINLICH heute!
        Potzenprobleme??? ;)

        Cheatah ist nicht kleinlich, Cheatah weist auf die systematischen Designprobleme der bisherigen Lösung hin. Genau dasselbe hätte ich gerade selber gemacht - spare es mir aber, denn doppelt gemoppelt hält nicht besser, sondern bläht das Forum auf.

        - Sven Rautenberg

      2. Hi,

        Cheatah ist wieder KLEINLICH heute!

        mit Kleinlichkeit hat das nichts zu tun - es ist doch wichtig zu wissen, dass das Problem nicht mit SQL gelöst werden sollte, oder?

        Potzenprobleme??? ;)

        Was sind "Potzen"?

        Cheatah

  2. Hallo Swen,

    Du müsstest Dir überlegen, wann ein Eintrag gültig ist und diesen dann als regulären Ausdruck formulieren WHERE url LIKE ...

    Wenn Du das nicht hinbekommst, bleibt Dir nur, per Hand alle Einträge zu überprüfen. Solange Du ein Filterkriterium nicht beschreiben kannst, wird Dir auch kein anderer aus der Ferne helfen können.

    Gruß Frank

  3. Wie krieg ich das jetzt hin, das nur die Zeilen ausgeben werden,
    in denen auch eine korrekte URL steht?

    Vermutlich wirst Du mit SELECT ... WHERE url REGEXP ... glücklich werden.

    http://www.mysql.com/doc/en/Pattern_matching.html
    http://www.mysql.com/doc/en/Regexp.html

  4. Hallo,

    Wie krieg ich das jetzt hin, das nur die Zeilen ausgeben werden, in denen auch eine korrekte URL steht?

    vielleicht ein zu einfacher Gedanke, aber speicher doch nur valide URLs!

    Reiner