MetaModels Workshop in Berlin
Ergebnis 1 bis 4 von 4

Thema: Datenbank: Format von Spalten

  1. #1
    Contao-Nutzer
    Registriert seit
    26.03.2010.
    Beiträge
    232

    Standard Datenbank: Format von Spalten

    Hallo miteinander,

    ich will kein Entwickler werden, aber mir die Arbeit erleichtern. Hier habe ich ein Problem, von dem ich hoffe es durch "eine Handvoll" SQL queries zumindest reduzieren zu können.
    Dazu wüsste ich gern, was in vielen vielen Spalten vieler Tabellen diese "Unterfelder" zu bedeuten haben. Viele dieser Spalten sind ja ähnlich aufgebaut. Hier am Beispiel cssID der Tabelle tl_content (um die geht's ja letztendlich auch:
    a:2:{i:<Zahl>;s:<Zahl>:"<string>";i:<Zahl>;s:<Zahl >:"<string>";}
    Die Strings sind ja wohl die CSS ID und CLASS die man für ein Inhaltselement vergeben kann. Bei den Zahlen habe ich gedacht es seien die ID des Elements, das passt aber nur manchmal. Meine Suche im Forum und im Web förderten allen möglichen Kram zutage, aber nichts was mich diese Datenstruktur verstehen ließ. "Tausende" Zeilen PHP Code zerpflücken könnte vielleicht helfen - würde aber vermutlich ähnlich lange dauern wie meine 700+ Inhaltselemente durchzuklicken...
    Würde mir bitte netterweise jemand von den "Wissenden" kurz erklären, was diese a: i: und s: Werte bedeuten.

    TIA
    purzel

  2. #2
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.390
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Das ist ein mit PHP serialisierter Wert. PHP ist in der Lage jeden Datentypen zu serialisieren (in eine Text-Form zu bringen) und daraus wieder die ursprünglichen Typen zu generieren (un-/deserialisieren).

    i wäre ein Integer, a ist ein Array, s ein String usw.
    terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.

  3. #3
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.308
    Partner-ID
    1081
    User beschenken
    Wunschliste

    Standard

    Das, was Du da in den Spalten siehst, ist ein serialisiertes Array in PHP.
    Diese Felder werden in Contao häufig verwendet, um Elemente wie Überschrift/H1 zu speichern, also mehrere Informationen oder auch Zeilen in einer Spalte.

    Mit der PHP-Funktion unserialize() oder besser mit der Contao-Funktion \StringUtil::deserialize() kannst Du den Inhalt der Spalte in einem Script zum besseren Handling in ein Array umwandeln.

  4. #4
    Contao-Nutzer
    Registriert seit
    26.03.2010.
    Beiträge
    232

    Standard

    Habt Dank.
    Ich hatte gehofft da stehen Werte drin die sich ignorieren oder per SELECT finden lassen um direkt im phpMyAdmin ein paar Queries abzufeuern die dann wenigstens einen Teil meiner o.g. Problemfälle eliminieren.
    Da ich PHP nur ein bisschen prozedural kann, objektorientiert genau gar nicht, habe ich mal folgendes probiert:
    PHP-Code:
    <?php
    $serialized_object
    ='a:2:{i:0;s:0:"";i:1;s:9:"zentriert";}';  // aus meiner DB, tl_content, ein Element cssID
    var_dump($serialized_object);
    $data unserialize($serialized_object);
    echo 
    '<br>';
    var_dump($data);
    ?>
    Das gibt aus:
    Code:
    string(37) "a:2:{i:0;s:0:"";i:1;s:9:"zentriert";}" 
    array(2) { [0]=> string(0) "" [1]=> string(9) "zentriert" }
    Daraus entnehme ich, dass (im diesem Fall "cssID") die 9 keine ID von irgendwas (Seite, Inhaltselement, ...) ist sondern lediglich die Länge des Strings. Lustig, dass das zufällig bei manchen (den ersten die ich mir angeschaut habe) auf die ID des Artikels gepasst hat
    Also a:2 ist die Array-Länge, i: die Indizes der Elemente, s: die jeweilige String-Länge und in Häkchen der String. Ist ja doch gar nicht so schwer
    Manchmal braucht man eben einen Denkanstoß. Danke nochmal.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •