Split von einer Zelle

Hi,
ich habe ein Porblem

Damit Arbeit ich aber ich verzweifel dran.

Ich habe in meiner Datenbank eine Tabelle, wo sich EINE Zelle befindet mit diesem Inhalt:
Name1; Name2; Name3; … (bis zu 30 Namen)
Mein Ziel ist es diese Namen von einander zu trennen, damit ich die in einer Liste ausgeben kann.
Wie mach ich das?

Meine Lösung (sehr lang):


$sql = "Die Tabelle Ansprechen und Richtige Zeile auswählen";
$abfrage = mysqli_query($verbindung, $sql);
while($ausgabe = mysqli_fetch_array($abfrage)){
$namen = $ausgabe["Namen"];
}


list($name_anzeige1; $name_anzeige2; $name_anzeige3; ... ) = split(';', $namen);
echo "
  <ul>
  <li>
  $name_anzeige1</li>
  <li>
  $name_anzeige2</li>
  <li>
  $name_anzeige3</li>
...
  </ul>";

kann man das auch kürzer hin bekommen? z.b. mit while?
Oder gibt es dafür was komplett anderes?

PS: SQL spricht auch die Datenbank an (das Seh ich wenn ich mir $namen ausgeben lass).

http://php.net/manual/de/function.explode.php

Aber: Du solltest die Struktur deiner Datenbank überdenken. Die scheint nicht besonders sinnvoll.

Stichwort Normalisierung
Lektüre dazu: http://www.peterkropff.de/site/mysql/normalisierung.htm

Danke
Genau den Tipp habe ich gebraucht.

ich habe das jetzt so gelöst:

$i = 1; $namen_ex = explode(';', $namen); while(explode(';', $namen) && $namen_ex[$i++] != ""){ echo $npcnamen_ex[$i++] . "<br />"; }

ich war auf dem Falschen weg unterwegs

Danke dir nochmal

Das bist du immernoch. Dein Code ist ziemlicher Unfug. Schreibe die Namen in verschiedene Zeilen.

Übrigens solltest du dir mal die foreach Schleife angucken.

[code]$names = explode("\n", $row[‘Namen’]);

echo(’

    ’ . “\n”);

    foreach ($names as $value)
    {
    echo("\t" . ‘

  • ’ . $value . ‘
  • ’ . “\n”);
    }

    echo(’

’ . “\n”);[/code]

Wenn du Zeilenumbrüche als Trenner verwendest, kannst du die Namen an diesen mittels \n splitten. Dabei muss das reservierte Zeichen in doppelten Anführungszeichen stehen, ansonsten wird es nicht erkannt.

Die foreach-Schleife durchläuft das Array und speichert bei jedem Durchlauf den Wert des aktuellen Schlüssels in der Variable $value. Damit ersparst du dir die Zählerei, die du mit einer for-Schleife hättest (das, was da du da gemacht hast, entspricht dennoch nicht ganz dem, was man unter einer Zählschleife versteht).

lg