• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Formular nach einem Formular

Mathmos

Neues Mitglied
Moin,

ich bin gerade am Rätseln, wie ich mein Vorhaben am besten umsetzten kann.

Und zwar möchte ich nach dem abschicken des Formulars und überprüfen, ob der Name schon vorhanden ist und das Passwort übereinstimmt.
Wenn das der Fall ist, ein Dropdown anzeigen lassen, in dem Farben angezeigt werden, die aus einer definierten Liste stammen. Allerdings werden dann die Farben ausgefiltert, die schon an User aus der WG vergeben sind.
Danach soll dann der User auf den abschicken Button klicken und dann soll auch erst das user Update in der Datenbank erfolgen.
Ich hoffe es war halbwegs verständlich ;)

Ich habe auch schon gedacht, wenn der User den "WG beitreten" Button klickt, dass dann, wenn Name und Passwort passen, ein Popup aufgeht mit dem Farbendropdown mit einem Button, und wenn der User diesen dann drückt, wird das Formular erst abgeschickt.
Aber das wird ja warscheinlich nur mit Javascript möglich sein.



Hier noch der bisherige Code.
PHP:
<?php 
include("auth.php");

include("dbconnect.php");

if(isset($_POST["submit"]) AND $_POST["submit"]==" WG beitreten ")
{
    // Fehlerarray anlegen
    $errors = array();
    
    // Prüfen, ob alle Formularfelder vorhanden sind
    if(!isset(    $_POST["wgname"],$_POST["wgpassword"]))
    {
        // Ein Element im Fehlerarray hinzufügen
        $errors = "Bitte benutze das korrekte Formular";
    }
    else
    {
        $wgnames = array();
        $sql = "SELECT wg_name FROM wg";
        $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
        while($row = mysql_fetch_assoc($result))
        {
            $wgnames[] = $row['wg_name'];
        }
        
        // Session user_id und Name holen, wenn nicht auslesbar -> zurück zum login
        if (isset($_SESSION["user_id"]) && isset($_SESSION["user_name"]))
        {
            $userID=$_SESSION["user_id"];
            $userName=$_SESSION["user_name"];
        }
        else
        {
            echo "Es ist ein Fehler aufgetreten.";
            echo "<br />";
            echo "Bitte neu einloggen.";
            echo ' <meta http-equiv="refresh" content="2; url=http://xxl-pc.de/cleanerplan/v1/index.php?s=login">';
        }
        
        //Prüfe, ob Nutzer schon in einer WG eingetragen ist
        $sql = "SELECT wg_id FROM user WHERE username='".mysql_real_escape_string($userName)."'";
        $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
        while($row = mysql_fetch_assoc($result))
        {
            $wgcheck = $row['wg_id'];
        }
        if ($wgcheck != 0)
            $errors[]= "Du bist bereits Mitglied einer WG";
            
        // Leerzeichen durch Unterstriche ersetzen
        $wg_name = str_replace(" ", "_", trim($_POST["wgname"]));
        
        // Prüft, ob ein WG-Name eingegeben wurde
        if(trim($_POST["wgname"])=="")
            $errors[]= "Bitte gebe einen WG-Namen ein.";
        // Prüft, ob der WG-Name nur gültige Zeichen enthält
        elseif(!preg_match("/^[a-zA-Z0-9äÄöÖüÜß_]+$/", $wg_name))
            $errors[]= "Benutze bitte nur alphanumerische Zeichen (Zahlen, Buchstaben und den Unterstrich).";
        // Prüft, ob der WG-Name bereits vergeben ist
        elseif(!in_array($wg_name, $wgnames))
            $errors[]= "Dieser WG-Name existiert nicht.";
        // Prüft, ob ein Passwort eingegeben wurde
        if(trim($_POST["wgpassword"])=="")
            $errors[]= "Bitte gebe das WG-Passwort ein.";
    }
    // Prüft, ob Fehler aufgetreten sind
    if(count($errors))
    {
        echo "Du konntest der WG nicht beitreten.<br>\n".
        "<br>\n";
        foreach($errors as $error)
        echo $error."<br>\n";
        echo "<br>\n".
        "Zurück zum <a href=\"".$_SERVER["PHP_SELF"]."\">Registrierungsformular</a>\n";
    }
    else
    {
        $sql = "SELECT wg_id FROM wg WHERE (wg_name like '".mysql_real_escape_string($wg_name)."') AND (wg_password = '".md5 ($_POST["wgpassword"])."')"; 
        $result = mysql_query($sql);
        if (mysql_num_rows($result) > 0) 
        {    
            // Benutzerdaten in ein Array auslesen. 
            $data = mysql_fetch_array ($result);

            // befehl für user update
            $sql = "UPDATE user SET wg_id='".mysql_real_escape_string($data["wg_id"])."' WHERE usr_id=".$userID." LIMIT 1 ";
            mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
            mysql_close($link);
            
            // Sessionvariablen updaten
            $_SESSION["wg_id"] = $data["wg_id"];
            
            echo "WG-Beitritt erfolgreich";
            echo "<br />";
            echo "Du wirst nun auf die Startseite weitergeleitet";
            echo ' <meta http-equiv="refresh" content="3; url=http://xxl-pc.de/cleanerplan/v1/index.php?s=start">';
            exit();
        } 
        else 
        { 
          echo "WG-Name und Passwort stimmen nicht überein!";
        }
    }                
}
?>

<form method="post" action="<?php echo "index.php?s=join"; ?>">
<a>WG-Name:</a><br />
<input type="text" name="wgname" class="rahmen" value="<?php echo htmlspecialchars($_POST["wgname"]); ?>" />
<br />
<br />
<a>Passwort:</a><br />
<input type="password" name="wgpassword" class="rahmen" />
<br />
<br />
<input type="submit" name="submit" value=" WG beitreten " />
</form>

Grüße
 
Meine Idee ist nun das ganze dann einfach abzufragen, wie schon beim ersten Button
Nun aber mit dem andern Button
PHP:
if(isset($_POST["submit"]) AND $_POST["submit"]==" Farbe wählen ")

Allerdings habe ich dann ein Problem, wie bekomme ich die Daten, die eingegebn wurden mit?
$_POST funktioniert ja dann nicht mehr.
Auch wenn ich die Werte dann in Variablen speicher, sind diese beim erneuten aufruf logischerweise leer.
Wie bekomme ich diese nun mit ohne sie in der Session speichern zu müssen?

Da fällt mir ein, ich könnte sie an die URL anhängen und dann wider abgreifen.
Aber das ist aufgrund des Passwortes ja nicht so schön, auch wenn es zu dem Zeitpunkt schon MD5 verschlüsselt wäre.
Oder kann man das machen? Ohne bedenke zu haben?

Grüße
 
Zurück
Oben