boolsche werte...

Amschti

Erfahrenes Mitglied
Ich dreh fast durch! ich weiss echt nicht was mit mir los ist.... jedes noch so komplexe problem ist mittlerweile keins mehr aber nach 2 stunden hab ich nun resigniert!

Ich will einer variable den wert false geben, falls der pw vergleich nicht geklappt hat.... aber irgendwie funktioniert es nicht, ich könnte das ganze anders gestallten jedoch sind diese seiten (header, verwendung, weiterleitung per include zusammengesetzt und muss deshalb so geschrieben werden....

also das ist der Code:

PHP:
$verbindung = mysql_connect("....", "......" , "......")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
mysql_select_db(".....") or die ("Datenbank konnte nicht ausgewählt werden");

$_POST[passwort] = md5($_POST[passwort]);


$ergebnis = mysql_query("SELECT * FROM doku_user WHERE mail == '$_POST[mail]' && password == '$_POST[passwort]' ");

if((mysql_num_rows($ergebnis)==1)or (mysql_num_rows($ergebnis)>=1)){
    $work = true;
} else{
    $work = false;
}

if($work == true)
  ){
    header('Location:../../index2.php');
}else{
    header('Location:../../fehler.php');
}
?>

es wird erkannt wenn es keine übereinstimmung gibt... das funktionert ja einwandfrei, aber die variable work ist immer auf true....

ich bin mir zu 99.9% sicher das ich dies schonmal so gelöst habe und es kein problem gab... was mach ich falsch?
 
Zuletzt bearbeitet:
Die zweite Bedingung enthält doch auch die erste, denn "= 1" wird mit ">= 1" auch abgeglichen.

Außerdem ist doch das doppelte "==" innerhalb der SQL-Abfrage falsch, hier darf beim Vergleichen doch nur eines verwendet werden.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Joe
ist das nicht bei javascript der fall? ich dachte bei php bedeutet >= nur "grösser als"? ich habe den Code schon lange in meiner libary?

ok hast recht :D tztztz... *kopfschüttelschämm*


Das ist aber nicht das problem :)
 
Zuletzt bearbeitet:
Also eigentlich darf nur TRUE erreicht werden wenn es genau einen Treffer in der Datenbank gibt. Deshalb kannst du die zweite Bedingung (die größer oder gleich bedeutet) meiner Meinung nach raus nehmen.

Dann vielleicht noch die Variable zuvor mit FALSE deklarieren.
 
  • Gefällt mir
Reaktionen: Joe
Die Variable kann ja nur auf False gehen wenn der Wert größer als 1 wird, also ab 2 aufwärts.

Ich gehe mal davon aus das du in deiner MySQL Tabelle die Daten nicht zweimal hast also wird der Wert auch niemals auf false gehen.

Ich glaube du versuchst hier einmal den Wert 1 oder 0 zu finden oder?

Es kann auch sein das ich dich komplett falsch verstanden habe und du einfach nur versuchst zu überprüfen ob der Benutzername schon vorhanden ist aber dann würde das mit dem Passwort ja keinen Sinn ergeben oO
 
PHP:
if((mysql_num_rows($ergebnis)!=0){
    $work = true;
} else{
    $work = false;
}
is das gleiche aber Tombe hat recht. Du musst in deiner WHERE Bedingung zum SQL ein einfaches= kein doppeltes == verwenden.
Das wird sonst immer false bzw. Errors werfen.
 
Zuletzt bearbeitet:
neee, das problem ist ein anderes wenn ich ein falsches passwort eingebe sollte doch die else bedingung die variable work auf false setzen....

Du hast vollkommen recht das mit dem >= ... dies hab ich weil ich diesen schnipsel in meinem scriptly editor gespeichert habe und es auch für andere sachen verwende, jedenfalls kann man sich gar nicht doppelt registrieren..... dafür hab ich schon gesorgt ;)

es geht wirklich nur darum das

PHP:
<?php

{
    $work = true;
} else{
    $work = false;}

?>

nicht funktioniert.. bzw.

das danach

PHP:
<?php

if($work == true)
  ){
    header('Location:../../index2.php');
}else{
    header('Location:../../fehler.php');
}
?>

immer auf true ist.... ich will doch einfach das die variable false ist****** :D

ich dreh fast durch :D
 
also ich versuchs mal so..... :D

wieso funktioniert das nicht?

PHP:
<?php

$work = false;

if($work == true)
  ){
    header('Location:../../index2.php');
}else{
    header('Location:../../fehler.php');
}
?>

Ich weiss das ich kein profi bin, aber der wert sollte doch jetzt auf false sein?....
 
Es kann nicht immer true sein!
Wenn das Passwort und Name übereinstimmen ist es true und leitet dich weiter wenn nicht dann wo anders hin.
Hast du das SQL bearbeitet? zeig mal was du zuletzt stehen hast bitte.

Ach jetzt sehe ichs da is ne klammer zuviel :D

PHP:
if($work == true) {
    header('Location:../../index2.php');
} else {
    header('Location:../../fehler.php');
}
 
Zuletzt bearbeitet:
problem gelöst...... ich hab nicht den ganzen Code euch gezeigt! da ich es nicht für relevant hielt....

ich hatte

PHP:
<?php

if( ($work == true) or (empty($work))
?>

ich dachte nicht das false gleichzeitig auch empty bedeutet..... Sorry jungs und mädels, jetzt muss ich dutzende seiten neu schreiben :(
 

Neue Beiträge

Zurück