if, else, elseif ... nix passiert

nasty

Grünschnabel
Hallo,

für den anfang habe ich mir ein kleines script gebastelt... Es soll:
-prüfen ob die beiden Felder im Formular ausgefüllt sind
-prüfen ob der Benutzername bereits in der Datenbank vorhanden ist
-falls nicht einen anlgen (bzw erstmal irgendwas machen)

(soweit so gut, nur der letzte else befehl wird irgendwie ignoriert. Bekomme nichtmal eine Fehlermeldung)

PHP:
<?php
include 'settings/connect.php';

// check ob Feld username leer ist
if(!isset($_POST['nick']) || $_POST['nick'] == ""){
    
echo '<link rel="stylesheet" href="look.css"><div align="center" class="textfehler">Einen Benutzernamen brauchen wir schon...<br><a href="newuser.html">zur&uuml;ck</a> </div>';

// check ob Feld usermail leer ist
}elseif(!isset($_POST['mail']) || $_POST['mail'] == ""){

echo '<link rel="stylesheet" href="look.css"><div align="center" class="textfehler">Eine eMailadresse brauchen wir schon...<br><a href="newuser.html">zur&uuml;ck</a> </div>';

// check Name bereits vorhanden
}else{
$query = @mysql_query("SELECT username FROM users WHERE username = '".$_POST['nick']."'");
$result = @mysql_fetch_array($query)or die(mysql_error());
if($_POST['nick'] == $result['username']) {

echo '<link rel="stylesheet" href="look.css"><div align="center" class="textfehler">Sorry aber der Benutzername ist bereits vorhanden...<br><a href="newuser.html">zur&uuml;ck</a> </div>';

}else{
echo "Hallo";
  }
}

?>

Kann eigentlich nur an der Schreibweise liegen oder?
alles funktioniert, nur ich komme bei einer richtigen eingabe nie bei dem echo befehl an...

Vielen Dank schonmal für eure Antworten, komme grad echt nich weiter

...irgendwie ist da der Wurm drinn, habs grad noch ein paarmal probiert, komme aber einfach nicht drauf. Alles funktioniert nur die letzte else Anweisung wird bei einer "richtigen" Eingabe ignoriert :mad:
 
Zuletzt bearbeitet:
also ich hab den Skript gerade mal an meine DB angepasst und hab in ner Test-DB ein Feld mit username = Test angelegt. Nun hab ich direkt im Skript den $_POST[]-Block durch Test ersetzt und kam seltsamerweise bei "Hallo" raus. Also da stimmt was net. Ich prüfe es mal schnell
 
Probiers mal so ...

PHP:
   <?php
include 'settings/connect.php';

// check ob Feld username leer ist
if(isset($_POST['nick']) and isset($_POST['mail'])){

$passt = 1;

if(empty($_POST['nick'])){
$SESSION["errornick"] =  '<link rel="stylesheet" href="look.css"><div align="center" class="textfehler">Einen Benutzernamen brauchen wir schon...<br><a href="newuser.html">zur&uuml;ck</a> </div>';
$passt = 0;
}

// check ob Feld usermail leer ist
if(empty($_POST['mail'])){
$SESSION["errormail"] = '<link rel="stylesheet" href="look.css"><div align="center" class="textfehler">Eine eMailadresse brauchen wir schon...<br><a href="newuser.html">zur&uuml;ck</a> </div>';
$passt = 0;
}
}

// check Name bereits vorhanden
if($passt){

$query = @mysql_query("SELECT username FROM users WHERE username = '".$_POST['nick']."'");
$result = @mysql_fetch_array($query)or die(mysql_error());
if($_POST['nick'] == $result['username']) {

echo '<link rel="stylesheet" href="look.css"><div align="center" class="textfehler">Sorry aber der Benutzername ist bereits vorhanden...<br><a href="newuser.html">zur&uuml;ck</a> </div>';

}else{
echo "Hallo";
  }
}else{
// Formular etc.

echo $SESSION["errormail"];

echo $SESSION["errornick"];
}

?>

//edit; kleine Fehler behoben
 
Zuletzt bearbeitet:
ach stimmt, die nutzung von mysql_fetch_array() ist nicht so ratsam, nutz lieber mysql_fetch_row() oder mysql_fetch_assoc(). Grund: Speicherauslastung. Lass dir einfach mal für jede der 3 Versionen einen Array erzeugen und gib ihn per print_r() aus. Dann siehst du, dass bei mysql_fetch_array() für jede Splate 2 Elemente erzeug werden, eines mit einem numerischen Index, und eines mit einem assoziativen Index.

Wenn du nun foreach auf diesen Array anwendest, erhälst du jede Spalte 2x. Das taugt dann nix.
 
Habs mal ausprobiert, leider funtioniert die Abfrage ob die Felder leer sind auf die art nicht bei mir... probier so aber mal weiter... wesentlich eleganter die art :)
 
@Rafty2000: Man lernt doch nie aus, danke für den Tipp... irgendwie komme ich bei meinem else Befehl leider immernoch nicht an, aber so sieht das ganze schon besser aus
 
Habs mal ausprobiert, leider funtioniert die Abfrage ob die Felder leer sind auf die art nicht bei mir... probier so aber mal weiter... wesentlich eleganter die art :)

Hatt einen Fehler drinnen ... Kopier jetzt nochmal den Code dann müsste es funktionieren

PHP:
   <?php
include 'settings/connect.php';

// check ob Feld username leer ist
if(isset($_POST['nick']) and isset($_POST['mail'])){

$passt = 1;

if(empty($_POST['nick'])){
$SESSION["errornick"] =  '<link rel="stylesheet" href="look.css"><div align="center" class="textfehler">Einen Benutzernamen brauchen wir schon...<br><a href="newuser.html">zur&uuml;ck</a> </div>';
$passt = 0;
}

// check ob Feld usermail leer ist
if(empty($_POST['mail'])){
$SESSION["errormail"] = '<link rel="stylesheet" href="look.css"><div align="center" class="textfehler">Eine eMailadresse brauchen wir schon...<br><a href="newuser.html">zur&uuml;ck</a> </div>';
$passt = 0;
}
}

// check Name bereits vorhanden
if($passt){

$query = @mysql_query("SELECT username FROM users WHERE username = '".$_POST['nick']."'");
$result = @mysql_fetch_array($query)or die(mysql_error());
if($_POST['nick'] == $result['username']) {

echo '<link rel="stylesheet" href="look.css"><div align="center" class="textfehler">Sorry aber der Benutzername ist bereits vorhanden...<br><a href="newuser.html">zur&uuml;ck</a> </div>';

}else{
echo "Hallo";
  }
}else{
// Formular etc.

echo $SESSION["errormail"];

echo $SESSION["errornick"];
}

?>
 
Zuletzt bearbeitet:
Ok dass andere schau ic mir ncoh an -.-
Was ich noch machen würde, wäre die Beiden Fehlermeldungen in deinem Anmeldeformular anzeigen zu lassen ...

Also habe eines gemerkt, die die if-Abfrage geht ... also er zeigt mir an, dass es einen Benutzer gibt ^^

Schreib mal den rest so ...
PHP:
if($_POST['nick'] == $result['username']) {

echo '<link rel="stylesheet" href="look.css"><div align="center" class="textfehler">Sorry aber der Benutzername ist bereits vorhanden...<br><a href="newuser.html">zur&uuml;ck</a> </div>';

}else{
?> test <?
}
}
else
{
 
Zuletzt bearbeitet:
Zurück