Moin!
Jetzt mal eine peinliche Frage wie bekomme ich aus den einzelnen arrays ein mehrdimensionales...
SELECT vorname, nachname, telefon, strasse FROM ...
while ($row = mysql_fetch_array ($result)) {
$vorname = $row ["vorname"];
$nachname = $row ["nachname"];
$telefon = $row ["telefon"];
$strasse = $row ["strasse"];
}
// Pseudo-Code
SELECT id, vorname, nachname, telefon, strasse FROM tab ORDER BY nachname ASC
while ($row = mysql_fetch_array ($result)) {
$personen[$id]['vorname'] = $row ["vorname"];
...
}
Du kopierst hier viel zuviel rum.
> Ansonsten kannst du bspw. auch vorher ein neues leeres Array (z.B. $personen) anlegen, und nach jedem Schleifendurchgang die jeweiligen Werte deiner Variablen in dieses Array einfügen.
> ~~~php
> $personen = array();
> ...
> while ($row = mysql_fetch_array ($result)) {
> $vorname = $row ["vorname"];
> ...
> $personen[] = array("vorname" => $vorname, "nachname" => $nachname, ...);
> }
>
Hier kopierst du noch viel mehr zuviel rum.
Das Resultat von mysql_fetch_array() ist ein Array, dessen Keys die Spaltennamen sind, und dessen Values jeweils einen einzelnen Datensatz enthalten. Dieses Array kann man direkt einem Sammelarray reinreichen, ohne die Felder einzel hin- und herkopieren zu müssen:
$personen = array();
...
while ($row = mysql_fetch_array ($result)) {
$personen[] = $row;
Fertig.
Also im Schnelldurchlauf:
$ids = array(1,2,3,4,5); //Demoliste - irgendwelche IDs, die irgendwoher kommen.
...
array_walk($ids, "intval"); //IDs unbedingt mit intval() in einen Integer wandeln, sonst böse!
$idliste = implode($ids, ","); // Kommaseparierten String erzeugen.
$sql = "SELECT vorname, nachname FROM tabelle WHERE id IN (".$idliste.") ORDER BY nachname ASC";
...query...
...fetchen in Schleife, s.o. ...
- Sven Rautenberg