Mehrere Abfragen auf einmal?

Hey,

ich hab ein Problem, und zwar möchte ich das beim Einloggen überprüft wird, was der Benutzer für ein Status hat. So sieht meine Abfrage aus:
PHP:
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);

// Abfrage wegen Status
$sql2="SELECT * FROM $tbl_name WHERE status='$status'";
$result2=mysql_query($sql2);

$status=mysql_num_rows($result2);
//25 = Status Abfragende Kunden
//50 = Kunden
//75 = Supporter
//100 = Admins

if ($count==1 and $status=="Abfrage")
{
session_register("myusername");
session_register("mypassword");
header("location:kundeab.php"); 
}
elseif ($count==1 and $status=="Kunde")
{ 
session_register("myusername");
session_register("mypassword");
header("location:kunde.php"); 
}
elseif ($count==1 and $status=='Supporter')
{ 
session_register("myusername");
session_register("mypassword");
header("location:support.php"); 
} 
elseif ($count==1 and $status=='Administrator')
{ 
session_register("myusername");
session_register("mypassword");
header("location:admin.php"); 
}

ob_end_flush();
?>

Wenn ich die Benutzerdaten eines Administrators eingebe will er mich auf die Seite von der "Abfrage" leiten.
 
Hi,

Du weist der Variablen $status eine Zahl zu (mysql_num_rows()) und vergleichst anschliessend auf diverse Strings. Keine der Bedingungen trifft also zu und einen else-Zweig gibt es nicht.

Welchen Sinn hat eigentlich die zweite Abfrage? Du fragst dort doch nur alle Benutzer ab, die einen bestimmten Status haben und merkst Dir, wie viele das waren. Welchen Status der Benutzer $myusername hat, weißt Du deshalb noch nicht. Warum nicht einfach den Datensatz aus dem ersten Result auslesen und schauen, welchen Wert das Feld status hat...

LG
 
Hi,

:confused: was genau verstehst Du denn an meiner Antwort nicht?

und zwar möchte ich das beim Einloggen überprüft wird, was der Benutzer für ein Status hat.

das tust Du in Deinem Script aber nicht.

kuddeldaddeldu hat gesagt.:
Welchen Sinn hat eigentlich die zweite Abfrage? Du fragst dort doch nur alle Benutzer ab, die einen bestimmten Status haben und merkst Dir, wie viele das waren. Welchen Status der Benutzer $myusername hat, weißt Du deshalb noch nicht. Warum nicht einfach den Datensatz aus dem ersten Result auslesen und schauen, welchen Wert das Feld status hat...

Die Logik in Deinem Script passt nicht zu dem, was Du laut Deinem ersten Post möchtest.

LG
 
Jetzt versteh ichs, sry.
Bin grad bissl neben der Kapp. Sitze heute schon den ganzen Tag an dem Script und kriege es einfach nicht hin. Würdest du mir sagen wie es am besten ginge?
Ich lerne zwar noch PHP habe aber einige Kenntnise von VB und Java.

Gruß
Dennis
 
hey,

es will nicht so wie ich....
PHP:
<?php
ob_start();
$host="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name=""; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword' and status='$status'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);

//25 = Status Abfragende Kunden
//50 = Kunden
//75 = Supporter
//100 = Admins

if (mysql_num_rows($result) == 1) {
    echo "Admin!";
    exit;
}

if (mysql_num_rows($result) == 2) {
    echo "Kunde";
    exit;
}

if (mysql_num_rows($result) == 3) {
    echo "Supporter";
    exit;
}

// Solange eine Zeile mit Daten existiert, wird dies in dem assoziativen Array
// $row abgelegt.
// Anmerkung: Wenn Sie nur eine Zeile erwarten, brauchen Sie keine Schleife.
// Anmerkung: Wenn Sie extract($row) innerhalb der folgenden Schleife
//            verwenden, können Sie damit die Variablen
//            $userid, $fullname und $userstatus erzeugen.

while ($row = mysql_fetch_assoc($result)) {
    echo $row["myusername"];
    echo $row["mypassword"];
    echo $row["status"];
}

mysql_free_result($result);

ob_end_flush();
?>

Was mach ich den da bitte falsch?
 
Du machst alles falsch, bevor wir jetzt sagen was du falsch machst, sollten wir eher fragen was du machen willst, so können wir dir wohl eher helfen.

$status ist nicht definiert, du fragst etwas ab, was du eigentlich schon wissen musst. Das passt vorne und hinten nicht.

Wenn du wissen willst, welchen status der Benutzer hat, nimm status aus der SQL-Abfrage raus.
Und das mysql_num_rows passt gar nicht zu den einzelnen Rechten der Benutzer.
 
Zuletzt bearbeitet:
Hi,

PHP:
<?php
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword' and status='$status'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);

if (mysql_num_rows($result) == 1) {
    echo "Admin!";
    exit;
}

if (mysql_num_rows($result) == 2) {
    echo "Kunde";
    exit;
}

if (mysql_num_rows($result) == 3) {
    echo "Supporter";
    exit;
}


?>

Was mach ich den da bitte falsch?

:confused: Was hätte das denn werden sollen?

Ich übersetze mal:
- Lies alle Benutzer aus der Tabelle, die $myusername heissen, das Passwort $mypassword und den Status $status haben (wie auch immer Du $status überhaupt gefüllt hast...).
- Wenn es einen Benutzer gibt, auf den das zutrifft, gib 'Admin' aus.
- Wenn es zwei Benutzer gibt, auf die das zutrifft, gib 'Kunde' aus.
- Wenn es drei Benutzer gibt, auf die das zutrifft, gib 'Supporter' aus.

Ich glaube nicht, dass es das ist, was Du wolltest. Überlege Dir doch erstmal eine sinnvolle Logik zu Deinem Vorhaben. Einen Ansatz dazu habe ich Dir doch schon genannt.

LG
 
Haja genau, das was du grade hier übersetzt hast, will ich auch machen.

Ich möchte halt das wenn der Status "1" mit einem Benutzernamen übereinstimmt, dass er auf eine andere Seite weitergeleitet wird.
Beispiel:

Datenbank sieht so aus:
username | password | status
Dennus | test | 1

1 steht zb. für Admin.

Ich logge mich ein mit "Dennis" und "test"
Und der leitet mich auf die entsprechende Seite weiter.

Dies macht aber mein Code nicht, er zeigt mir nicht mal beim Testlauf den Text "Admin!" an..... Da läuft ja was fallsch. Ich versteh das ganze langsam nicht mehr :(
 
Zurück