xHBBo: verschiedene Submit-Buttons in einem Formular

Beitrag lesen

Hallo Felix ,

eher so:

<form action="" method="post" id="user-management">

<fieldset>
        <legend>User bearbeiten</legend>
        <ul>
            <li>
                <label for="user-login">User-Login</label>
                <input id="user-login" name="user-login" type="text" value="xHBBo" />
                <input name="user-id" type="hidden" value="4192" />
            </li>
            <li>
                <label for="user-type">User-Typ</label>
                <select id="user-type" name="user-type">
                    <option value="user">einfacher User</option>
                    <option value="mod">Moderator</option>
                    <option value="admin" selected="selected">Administrator</option>
                </select>
            </li>
            <li>
                <label for="user-pw">User-Passwort</label>
                <input id="user-pw" name="user-pw" type="text" value="changeme" />
            </li>
            <li>
                <label for="user-pw2">User-Passwort (2x)</label>
                <input id="user-pw2" name="user-pw2" type="text" value="changme" />
            </li>
        </ul>
        <p>
            <input type="submit" name="delete-button" value="User entfernen" />
            <input type="submit" name="update-button" value="Userdaten aktualisieren" />
        </p>
    </fieldset>
</form>


>   
> Wie Du sehen kannst, bietet dieses Formular zwei Buttons, die beide verschiedene Namen(!) haben. Diese name-Attributwerte werden im $\_POST-Array als Schlüssel geführt werden. Allerdings taucht nur der Schlüssel in $\_POST auf, dessen Button auch betätigt wurde. Folgende zwei Fälle an $\_POST-Daten kannst Du mit dem vorliegenden Formular haben, wenn es exact so abgeschickt wird:  
>   
> ~~~php

// wenn "User entfernen" betätigt wurde:  

> $_POST = array(  
>     'delete-button' => 'User entfernen',  
>     'user-login'    => 'xHBBo',  
>     'user-pw'       => 'changeme',  
>     'user-pw2'      => 'changme',  
>     'user-type'     => 'admin',  
> );  
>   
> // wenn "Userdaten aktualisieren" betätigt wurde:  
> $_POST = array(  
>     'update-button' => 'Userdaten aktualisieren',  
>     'user-login'    => 'xHBBo',  
>     'user-pw'       => 'changeme',  
>     'user-pw2'      => 'changme',  
>     'user-type'     => 'admin',  
> );

Nun willst Du eigentlich zwei Dinge prüfen:

1.) Was ist zu tun?
2.) Sind die Daten OK?

Zu der ersten Frage gehst Du vielleicht so vor:

$task = '';

if (array_key_exists('delete-button', $_POST)) {
    $task = 'delete';
}

if (array_key_exists('update-button', $_POST)) {
    $task = 'update';
}

// password ok?
if (array_key_exists('user-pw', $_POST)
    && !empty($_POST['user-pw'])
    && array_key_exists('user-pw2', $_POST)
    && $_POST['user-pw'] === $_POST['user-pw2']
) {
    // password ok
    ...
}


>   
> Du kannst natürlich völlig andere Wege gehen, um Deine Userdaten handzuhaben, aber als Anregung, wie man verschiedene Submitbuttons einsetzen kann, sollte obiges Beispiel genügen.  
  
vielen dank für deine tolle Erklärung aber ich hab leider nicht diesen Aufbau. Mein User sieht eine Seite dort findet sich alle seine Einträge. Hinter jedem Eintrag soll nun ein Lösch Link / Button sein um einen Eintrag direkt zu löschen. Wenn ich dein Beispiel richtig verstanden habe wäre ich hier bereits in einem Eintrag.