Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Wahre Bedingung abbrechen

  1. #1
    Registrierter Benutzer
    Registriert seit
    26.06.2003
    Ort
    Ooooala
    Beiträge
    20

    Wahre Bedingung abbrechen

    Hallo Ihrs,

    ich habe ein Problem, bei dem ich einfach nicht weiterkomme. Es geht um den Abbruch einer zunaechst wahren elseif-Bedingung.

    Ich habe ein PHP-Formular-Skript geschrieben, das grob so aussieht:

    <- Skriptanfang ->

    PHP-Anfang
    if(!isset($HTTP_POST_VARS['submit']))
    {
    PHP-Ende

    <html - Tabelle mit zu uebergebenden Variablen>

    PHP-Anfang
    } //if-Abfrage von oben schliesst sich

    //Fehlerabfangroutinen
    elseif($HTTP_POST_VARS['submit'] && $HTTP_POST_VARS['vorname'] == "")
    {
    tu irgendwas;
    }

    elseif (...)
    {
    ...
    }

    //wenn alles fehlerfrei, dann in DB eintragen

    else
    {
    //Passwort generieren

    //Daten in DB eintragen
    $sql = "INSERT INTO ...";
    $result = ...

    echo 'Erfolgreicher Eintrag';
    }

    PHP-Ende

    <- Skript-Ende ->

    Nun moechte ich in das Skript noch eine Fehlerabfangroutine eintragen, die ueberprueft, ob der Loginname schon vorhanden ist.
    Dazu habe ich eine elseif-Bedingung gebastelt, in die auf alle Faelle reingesprungen wird, weil die Bedingung immer wahr ist. In der Bedingung gleicht er nun den vom User eingegebenen Wert mit der Datenbank ab. Wenn ein Datenbankergebnis vorliegt, soll er eine Fehlermeldung ausgeben.
    Soweit funktioniert das ganze auch.
    Nun soll aber die elseif-Schleife abgebrochen werden, wenn kein Ergebnis vorliegt.

    Folgendermassen sieht mein Versuch aus, der aber nicht funktioniert :-(

    elseif (wahreBedingung)
    {
    $select = "SELECT * FROM ...";
    $abfrage = mysql_query(...) or die ("Ungültige Abfrage: " .mysql_error());
    $ergebnis = mysql_fetch_row($abfrage);
    if ($ergebnis)
    {
    echo 'Wert existiert.';
    }

    else (empty($ergebnis))
    continue;
    }

    Kann mir jemand helfen, das so zu aender, dass es geht?! Irgendwie komme ich nicht auf die Loesung. Funktionieren denn continue oder break nur mit while bzw. switch-Abfragen?

    Wuerde mich ueber Hilfe freuen,
    schuelsche

    PS: diesmal suche ich schon eine ganze Weile nach der Loesung... vielleicht habe ich aber auch irgendwo einen Denkfehler und man kann die Abfrage einfacher darstellen...

  2. #2
    Registrierter Benutzer Avatar von Stanislaus
    Registriert seit
    04.07.2003
    Ort
    Mönchengladbach
    Beiträge
    80
    Moin!

    Also ich würde das ganze ein wenig anders aufbauen. Um zu überprüfen, ob User xy bereits existiert schreibts Du Dir eine Funktion:
    PHP-Code:
    function userExists($strUserName)
    {
        
    $select "SELECT * FROM ...";
        
    $abfrage mysql_query(...) or die ("Ungültige Abfrage: " .mysql_error());
        
    $ergebnis mysql_fetch_row($abfrage);
        if (
    $ergebnis)
        {
           return 
    true;
        }
        else
        {
           return 
    false;
         }

    Dann lässt Du die "immer wahre" else if Bedingung weg und prüfst stattdessen auf:
    PHP-Code:
    ...
    else if ( 
    userExists($_POST['username']) )
    { ... 
    Wenn der Benutzer existiert gibt die Funktion true zurück und der else if Bereich wird ausgeführt. Existiert der User nicht wird die nächste else Bedingung ausgewertet.

    Hoffe geholfen zu haben.

    Viel Erfolg!
    Geändert von Stanislaus (30-11-2003 um 06:32 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    26.06.2003
    Ort
    Ooooala
    Beiträge
    20
    Vielen Dank für den Funktions-Tip, das werde ich auf alle Fälle testen ;-)

    Mein Problem ist jetzt nur - wo baue ich die Funktion ein, dh. an welcher Stelle des Skripts? Gehen kann das ja erst nach der ersten if-Abfrage (if(!isset(...)). Nur wenn ich es einfach mittenrein setze, also zwischen die erste if-Abfrage und die nächste elseif-Abfrage, dann bringt mir das Skript doch einen Fehler? Also müsste die Funktion doch in eine elseif-Abfrage, die wahr sein muss?! Oder ganz am Ende in den else-Teil, der auf alle Fälle ausgeführt wird, da hier keine Bedingung erforderlich ist?!

    Grüsse
    schuelsche

  4. #4
    Registrierter Benutzer Avatar von Stanislaus
    Registriert seit
    04.07.2003
    Ort
    Mönchengladbach
    Beiträge
    80
    Pack die Funktion an den Anfang oder ans Ende Deines Scriptes. Wenn Du magst auch in eine extra Datei, die Du dann includieren kannst.
    Im Prinzip ist es Wursch wo die Funktion steht, nur mitten in einer if {} else {} Bedingung wird das nicht funktionieren.

    Bis neulich ...

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •