• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Durch komme getrennte Daten einzeln ausgeben

stefanmahr.com

Neues Mitglied
Hallo Leute,

ich hoffe es gibt für mein Problem überhaupt eine Lösung!

Problem:

Ich habe in meiner MySQL Datenbank in einer Spalte folgendes gespeichert: "Test, Test2, Test3" und wenn ich dies nun als Liste ausgeben lasse, erhalte ich Logischer weise dies:
  • Test, Test2, Test3
was ich allerdings haben möchte ist dies:
  • Test
  • Test2
  • Test3

Warum alle werte in einer Spalte?
Es handelt sich in der Praxis dabei um Tags, die über Checkboxen gewählt werden können und zusätzlich können neue Tags durch ein Textfeld hinzugefügt werden. (Funktioniert auch soweit) Beim Abrufen, sollen alle Tags die schon einmal verwendet wurden als Checkbox dargestellt werden und da tritt nun das oben geschilderte Problem auf.

Mein momentaner Code zum Abrufen:
PHP:
                $abfrage = "SELECT activitysonimage FROM images";
                $ergebnis = mysql_query($abfrage);
                while($row = mysql_fetch_array($ergebnis))
                   {
                   echo "<li><input type='checkbox' name='activitysonimage[]' value='" . $row['activitysonimage'] . "'> " . $row['activitysonimage'] . "</li>";
                   }

Hoffe es hat jemand eine Idee, wie man dies umsetzen könnte.

MfG

Stefan
 

Danke!

Ich kann nun einzelne Daten so ausgeben:
PHP:
$abfrage = "SELECT activitysonimage FROM images";
                $ergebnis = mysql_query($abfrage);
                while($row = mysql_fetch_array($ergebnis))
                   {
                       $activitysexplode = explode("," ,$row['activitysonimage']);
                   echo "<li><input type='checkbox' name='activitysonimage[]' value='" . $activitysexplode[0] . "'> " . $activitysexplode[0] . "</li>";
                   }

Nun weiß ich aber leider nicht, wie ich den Zähler des Arraywerts bis zu der Anzahl der Werte im Array erhöhe, sprich das dies Automatisch Funktioniert.

MfG
 
Wenn du Daten per Komma getrennt in deiner DB stehen hast, dann hast du ein Problem, dein DB-Design ist kaputt. Füttere google mal mit dem Stichwort Normalisierung

Weiterhin benutzt du die veraltete MySQL-Extension, du solltest dringend auf die MySQLi-Extension umsteigen.

Du musst eine foreach-Schleife über das Array laufen lassen.
 
Wenn du Daten per Komma getrennt in deiner DB stehen hast, dann hast du ein Problem, dein DB-Design ist kaputt. Füttere google mal mit dem Stichwort Normalisierung

Danke für deine Antwort!

Weiterhin benutzt du die veraltete MySQL-Extension, du solltest dringend auf die MySQLi-Extension umsteigen.

Du musst eine foreach-Schleife über das Array laufen lassen.

Wie soll ich die Daten anders in die Datenbank schreiben? Ich kann ja schlecht für jeden Tag eine neue Spalte machen?

MySQLi werde ich gleich machen.

Würde mein jetziger Code mit einer foreach-Schleife funktionieren? Wenn ja, wie müsste er dafür aussehen.

Hoffe auf deine Antwort

MfG
Stefan
 
Aber du kannst eine neue Tabelle anlegen, in der du jeden Tag einzeln reinschreibst.


Ja, siehe http://de1.php.net/manual/de/control-structures.foreach.php

Danke für deine Antwort!

Ja das mit der Tabelle wäre natürlich möglich, aber jedes Bild in der Tabelle hat andere Tags und dann müsste ich da wieder eine Verbindung herstellen.

Danke, habe ich schon gefunden, nur tat sich jetzt das Problem auf, dass ich die Werte die foreach ausgibt nur 1x verwenden kann, sprich entweder als value bei dem Input oder als Benennung daneben.

MfG
Stefan
 
Ja das mit der Tabelle wäre natürlich möglich, aber jedes Bild in der Tabelle hat andere Tags und dann müsste ich da wieder eine Verbindung herstellen.
Ja und?
Danke, habe ich schon gefunden, nur tat sich jetzt das Problem auf, dass ich die Werte die foreach ausgibt nur 1x verwenden kann, sprich entweder als value bei dem Input oder als Benennung daneben.
Ähmmm, *am Kopf kratz* Was?
 
Danke, habe ich schon gefunden, nur tat sich jetzt das Problem auf, dass ich die Werte die foreach ausgibt nur 1x verwenden kann, sprich entweder als value bei dem Input oder als Benennung daneben.

Warum nicht?
PHP:
foreach($tags as $key => $value) {
       echo $value . $value . $value . $value;
}
 
Also ich würde das so machen mit 3 Tabellen
Tags, images und die zuordnung von beiden

Tags
id, tagbezeichnung

images
id, url (des bildes)
bzw. was alles in der tabelle stehen kann

zuOrdnungstabelle
id, tagID, ImageID


Also ich hoffe ich hab das so verstanden das es tags zu Bildern sein soll. Auf jedenfall hättest du so mehr Kontrolle über die Tags. Und es wäre auch vieles einfacher.
 
Zurück
Oben