MySQL Query erweitern

  • Hallo zusammen,


    mich beschäftigt da etwas, ich möchte ein Kategorie-Menü erstellen, und dabei Menüpunkte in denen "PHP" als String auftaucht, farblich anders markieren... Ich versuche den Code dabei möglichst kurz zu halten, vielleicht hat da jemand die Lösung für mich parat:


    Mein MySQL Query sieht wie folgt aus:


    PHP
    $query_sql = mysql_query("SELECT name FROM kategorie ");


    Danach gebe ich die Kategorienamen aus:


    PHP
    while($ROW=mysql_fetch_row($query_sql))   {
    echo '<a href="rubrik.php?rubrik='.$ROW[0].'" style="color: '.$style.'">'.$ROW[0].'</a>';
    }


    Soweit so gut, ich bekomme eine Auflistung aller Kategorien, z.B.:


    - HTMLkurs
    - PHPkurs
    - CSSkurs


    Dies alles wären dann die Links zu der entsprechenden Kategorie. Jetzt geht es mir darum, den Link in dem "PHP" vorkommt, farblich anders zu markieren, sprich der Link soll einen anderen $style bekommen, falls "PHP" im Name vorhanden ist.


    Jetzt habe ich mir gedacht, ich könnte ja meinen MySQL query mit $query_sql .= " WHERE name LIKE '%PHP%' "; erweitern, aber logisch gedacht dürfte das ja erst innerhalb meiner while-Schleife passieren, denn ich möchte weiterhin alle Kategorien aufgelistet bekommen, jedoch falls meine Query-Erweiterung gleich TRUE ist, dann möchte ich eine Variable erstellen die den Namen der Stylefarbe beinhaltet...


    PHP
    if ($row_has_PHP_in_name) {
        $style = "red"; }
    else { $style = "blue"; }



    So in etwa, hat jemand einen Tip wie ich meine SQL-Abfrage und meine While-Schleife möglichst kurz und einfach erweitern kann?


    Gruß

  • mit php:


    mit SQL ... hm, evtl "SELECT name, color FROM kategorie"
    und dann in der WHILE ein IF($ROW['color'] == ....)
    Aber denk ich is quark.

  • Danke für die Antworten, hört sich beides gut an, stripos klingt da für mich nach der Lösung die ich suche, aber auch interessant dass sowas mit CSS möglich ist, das war mir bisher garnicht bekannt...

  • Vielleicht noch ne additionelle Frage, vielleicht hat das ja mal jemand von euch probiert schon, ob mit PHP oder mit CSS oder sonstiger Technik:


    Ich habe einen Link, z.B. PHP Kurs


    HTML
    <a href="">PHP Kurs</a>


    Jetzt möchte ich den Link aber farblich so darstellen, dass PHP in rot dagestellt wird und Kurs in orange... Ginge das durch irgendeinen Trick, ohne den Link irgendwie aufteilen zu müssen?

  • also bei php würde ich einfach ersetze
    "php" mit "<span class="redclass">php</span>"


    was da bei css möglich ist schau ich mal (nichts gefunden)


  • 1st: sehe gerade ich hatte da was "verdattelt" :D
    so muss es ja wohl aussehen:


    Und zu deiner letzen frage:
    habs nicht geteste, allerdings ist es das erste, einfachste, sinnvolste, was mir gerade einfällt:


    - mit stripos (wie obem) prüfen, ob "php" enthalten ist
    - array erstellen mit explode ( $array = explode ('php', $ROW['name']); )
    _ aber (logsch) innerhalb der while schleife
    - nun das array ausgeben, anstatt des einfachen wortes.
    _ $array dürfte nun 2 level haben ([0],[1]) - der teil des wortes VOR "php" und danach. also gibst du aus:
    _ echo $array[0] . 'PHP' . $array[1];


    Man könnte jetzt noch prüfen, ob "php" groß oder klein geschrieben war.
    Oder, gibt es sicherlich, anstatt EXPLODE irgentwas zum splitten nehem. Ich glaub ich hatte da mal was ~split_str oder sowas

  • Roland, meinst du mit str_replace() ?


    cottton, diesen Abschnitt habe ich auch nicht ganz verstanden:


    Zitat

    - der teil des wortes VOR "php" und danach. also gibst du aus:
    echo $array[0] . 'PHP' . $array[1];


    Ich habe ja in meinem String nur "PHP Kurs", meintest du es müsse dann so etwas dabei raus kommen:


    PHP
    echo ' <a href=""> <span style=" '.$style.' ">' .$array[0]. '</span>' .$array[1]. '</a>';
  • Juhu, habs hinbekommen, mein Code sieht jetzt wie folgt aus:



    Ergebnis:

    HTML Kurs
    PHP Kurs
    CSS Kurs
    AJAX Kurs


    Danke nochmal für die Unterstützung!


    Gruß

  • jo so dachte ich mir das :)


    aber wenn etwas bei einer if abfrage true sein soll brauchst du nicht extra noch == true abfragen
    die if klammer fragt doch schon ob der inhalt darin true ist.



    und du kannst auch einfach nur

    PHP
    $linkstyle = $ROW[0];
    $linkstyle = str_replace('php', '<span style="color:#f50;">php</span>', $linkstyle);
    $linkstyle = str_replace('html', '<span style="color:#3399FF;">html</span>', $linkstyle);


    schreiben.
    du musst nicht erst testen ob php/html vorhanden ist um es dann zu ersetzen.
    wenn es halt nicht vorkommt dann mancht das ersetzen auch nichts

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!