Denkfehler bei SQL-Ergebnis-Ausgabe mittels foreach
Paco
- php
0 Christoph Jeschke0 Paco
0 ChrisB
Hallo!
Ich komme gerade nicht weiter. Ich möchte auf einer Übersichtsseite meines Projektverwaltungstools alle angelegten Projekte mit einigen spezifischen Infos anzeigen lassenn (mySQL-Datenbank, PHP5).
Das mache ich folgendermaßen:
$sql = "SELECT id, projekt FROM projekte ORDER BY projekt";
$query = mysql_query($sql);
$ids = array();
while($link = mysql_fetch_array($query)) {
$ids[] = $link["id"];
};
foreach($ids as $projekt_id) {
echo 'Projekt: ' . $projekt;
echo '(ID: ' . $projekt_id .')';
};
Nun ist es aber so, daß Projekte und IDs nicht richtig zugeordnet werden, bzw "um eins verschoben".
id: 1 ->
id: 2 -> projekt1
id: 3 -> projekt2
...
nehme an, das liegt irgendwie am Array (array[0] -> Schleifenelement[1] ??)
Müßte also den array-Dateizeiger vor der ausgabe um eins hochsetzen bzw irgendwas mit gleichem Effekt.
Hoffe das war nicht zu chaotisch beschrieben.
Vielen Dank,
Paco
Guten Tag,
nehme an, das liegt irgendwie am Array (array[0] -> Schleifenelement[1] ??)
Müßte also den array-Dateizeiger vor der ausgabe um eins hochsetzen bzw
irgendwas mit gleichem Effekt.
Hoffe das war nicht zu chaotisch beschrieben.
Prüfe mal in deiner Tabelle, ob Projekt 1 auch wirklich die Id 1 zugeordnet ist.
Du könntest dir natürlich auch den Umweg über das $ids-Array sparen und gleich in der while-Schleife nach der Datenbankabfrage die Daten ausgeben.
Gruß
Christoph Jeschke
Hallo Christoph,
danke für deine Antwort.
Prüfe mal in deiner Tabelle, ob Projekt 1 auch wirklich die Id 1 zugeordnet ist.
Doch ich kenne die Zuordnung und kontrolliere sie ja auch mit phpmyAdmin.
Du könntest dir natürlich auch den Umweg über das $ids-Array sparen und gleich in der while-Schleife nach der Datenbankabfrage die Daten ausgeben.
Hab ich mir auch schon gedacht, hatte aber schon einen Grund warum ich da das array benutzt habe, muß mal selber kurz schauen.
lg
Paco
Hi,
Nun ist es aber so, daß Projekte und IDs nicht richtig zugeordnet werden, bzw "um eins verschoben".
id: 1 ->
id: 2 -> projekt1
id: 3 -> projekt2
...nehme an, das liegt irgendwie am Array (array[0] -> Schleifenelement[1] ??)
Natürlich beginnt die Zählung des Array-Index mit 0.
Müßte also den array-Dateizeiger vor der ausgabe um eins hochsetzen bzw irgendwas mit gleichem Effekt.
Es gibt jede Menge Möglichkeiten.
Bspw. könntest du das Array vor der Schleife mit einem leeren Element mit Index 0 erstellen, so dass die Vergabe neuer Indicies bei 1 beginnt. Und das erste (also null-te) Element ignorierst du dann entweder bei der Ausgabe, oder du entfernst es vorher wieder (array_shift()).
Oder du nutzt gleich eine for-Schleife statt der while-Schleife - die Anzahl der Ergebnisdatensätze ist ja vorher erfragebar. Oder du lässt in der while-Schleife einen Zähler mitlaufen.
Oder du nutzt statt der foreach- eine for-Schleife (schliesslich ist auch hier die Anzahl Durchläufe vorher ermittelbar), und erhöhst dabei den Index, mit dem du auf das Array zugreifst, um eins.
Oder oder oder ...
MfG ChrisB