Hallo,
ich bin hier auf ein kleines Problem mit einer switch-Verzweigung gestoßen:
Es geht um Folgendes:
In meinem Webprojekt durchlaufen die User mehrere Tests, deren Ergebnisse in der DB abgelegt werden.
Zu Auswertungszwecken soll das Ganze Zahlengewusel nun als CSV vorliegen.
Die Dateien sollen dann nach dem Schema [Test]_[Datum].csv benannt werden.
Dafür habe ich erstmal folgendes Skript erstellt (noch nicht ganz fertig).
Nicht wundern: Da wird momentan noch nichts in Textdateien geschrieben, sondern erstmal nur eine HTML-Ausgabe erzeugt.
Das liegt zum einen daran, dass ich noch keine Schreibrechte auf dem server hab um das richtig umzusetzen und zum anderen ist es recht bequem, das erstmal so zu testen (Da muss man nicht immer in irgendwelchen Dateien nachschauen, ob alles klar ging...).
#DB CONNECT
require('../inc/config.inc.php');
db_connect();
#USER IDs holen
$sel_ids=mysql_query("SELECT id FROM users");
#DATUM holen
$date=getdate();
$d=$date['mday'];
$m=$date['mon'];
if (strlen($m)==1) {
$m="0".$m;
}
$y=$date['year'];
$date_csv="$d$m$y";
$test = array("test1","test2","test3","test4","test5","test6");
$x=count($test);
$i=0;
for ($i=0; $i<$x; $i++) {
$tname=$test['$i'];
$filename="$tname"."_"."$date_csv".".csv";
switch ($tname) {
case "test1":
echo "test1<br>";
while ($id=mysql_fetch_array($sel_ids)) {
$uid = $id[0];
echo "<font color='blue'>".$uid."</font>,";
$sel=mysql_query("SELECT fr_id FROM antworten1 WHERE uid='$uid' ORDER BY fr_id");
$ki=0;
while($exp1=mysql_fetch_array($sel)) {
echo "<font color='crimson'>";
echo $exp1[0]."</font>,";
$frid=$exp1[0];
$sel2=mysql_query("SELECT ant FROM antworten1 WHERE uid='$uid' AND fr_id='$frid'");
$exp2=mysql_fetch_array($sel2);
echo "<font color='green'>".$exp2[0]."</font>";
if ($ki!=29) {
echo ",";
}
$ki=$ki+1;
}
echo "<br>";
}
break;
case "test2":
echo "test2<br>";
while ($id=mysql_fetch_array($sel_ids)) {
$uid = $id[0];
echo "<font color='blue'>".$uid."</font>,";
$sel=mysql_query("SELECT fr_id FROM antworten2 WHERE uid='$uid' ORDER BY fr_id");
$ki=0;
while($exp1=mysql_fetch_array($sel)) {
echo "<font color='crimson'>";
echo $exp1[0]."</font>,";
$frid=$exp1[0];
$sel2=mysql_query("SELECT ant FROM antworten2 WHERE uid='$uid' AND fr_id='$frid'");
$exp2=mysql_fetch_array($sel2);
echo "<font color='green'>".$exp2[0]."</font>";
if ($ki!=29) {
echo ",";
}
$ki=$ki+1;
}
echo "<br>";
}
break;
case "test3":
while ($id=mysql_fetch_array($sel_ids)) {
$uid = $id[0];
}
break;
case "test4":
while ($id=mysql_fetch_array($sel_ids)) {
$uid = $id[0];
}
break;
case "test5":
while ($id=mysql_fetch_array($sel_ids)) {
$uid = $id[0];
}
break;
case "test6":
while ($id=mysql_fetch_array($sel_ids)) {
$uid = $id[0];
}
break;
}
}
Alles anzeigen
Das funktioniert sogar bis zu einem gewissen Grad einwandfrei...:D
Das Problem:
Wenn die Werte aus dem case test1 korrekt ausgegeben wurden, schreitet das Script weiter zum Szenario test2.
Da müsste nun in etwa das Gleiche passieren und somit auch die Ausgabe ähnlich sein.
ABER: Es wird lediglich "test2" ausgegeben und von den eigentlichen Ergebnissen ist nichts zu sehen.
Komischerweise scheint das aber nicht am Quelltext innerhalb von test2 zu liegen, denn:
Wenn ich die Positionen von test1 und test2 im array $test vertausche, hab ich das ganze genau umgedreht, d.h.:
Ich bekomme die Ergebnisse von test2 einwandfrei angezeigt, aber nicht die von test1. :confused:
Woran kann das liegen? (Ich muss dazu sagen, dass ich hier leider keine Fehlermeldungen vom Server bekomme und das selbst auch nicht umstellen kann )