Hilfe bei einfachen IF Abfragen

02/12/2015 23:00 Smαrtiez#1
Hallo, ich habe gleich zwei Probleme und schon selbst in diversen Foren und auch hier gesucht .. komme aber nicht wirklich zu einer Lösung und hoffe nun hier auf Hilfe.

Mein erstes Problem liegt darin, das bei meinem Loginscript nicht auf die Groß und Kleinschreibung geachtet wird. In der Datenbank steht z.b "Benutzer", jedoch könnte man sich auch mit BENUTZER oder BeNuTzEr einloggen, dementsprechend wirft mir die Session auch diesen Namen aus. Ich möchte allerdings das die Groß und Kleinschreibung beim einloggen beachtet wird und sich nur mit dem eingeloggt werden kann was auch in der Datenbank steht, in dem Fall "Benutzer".

Ich prüfe den Login so:


Ich hab dazu nun diversen Sachen im Internet gefunden wie ich soll BINARY verwenden oder !== jedoch hat das alles nicht funktioniert. Ich hatte dieses Problem bereits 1x jedoch mit einer Mysql Datenbank dort hab ich statt für sql_clean einen anderen Befehl gehabt .. nur ist mir dieser leider entfallen.

Mein zweites Problem wäre eine Abfrage aus der Datenbank (Siehe Abb.).


Gewöhnliche Abfragen aus 1 Tabelle krieg ich soweit hin, das würde ungefähr so aussehen:

Code:
$rang = "SELECT nAuthID FROM dbo.tUser WHERE sUserID = '".$_SESSION['username']."'";
$rangresult = mssql_query($rang);
while($row = mssql_fetch_object($rangresult)) {
if($row->nAuthID == "9") {
	echo 'Rang: Administrator';
} else {
	echo 'Rang: Spieler';	
}
}
Ich möchte nun aber vom eingeloggten User die "nUserNo" in der dbo.tUser ermitteln und mit der "nUserNo" soll dann der "cash" des Benutzer aus der dbo.tCash ausgelesen werden, allerdings nur wenn der Status auf True steht. Bei False soll nur nen Strich oder whatever ausgegeben werden. Bei mir sieht das dann so aus:

Code:
$selectid = "SELECT nUserNo FROM dbo.tUser WHERE sUserID = '".$_SESSION['username']."'";
$idresult = mssql_query($selectid);
while($row = mssql_fetch_object($idresult)) {
$coins = "SELECT cash FROM dbo.tCash WHERE userNo = '".$row->nUserNo."'";
$coinsresult = mssql_query($coins);
while($rowl = mssql_fetch_object($coinsresult)) {
echo 'Coins: '.$rowl->cash;	
}
}
Zum einen funktioniert das ganze nur teilweise, zum anderen bin ich mir sicher das es so nicht auszusehen hat! Daher bräuchte ich auch an der Stelle mal Hilfe.

Ich würde mich freuen, wenn sich jemand dem anmimmt.
02/12/2015 23:10 Warnuk3r#2
Fürs zweite Problem:

Schau dir mal Inner join an. Habs mal auf die schnelle versucht:

SELECT dbo.tUser.nUserNo, dbo.tCash.cash, dbo.tCa******atus FROM dbo.tUser INNER JOIN dbo.tCash ON dbo.tUser.nUserNo=dbo.tCash.userNo WHERE dbo.tCa******atus = 'true'

Keine Ahnung ob das WHERE dahinter richtig ist, vllt wars doch ein on. Zu lange her, schau dir einfach mal joins an xD
02/13/2015 13:38 Smαrtiez#3
Ersteres hab ich nun mit einer Abfrage gelöst. Den Befehl den ich gesucht habe war LIKE allerdings funktioniert das ganze mit mssql irgendwie nicht?

Zweiteres schau ich mir mal an. ^^
02/13/2015 22:30 _robox#4
du musst nur sicherstellen das die abfrage immer gleich ist. das machst du am besten in denn du alles in groß oder klein umwandelst.

PHP Code:
$sql1 mssql_query('SELECT * FROM dbo.tUser WHERE UPPER (sUserID) ='strtoupper($username)); 
weise jetzt nicht genau ob es bei mssql auch UPPER gibt oder ob da die Funktion zur Umwandlung
ein anderen Name hat das Beispiel ist für mysql