PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : NULL abfragen (mysql)


Woosh
04.03.2007, 00:50:46
kann mir jemand sagen, wieso dieser quellcode hier alle user ausgibt, NUR NICHT DEN ERSTEN? versteh das überhaupt ned!

$sql="SELECT StatusID FROM ".$table." WHERE UserSession='".session_id()."'";
$result=mysql_query($sql);
$arr_sql=mysql_fetch_assoc($result);
// Wenn Admin:
if($arr_sql['StatusID']==1)
{
echo "<font class='ueberschrift2'>Hier ist eine Liste ALLER Member!</font><br>";
$sql2="SELECT * FROM ".$table;
$result2=mysql_query($sql2);
$arr_sql2=mysql_fetch_assoc($result2);
echo "<table border='1' cellspacing='0'>";
echo "<tr>
<th>UserID</th>
<th>Username</th>
<th>Passwort (MD5)</th>
<th>StatusID</th>
</tr>";
while($arr_sql2=mysql_fetch_assoc($result2))
{
if($arr_sql2['UserSession']!=0)
{
$farbe="#AAFFAA";
}
else
{
$farbe="#FFAAAA";
}
if($arr_sql2['StatusID']==1)
{
$status="Admin";
}
else
{
$status="User";
}
echo "<tr bgcolor='".$farbe."'>";
echo "<td>".$arr_sql2['UserID']."</td>";
echo "<td>".$arr_sql2['UserName']."</td>";
echo "<td>".$arr_sql2['UserPass']."</td>";
echo "<td>".$status."</td>";
echo "</tr>";
}
echo "</table>";
}
// Wenn User:
else if($arr_sql['StatusID']==2)
{
echo "<font class='ueberschrift2'>Um diese Seite zu sehen musst du als Administrator eingeloggt sein!</font>";
}

raven22k
04.03.2007, 09:27:48
ich sehe eigentlich keinen fehler im script, versuch mal anstatt mysql_fetch_assoc() - mysql_fetch_array() vielleicht hilft das ja aber ich vermute nicht

Woosh
04.03.2007, 10:26:22
nein, das bringt auch nichts... bitte heeeeeeelft mir... :-(
nur zur info: es sind 3 user:
-test
-user
-admin
(stehen genau in dieser reihenfolge in meiner datenbank
und angezeigt werden nur user und admin!

meikel (†)
04.03.2007, 11:22:57
kann mir jemand sagen, wieso dieser quellcode hier alle user ausgibt, NUR NICHT DEN ERSTEN? versteh das überhaupt ned!
Deshalb:

$sql2="SELECT * FROM ".$table;
$result2=mysql_query($sql2);
$arr_sql2=mysql_fetch_assoc($result2); # hier wird der 1. Datensatz abgeholt
echo "<table border='1' cellspacing='0'>";
echo "<tr>
<th>UserID</th>
<th>Username</th>
<th>Passwort (MD5)</th>
<th>StatusID</th>
</tr>";
while($arr_sql2=mysql_fetch_assoc($result2)) # hier werden alle weiteren Datensätze abgeholt.
{
...
}

Woosh
04.03.2007, 11:25:32
hmm... und wie kann ich das verhindern? kann man diesen "puffer" irgendwie leeren oder so?

meikel (†)
04.03.2007, 11:33:02
hmm... und wie kann ich das verhindern? kann man diesen "puffer" irgendwie leeren oder so?
Gegenfrage: wieso holst Du den 1. Datensatz VOR der Schleife ab, ohne die Daten überhaupt zu verwenden?

mysql_data_seek — Bewegt den internen Ergebnis-Zeiger

Woosh
04.03.2007, 12:22:01
wie genau meinst das mit dem mysql_data_seek? ich bekomm das grad ned wirklich hin... soweit ich nachgelesen hab gehört das zum $result dazu... aber wie genau?

raven22k
04.03.2007, 12:49:25
ah jetzt sehe ich es auch :D, ganz übersehen:


<?
$sql2="SELECT * FROM ".$table;
$result2=mysql_query($sql2);
$arr_sql2=mysql_fetch_assoc($result2);
/*Warum rufst du hier die funkton mysql_fetch_assoc auf und machst nicht mit $arr_sql2 - Wie meikel schon geschrieben hat wird hier der erste Datensatz geholt*/
echo "<table border='1' cellspacing='0'>";
echo "<tr>
<th>UserID</th>
<th>Username</th>
<th>Passwort (MD5)</th>
<th>StatusID</th>
</tr>";
while($arr_sql2=mysql_fetch_assoc($result2))
/*Hier wird dann der rest geholt, allerdings fehlt natürlich der erste Satz :) */
{
...
}
?>


versuch es einfach mal hiermit:


<?
$sql="SELECT StatusID FROM ".$table." WHERE UserSession='".session_id()."'";
$result=mysql_query($sql);
$arr_sql=mysql_fetch_assoc($result);
// Wenn Admin:
if($arr_sql['StatusID']==1)
{
echo "<font class='ueberschrift2'>Hier ist eine Liste ALLER Member!</font><br>";
echo "<table border='1' cellspacing='0'>";
echo "<tr>
<th>UserID</th>
<th>Username</th>
<th>Passwort (MD5)</th>
<th>StatusID</th>
</tr>";
$sql2="SELECT * FROM ".$table;
$result2=mysql_query($sql2);
while($arr_sql2=mysql_fetch_assoc($result2))
{
if($arr_sql2['UserSession']!=0)
{
$farbe="#AAFFAA";
}
else
{
$farbe="#FFAAAA";
}
if($arr_sql2['StatusID']==1)
{
$status="Admin";
}
else
{
$status="User";
}
echo "<tr bgcolor='".$farbe."'>";
echo "<td>".$arr_sql2['UserID']."</td>";
echo "<td>".$arr_sql2['UserName']."</td>";
echo "<td>".$arr_sql2['UserPass']."</td>";
echo "<td>".$status."</td>";
echo "</tr>";
}
echo "</table>";
}
// Wenn User:
else if($arr_sql['StatusID']==2)
{
echo "<font class='ueberschrift2'>Um diese Seite zu sehen musst du als Administrator eingeloggt sein!</font>";
}
?>

Woosh
04.03.2007, 13:38:03
ja jetzt gehts... aber kann mir jemand mal genau sagen, wieso das jetz nicht ging? ich versteh das ned ganz... logisch gesehen kann es garnicht funktionieren weil $arr_sql2 ja nirgendwo definiert wurde!

raven22k
04.03.2007, 13:47:40
ja jetzt gehts... aber kann mir jemand mal genau sagen, wieso das jetz nicht ging? ich versteh das ned ganz... logisch gesehen kann es garnicht funktionieren weil $arr_sql2 ja nirgendwo definiert wurde!

dein vorschlag ging nicht, da du zweimal $arr_sql2=mysql_fetch_assoc($result2) benutzt hast . beim ersten mal hast du den ersten datensatz geholt und mit ihm nichts gemacht. beim zweiten mal hast du die restlichen datensätze geholt und sie ausgeben, dadurch fehlte der erste datensatz


<?
while($arr_sql2=mysql_fetch_assoc($result2))
?>


hier wird doch $arr_sql2 definiert ;)

Woosh
04.03.2007, 14:13:50
omg, ja stimmt ^^... okay, danke für die erklärung :-) vühlen däänk...

raven22k
04.03.2007, 14:25:40
gern geschehen ;) mir ist allerdings zuerst auch nicht aufgefallen erst als meikel es erwähnte :D