Problem mit MySQL-Query
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ausgabe
bearbeiter
beitrag
date
erste
funktion
globale variable
hat
kategorie
order
rasse
result
schleifen
scout
show
status
uhr
uhrzeit
variable
zeile
-
Moin Leute,
es geht hier um folgendes Query:
$query = \\\"SELECT * FROM tododone WHERE art = \\\'$art\\\' AND bearbeiter = \\\'$dbuser\\\' ORDER BY status\\\";
Aus irgendeinem Grund, der mir nicht bekannt ist, ist die Variable \\\"$dbuser\\\" im Query immer leer.
Schreibe ich allerdings:
, dann wird der richtige Wert ausgegeben.echo \\\"$dbuser\\\";
Vorhin habe ich es mal mit
versucht, um herauszubekommen, worin der Fehler besteht. Die Ausgabe war dann wie folgt:echo \\\"$query\\\";
SELECT * FROM tododone WHERE art = \\\'Rassen, Klassen & Gruppen\\\' AND bearbeiter = \\\'\\\' ORDER BY status hätte aber sein sollen: SELECT * FROM tododone WHERE art = \\\'Rassen, Klassen & Gruppen\\\' AND bearbeiter = \\\'Azadoras\\\' ORDER BY status
Dazu muss noch gesagt werden, dass diese Abfrage in folgender Funktion zur Anwendung kommt, da $art mehrfach vorkommt, da es die Kategorie definiert:
function show($art, $qrynr) { if($qrynr == \\\"1\\\") { $query = \\\"SELECT * FROM tododone WHERE art = \\\'$art\\\' AND bearbeiter = \\\'$dbuser\\\' ORDER BY status\\\"; } if($qrynr == \\\"2\\\") { $query = \\\"SELECT * FROM tododone WHERE art = \\\'$art\\\' AND bearbeiter = \\\'$dbuser\\\' AND status = \\\'2\\\' ORDER BY timestamp\\\"; } if($qrynr == \\\"3\\\") { $query = \\\"SELECT * FROM tododone WHERE art = \\\'$art\\\' AND bearbeiter = \\\'$dbuser\\\' AND status = \\\'3\\\' ORDER BY timestamp\\\"; } if($qrynr == \\\"4\\\") { $query = \\\"SELECT * FROM tododone WHERE art = \\\'$art\\\' ORDER BY status\\\"; } if($qrynr == \\\"5\\\") { $query = \\\"SELECT * FROM tododone WHERE art = \\\'$art\\\' AND status = \\\'1\\\' ORDER BY timestamp\\\"; } if($qrynr == \\\"6\\\") { $query = \\\"SELECT * FROM tododone WHERE art = \\\'$art\\\' AND status = \\\'2\\\' ORDER BY timestamp\\\"; } if($qrynr == \\\"7\\\") { $query = \\\"SELECT * FROM tododone WHERE art = \\\'$art\\\' AND status = \\\'3\\\' ORDER BY timestamp\\\"; } $result = mysql_query($query); echo \\\"$query\\\"; echo \\\"<h1>$art</h1>\\\"; echo \\\"<table>\\\"; echo \\\"<tr bgcolor=\\\\\\\"E9DFCA\\\\\\\">\\\"; echo \\\"<td><center>ToDo: </center></td>\\\"; echo \\\"<td><center>Erstellt von:</center></td>\\\"; echo \\\"<td><center>Einstelldatum:</center></td>\\\"; echo \\\"<td><center>Forschritt:</center></td>\\\"; echo \\\"<td><center>In Arbeit von:</center></td>\\\"; echo \\\"<td><center>Details:</center></td>\\\"; echo \\\"</tr>\\\"; while($row = mysql_fetch_object($result)) { $status = $row->status; $id = $row->id; if($status == \\\"1\\\") { $bg = \\\"#FF7F7F\\\"; } if($status == \\\"2\\\") { $bg = \\\"#0080FF\\\"; } if($status == \\\"3\\\") { $bg = \\\"#00E090\\\"; } $datum = date(\\\"d.m.Y\\\",$row->timestamp); $uhrzeit = date(\\\"H:i\\\",$row->timestamp); echo \\\"<tr bgcolor=\\\\\\\"$bg\\\\\\\">\\\"; echo \\\"<td><center>$row->head</center></td>\\\"; echo \\\"<td><center>$row->ersteller</center></td>\\\"; echo \\\"<td><center>$datum, $uhrzeit Uhr</center></td>\\\"; echo \\\"<td><center>$row->fortschritt%</center></td>\\\"; echo \\\"<td><center>$row->bearbeiter</center></td>\\\"; echo \\\"<td><center><a href=\\\\\\\"index.php?site=tododone&action=details&id=$id\\\\\\\"><b>X</b></center></a></td>\\\"; echo \\\"</tr>\\\"; } echo \\\"</table><br><br>\\\"; }
Das hier ist dann die Schleife für die Ausgabe der Kategorien:
$query = \\\"SELECT * FROM tododone_art\\\"; $result = mysql_query($query); while($show = mysql_fetch_object($result)) { show(\\\"$show->art\\\", \\\"$qrynr\\\"); }
ich kapier es einfach nich, warum $dbuser in der MySQL-Abfrage aufeinmal immer leer ist. :>
Bitte helft mir!
Danke schonmal im Vorraus,
Azadoras
Beitrag geändert: 30.9.2007 14:24:17 von azadoras -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
soweit ich das bei meinem kurzen überflug gesehen habe ist das ganze in einer funktion d.h. alle variablen werden nicht von außerhalb in die funktion übernommen.
in den ersten zeilen setzt du das qry zusammen, allerdings wird über diesen Zeile nie die variable $dbuser gesetzt. deshalb ist die variable leer.
sollte $dbuser eine globale variable sein, dann mußt du innerhalb der funktion als erstes noch \\\"global $dbuser;\\\" schreiben. dadurch wird die globale variable $dbuser in die funktion übernommen und kann dort verwendet werden.
Ansonsten halt den dbuser der funktion mit übergeben
grüßle scout
Beitrag geändert: 30.9.2007 15:00:57 von scout -
Ah, super, vielen Dank, genau daran hats gelegen!
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage