ilch Forum » Allgemein » HTML, PHP, SQL,... » Werte aus db auslesen

Geschlossen
  1. #1
    User Pic
    Saarlonz Hall Of Fame
    Registriert seit
    07.08.2008
    Beiträge
    3.003
    Beitragswertungen
    235 Beitragspunkte
    Hallo zusammen,

    Ich habe in der db ein Feld, in dem mehrere Werte gespeichert sind, die durch ein Komma getrennt werden. Nun möchte ich mittels $menu->get abfragen, ob ein bestimmter Wert in dem Feld gespeichert ist.

    grobes Beispiel:

    Werte in Tabelle: A,B,C,X,Y,Z
    
    $menu->get = X
    
    Select Where wert = X



    Aktuell mach ich es mit LIKE, aber das ist zu ungenau. Wie kann ich das ganze umsetzen?


    Zuletzt modifiziert von -saarlonz- am 16.08.2014 - 11:15:26
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Pion Hall Of Fame
    Registriert seit
    25.07.2007
    Beiträge
    870
    Beitragswertungen
    51 Beitragspunkte
    Ansich ist ja das Problem, dass die DB nicht normalisiert hast. Also warum eine Spalte mit mehreren Werten vs einer extra Tabelle?

    Was heißt ungenau?

    Wieviele werte stehen da drin?

    Du kannst auch alle Werte erst nach PHP schieben und dann mit explode / in_array arbeiten.
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Saarlonz Hall Of Fame
    Registriert seit
    07.08.2008
    Beiträge
    3.003
    Beitragswertungen
    235 Beitragspunkte
    Naja, es stehen immer unterschiedlich viele Werte drin. Es können mal 2 aber auch mal 6 sein.

    Ungenau heißt das wenn ich mit like z.b Mister X abfrage, auch Ergebnisse von Mister angezeigt werden, was eben nicht sein soll.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Pion Hall Of Fame
    Registriert seit
    25.07.2007
    Beiträge
    870
    Beitragswertungen
    51 Beitragspunkte
    Du meinst das wenn du LIKE %Mister% machst auch Mister X bekommst okay.

    Aber bei sowenig inhalt ist es egal ob du es mit Mysql oder php machst.

    Also mach einfach folgendes:

    $column = 'Mister X,Mister,toll,juhu';
    if(in_array('Mister', explode(',', $column)))
    {
        echo 'Mister ist drin';
    }



    Zuletzt modifiziert von Pion am 16.08.2014 - 14:22:59
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Saarlonz Hall Of Fame
    Registriert seit
    07.08.2008
    Beiträge
    3.003
    Beitragswertungen
    235 Beitragspunkte
    Hey, danke Pion. An eine extra Tabelle habe ich gar nicht gedacht:S Hab es nun so gelöst.

    Aber nur mal zur Verständigung, wie würde der Code von dir den hier verwendet werden?

    /**CODE ENTFERNT**/


    Zuletzt modifiziert von -saarlonz- am 16.08.2014 - 15:52:10
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Pion Hall Of Fame
    Registriert seit
    25.07.2007
    Beiträge
    870
    Beitragswertungen
    51 Beitragspunkte
    Achso, sowas machst du.

    Ne da empfehl ich meinen Code von oben nicht lächeln
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Saarlonz Hall Of Fame
    Registriert seit
    07.08.2008
    Beiträge
    3.003
    Beitragswertungen
    235 Beitragspunkte
    Ok, danke dir, wie gesagt läuft jetzt lächeln
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Saarlonz Hall Of Fame
    Registriert seit
    07.08.2008
    Beiträge
    3.003
    Beitragswertungen
    235 Beitragspunkte
    Mal noch ne frage so am Rande, kann mir einer sagen wieso in menu->get() keine Sonderzeichen wie %,: etc. möglich sind?
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Ganz genau kann ich es dir nicht sagen, aber es trägt sicher auch ein wenig zur Sicherheit bei, wenn da nur bestimmte Zeichen erlaubt sind, wozu brauchst du %, ich hoffe du willst mir jetzt nicht sagen, für ein LIKE Anweisung in MySQL.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Saarlonz Hall Of Fame
    Registriert seit
    07.08.2008
    Beiträge
    3.003
    Beitragswertungen
    235 Beitragspunkte
    Nein, nicht für die LIKE Anweisung, das hab ich ja schon gelöst. Ich wollte mittels get alle News auslesen die den selben Titel haben. Mit dem Leerzeichen konnte ich lösen in dem ich mittels str_replace die 20 entferne, da das % Zeichen von %20 ja schon weg ist. Das Problem ist nur das auch die Doppelpunkte etc. entfernt werden und ich so keine Ergebnisse in der db finden kann.
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Ich denke, das solltest du dann über einen POST (sprich Formular) lösen, das ist ja schon eher eine Suche, ansonsten kannst du es natürlich auch über GET machen, wenn du es mit in der Url haben willst.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten