Seite 1 von 1

MySql Daten in Feld trennen...

Verfasst: 20.07.2011, 14:03
von Wirths Media
Hallo,

ich möchte gerne in ein Textfeld (longtext) mehrere Einträge schreiben, soweit kein Problem, jedoch wie separiere ich diese am besten, einfach ein frei erfundenen Separator (z.B.: ;;--;;) oder gibt es hier eine schönere Lösung.

Es handelt sich hierbei um Texte, welche Komma, Absatz etc. enthalten.

z.B.:

Code: Alles auswählen

Die ist ein Testtext, welcher hier
endet.
;;--;;
Hier ist noch ein Text.
Gruß
Daniel

Verfasst:
von

Verfasst: 20.07.2011, 14:07
von net(t)worker
ne absolut saubere lösung wäre das ganze als XML in dem textfeld abzulegen....

Verfasst: 20.07.2011, 14:09
von euroexchange.de
Du solltest hierzu einen Separator verwenden welcher nie im Text vorkommt wie z.B.

|

Dieser Separator wurde auch in Textdateien verwendet und scheint geeignet.

VG

Verfasst:
von

Verfasst: 20.07.2011, 14:10
von Wirths Media
net(t)worker hat geschrieben:ne absolut saubere lösung wäre das ganze als XML in dem textfeld abzulegen....
Ansonsten bleibt mir wohl nur der Trenner, oder?

Gruß
Daniel

Verfasst: 20.07.2011, 14:14
von Wirths Media
Wow...

https://www.google.de/search?sourceid=n ... eren+mysql

Steht zwar vor 6 Stunden gefunden, aber :)

Dieser Tread auf Platz 5.

Verfasst: 20.07.2011, 14:59
von kanuddel
vllt hilft dir das:

$splitcontent=explode("</h2><p>",$content->content,2);


erstellt ein array, bei dem der 'trenner' "</h2><p>" ist. alles, inklusive dem trenner kommt ins erste feld des arrays. der rest ins zweite. egal wie oft die zeichenfolge "</h2><p>" noch vor kommt. maximal 2 felder im array. das kannst du mit der 2 am ende der funktion kontrollieren.

mit
echo $splitcontent[0]."tollerwerbebanner".$splitcontent[1];
kann ich so im ersten absatz nach der ersten h2 überschrift nen werbebanner reinklatschen.
ob das nun programmiertechnisch gut oder schlecht ist, sei mal dahingestellt. auf jeden fall erfüllt es so seinen zweck.

Re: MySql Daten in Feld trennen...

Verfasst: 20.07.2011, 19:19
von DanielS
calusa-xx hat geschrieben:... oder gibt es hier eine schönere Lösung...
Ne schönere Lösung ist die Daten direkt "richtig" in die Datenbank zu packen und zwar für jeden Eintrag eine Zeile.

calusa-xx hat geschrieben:Gruß
Daniel
Auch Daniel ;)

Re: MySql Daten in Feld trennen...

Verfasst: 21.07.2011, 01:48
von nerd
DanielS hat geschrieben:Ne schönere Lösung ist die Daten direkt "richtig" in die Datenbank zu packen und zwar für jeden Eintrag eine Zeile.
Auf jedenfall korrekt. Zumal MySql genau aus diesem grund auch keine eingebaute Split oder explode funktion hat und du das ganze dann erst manuell auseinandernehmen musst...

Re: MySql Daten in Feld trennen...

Verfasst: 21.07.2011, 02:13
von net(t)worker
DanielS hat geschrieben:
calusa-xx hat geschrieben:... oder gibt es hier eine schönere Lösung...
Ne schönere Lösung ist die Daten direkt "richtig" in die Datenbank zu packen und zwar für jeden Eintrag eine Zeile.
kann man so nicht pauschal sagen.... solange Daten nicht in einer where clausel verwendet werden, kann man sie teilweise besser gesammelt in ein textfeld schreiben anstatt hier Abfragen über zig Tabellen zu machen.... z.B. zusätzliche Produkteigenschaften bei einer Datenbank mit vielen unterschiedlichen Produkten.... so kann man dann größere Produktlisten mit einer simplen select query erhalten, anstatt zu jedem Produkt nochmals nen subrequest in einer weiteren Tabelle mit zusätzlichen Produkteigenschaften zu machen.... auch würde ein direktes feld in Table für die Produkte nur für Produkteigenschaften sinnvoll sein die sehr oft verwendet werden... auch lassen sich so für ein oder mehrere Produkte weitere zusätzliche neue produkteigenschaften simpel hinzufügen ohne die table struktur und querys abzuändern...

normalisierung einer DB hört sich immer schön an, aber bei Webseiten kann es aus performancegründen teilweise sinnvoller sein Daten , zumindest zusätzlich, unnormalisiert abzuspeichern...

Verfasst: 21.07.2011, 09:27
von Synonym
Und wenn man die einzelnen Texte dann immer wieder braucht und einzeln verarbeiten will, dann würde ich die als JSON abspeichern und fertig. Dann hat man die nach dem Auslesen gleich als ein Array vorliegen und kann drauf zugreifen.

Re: MySql Daten in Feld trennen...

Verfasst: 21.07.2011, 09:51
von DanielS
net(t)worker hat geschrieben:kann man so nicht pauschal sagen....
Alles schön und gut, aber
calusa-xx hat geschrieben:ich möchte gerne in ein Textfeld (longtext) mehrere Einträge schreiben...
Hört sich für mich nach mehreren Einträgen an, die auch separat behandelt werden soll.
Aber Du hast, die Angaben sind zu unkonkret um das genau zu beurteilen.

Verfasst: 21.07.2011, 09:59
von Wirths Media
Ja, die Texte sollen später natürlich gesplittet werden, sonst müsste ich diese nicht trenne, werden aber nach dem holen aus der Datenbank in einem Array gespeichert.

Verfasst: 21.07.2011, 10:08
von Synonym
werden aber nach dem holen aus der Datenbank in einem Array gespeichert.
Na dann nimm doch JSON. Dann schreibste das Array direkt in die DB und holst es auch wieder direkt raus. Da muss man dann nichts splitten.

Verfasst: 21.07.2011, 10:35
von Wirths Media
Synonym hat geschrieben:
werden aber nach dem holen aus der Datenbank in einem Array gespeichert.
Na dann nimm doch JSON. Dann schreibste das Array direkt in die DB und holst es auch wieder direkt raus. Da muss man dann nichts splitten.
Klingt interessant, werde ich mir mal genauer anschauen, danke.

Verfasst: 21.07.2011, 10:40
von nerd
uebersehe ich hier was oder wieso koennt ihr die rohdaten nicht normal speichern, und nach dem auslesen der datensaetze (die du ja dann in der regel als array vorliegen hast) diese dann via https://php.net/manual/en/function.json-encode.php als json weitergeben...?