Serialisiertes Feld vergleichen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Serialisiertes Feld vergleichen

    Moin,

    ich habe einen Datensatz den ich mehreren Kategogieren zuweisen möchte.
    Dies mache ich, indem ich Werte aus Checkboxen serialisiert in EINE DB-Spalte schreibe.
    PHP-Code:
    a:3:{i:0;s:1:"2";i:1;s:1:"3";i:2;s:1:"4";} 
    Das funktioniert auch und ich kann es nachher mittels PHP schön auslesen.

    Nur möchte ich aber diese Werte auch über eine DB-Abfrage durchsuchbar machen. Also suche mir alle Datensätze die Kategorie 3 angehören.

    Ich habe ein bisschen gelesen und die Meinungen gehen da teilweise etwas auseinander ob nun das DB Design richtig oder flasch seine.

    Ist mein Serialisiertes abspeichern so OK und kann ich es irgendwie durchsuchbar machen. Oder sollte ich meine Werte NICHT serialisiert abspeichern?

    Danke für eure Antworten.

    Cu
    PHP 8.0, MariaDB 10.5 auf U20.04

  • #2
    Nein, nicht so speichern – sondern vernünftig normalisieren.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      "Normalisieren" habe ich schon öfter als Antwort bekommen.

      Ich glaube allerdings, das was ich da (schon seit längerem) folgendermaßen baue, scheint gar nicht so schlimm zu sein und Redunadanzen habe ich meines bescheidenen wissens keine.

      Select und Checkboxen lasse ich grundsätzlich aus vorher definierten ARRAY's aufbauen. <foreach ... blablabla>

      Die Keys speichere ich mir dann irgendwo in eine DB und gut iss das. Finde ich ne saubere Sache und ist auch sehr einfach zu Warten. Da die Arrays in allen Dokumenten einfach includet werden können (oder nicht). Aber bitte belehrt mich eines besseren, sollte ich hier falsch liegen.

      Wie gesagt, das einzige womit ich mich zur Zeit etwas schwer tu, sind halt das Wegschreiben und Auslesen von Multi-Werten. Eigentlich aber auch wieder nicht, da ich jetzt die Function SERIALIZE für mich entdeckt habe.

      Seit meinem Posting heute morgen habe ich es jetzt erst einmal folgendermaßen gelöst.

      Code:
      Select * from tabelle where kategorie like '%"2"%'
      Funktioniert!

      Dennoch, vielleicht geht es auch irgendwie eleganter, richtiger, sicherer, schneller? So etwas in der Art wie "in_array" vielleicht
      PHP 8.0, MariaDB 10.5 auf U20.04

      Kommentar


      • #4
        Zitat von SusiSorglos Beitrag anzeigen
        Dennoch, vielleicht geht es auch irgendwie eleganter, richtiger, sicherer, schneller?
        Ja, normalisieren.

        Kommentar


        • #5
          Alles klar. Normalisieren! Das ich da nicht selber drauf gekommen bin
          PHP 8.0, MariaDB 10.5 auf U20.04

          Kommentar

          Lädt...
          X