Abfrage wird falsch umgesetzt

PHP-Fan

Erfahrenes Mitglied
Hallo,

leider wird das "print" immer angezeigt. Egal ob der User als user oder als admin in der DB steht!

PHP:
<?php
include ("checkuser.php");

?>
<html>
<head>
  <title>Login: Matrikelnummer <?php echo $_SESSION["user_matrikelnummer"]; ?></title>
  <LINK href="style.css" type=text/css rel=stylesheet>
</head>
<body>
<b>User Control Panel</b><br><br>
  Vorname: <?php echo $_SESSION["user_vorname"]; ?><br>
  Matrikelnummer: <?php echo $_SESSION["user_matrikelnummer"]; ?><br>
  <br>
  <hr>
  <br>
  Hier erscheinen die "Noten"
  <br>
  <br>
  <hr>


<?php

$host = "localhost";
$user = "";
$password = "";
$dbname = "";
$tabelle ="";

$dbverbindung = mysql_connect ($host, $user, $password);

$dbanfrage = "SELECT * FROM $tabelle WHERE `rank` = 'admin' ";

$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung) or die(mysql_error());

 while ($ausgabe = mysql_fetch_array ($result))
 {
 print ("(Admin) Studenten: <a href='add_student.php'>Hinzufügen</a> | <a href='edit_student.php'>Editieren</a> | <a href='delete_student.php'>Entfernen</a><br>");
 }

mysql_close ($dbverbindung)


?>

(User) My Account: <a href="logout.php">Ausloggen</a>
</body>
</html>
?>

Was mache ich falsch?

wenn Rank = admin zutrifft, soll er das machen:
PHP:
<?
print ("(Admin) Studenten: <a href='add_student.php'>Hinzufügen</a> | <a href='edit_student.php'>Editieren</a> | <a href='delete_student.php'>Entfernen</a><br>");
?>

Wenn nicht Rank = User oder was anderes ist, soll er einfach nichts ausgeben an der stelle...
 
PHP-Fan hat gesagt.:
Wenn nicht Rank = User oder was anderes ist, soll er einfach nichts ausgeben an der stelle...
So ganz richtig hast Du das jetzt nicht beschrieben.
Denn Du pruefst ja nicht bei der Ausgabe was in Rank steht sondern legst es bei der MySQL-Query fest.
Somit sollten eigentlich alle ausgelesenen Eintraege den gewuenschten Rank haben und keinen einen anderen.

Pro Admin in der Datenbank sollte also einmal Dein print() ausgefuehrt werden.
 
Naja, wie soll ich es denn sonst machen. Das was dort im print steht soll nur den Usern angezeigt werden, bei dennen in der DB bei spalte rank = admin steht angezeigt werden. Steht dort User oder was anderes soll das eben halt nicht angezeigt werden. Jetzt verstanden?

Hoffe ihr könnt mir helfen!
 
Hallo!

Der User-Rank ist in der Userdatenbank eingetragen?
Die Userdatenbank wird beim Login abgefragt?
Dann frage dabei auch den User-Rank ab und speicher ihn in der Session.

Anschliessend steuerst Du mit einer if-Anweisung was bei welchem User-Rank passieren soll:
PHP:
if($_SESSION["user_rank"] == "admin") {
echo "Du bist Admin und darfst Einträge hinzufügen.";
} else {
echo "Du bist \"nur\" User und darfst lediglich gucken. *Ätschibätsch*";
}
Wenn jeder User alle Einträge sehen soll, lass das WHERE weg.
Natürlich solltest Du in den anderen Scripten auch eine if-Anweisung machen ob der User überhaupt Admin ist..... denn sonst könnte man die Scripte ja auch per Hand aufrufen.

Gruss Dr Dau
 
Zurück