Hallo allerseits,
ich habe mal wieder ein ziemlich leidiges PHP-Problem...
Und zwar geht es grob gesagt darum, Daten aus zwei verschiedenen MySQL-Tabellen auszulesen, diese in Beziehung zueinander zu setzen und als eine Tabelle in PHP/HTML auszugeben.
Zum einen habe ich da eine Tabelle in der alle Nutzer meines Webprojektes verzeichnet sind: users.
Diese Nutzer durchlaufen einen Test/Fragebogen und die Antworten (30 Stück in diesem Fall) werden jeweils in der Tabelle antworten gespeichert, und zwar einschließlich der User-ID aus users.
Die Ausgabe soll jetzt folgendermaßen geschehen (3 Spalten):
-> Liste alle IDs (Spalte 1) und dazugehörige User (Spalte 2)
-> WENN sich eine ID aus users auch im Feld ID der Tabelle antworten findet
-> zeige eine Link "Ergebnis ansehen" für diesen User (Spalte 3)
-> ANSONSTEN zeige "-" (Spalte 3)
Mein PHP-Code dazu sieht momentan so aus
<?php
#DB connect
require('../inc/config.inc.php');
db_connect();
$res1=mysql_query("SELECT * FROM users");
$res2=mysql_query("SELECT id FROM antworten");
$antworten=mysql_fetch_array($res2);
echo "<table border='0' cellpadding='5' cellspacing='2' align='center'>";
echo "<tr><th>ID</th><th>User</th><th>Ergebnis</th></tr>";
$i=0;
while ($users=mysql_fetch_assoc($res1)) {
$id=$users['id'];
$user=$users['user'];
if ($i%2!=0) {
$class='trodd'; //Das dient nur dazu
}
//die Datensätze
else {
$class='treven'; //farblich abzusetzen
}
echo "<tr class='$class'><td>".$id;
echo "</td><td>".$user;
echo "</td>";
if (in_array($id, $antworten)) {
echo "<td>ansehen"; //soll später mal ein Link werden
}
else {
echo "<td align='center'>-";
}
echo "</td></tr>";
$i=$i+1;
}
Alles anzeigen
Das Problem ist jetzt folgendes: Es gibt momentan 3 verzeichnete User, von denen einer den Test bereits absolviert hat, aber auch an dieser Stelle wird ein "-" ausgegeben.
Das liegt daran, dass das Array $antworten die entspechende User-ID nicht enthält, obwohl Sie in der Tabelle antworten entahlten ist.
Genauer gesagt enthält $antworten nur eine einizige User-ID.
Ich kann mir aber nicht erklären warum.
Danke schonmal für eure Hilfe!