3 Stimmen

Hinzufügen/Anzeigen/Bearbeiten von mysql-Einträgen mit demselben php-Formular

Ich habe ein PHP-Formular zum Hinzufügen von Einträgen in eine MySQL-Datenbank geschrieben, das wie folgt aussieht erstes Bild hier. Ich möchte jedoch dasselbe Formular auch verwenden, um Informationen, die sich bereits in der Datenbank befinden, anzuzeigen und zu bearbeiten, wie auf dem zweiten und dritten Foto zu sehen ist. Wie lässt sich das am einfachsten bewerkstelligen?

1voto

Leniency Punkte 4884

Im Allgemeinen ist es recht einfach, dasselbe Formular zu verwenden. Eine andere Frage ist, wie Sie Validierungsfehler beheben, ohne dass der Benutzer das Formular erneut ausfüllen muss - dies wird im selben Prozess gelöst. Sie benötigen einige Hilfsprogramme für die Auswahlfelder und alle Kontrollkästchen/Radio-Felder. Was genau die Helfer tun, bleibt Ihnen überlassen, aber diese werden Ihnen den Einstieg erleichtern:

function radio($name, $value, $selected_value)
{
    $checked= ($value === $selected_value) ? 'checked="checked"' : null;

    return '<input type="radio" name="'.$name.'" value="'.$value.'" '.$checked.' />';
}

Der Checkbox-Helper ist so ziemlich genau dasselbe. Die Auswahloptionen sind ziemlich ähnlich:

function select_option($text, $value, $selected_value)
{
    $selected= ($value === $selected_value) ? 'selected="selected"' : null;
    return '<option value="'.$value.'" '.$selected.'>'.$text.'</option';
}

Die Verwendung in der Form sieht etwa so aus:

<?
    if ($_POST)
    {
        // TODO: Clean post data here - xss, magic_quotes, stripslashes, etc...
        $cleaned_post = clean($_POST);

        // TODO: perform whatever validation you need
        if (validate($cleaned_post))
        {
            // insert, update, etc...
            $myDatabase->Save($cleaned_post, $id);
            redirect_to('another_page.php');  // redirect if need be, or stay here
        }

        $data = $cleaned_post;
    }
    else  // Not posted, pull from database
    {
        $data = array();  // Initialize to empty array
        // Attempt to pull from database.  $id comes from somewhere... $_GET?         
        // If $id isn't set, no worries.
        if ($id)
           $data = $myDatabase->Find($id);
    }

    // TODO: Do some form prep work on the data - escape " characters
?>

<input type="text" name="field_1" value="<? echo $data['field_1'] ?>" />

<? echo radio("radio_1", "1", $data['radio_1']  ?> Radio 1

<select name="my_select_field">
    <? echo select_option("Option 1", "1", $data['my_select_field']) ?>
    <? echo select_option("Option 2", "2", $data['my_select_field']) ?>
    <? echo select_option("Option 3", "3", $data['my_select_field']) ?>
    <? echo select_option("Option 4", "4", $data['my_select_field']) ?>
</select>

Der Formularteil kann derselbe sein - es muss nur ein Array namens $data hineingehen. Das Array kann leer sein, aus der Datenbank gefüllt werden oder aus ungültigen Formulardaten stammen.

0voto

citizen conn Punkte 15100

Prüfen Sie, ob der Wert des Feldes in der Datenbank Null ist, wenn ja, dann geben Sie keinen Wert in das Feld ein:

<input type="text" name="title" value="<? if(!empty($row['title'])) echo $row['title']; ?>" />

Für Dropdowns erstellen Sie eine Tabelle mit Werten, die mit den Werten im Dropdown übereinstimmen, dann können Sie Ihre ID abgleichen, wenn es eine gibt, und etwas wie diese ausdrucken:

<select name="country">
<option value="85" <? if($row['country'] == 85) echo " selected"; ?> />

Dies ist eine ziemlich umfassende Antwort auf eine ziemlich umfassende Frage.

1 Stimmen

Is_empty ist keine PHP-Funktion. Ich denke, Sie meinten: if (!empty($row['title'])) echo $row['title']; empty() prüft auch auf NULL.

0 Stimmen

Ich persönlich würde nur prüfen, ob der Primärschlüssel existiert, und dann, wenn er existiert, alles andere eingeben. Erspart der DB einige sinnlose Arbeit, und je nach Ihren Nutzungsmustern könnte einige ernsthafte Einsparungen bringen.

0 Stimmen

@user Ja, genau das würde ich tun. Obwohl normalerweise, wenn du etwas hinzufügst, hast du ein anderes Formular und es wäre nicht dasselbe Formular. Jetzt kann man immer das Ansichts- und das Bearbeitungsformular zusammen haben, was absolut Sinn macht. Sie könnten eine Liste von Einträgen erstellen und auf einen Link klicken, um diesen Eintrag anzuzeigen und auch zu bearbeiten. Beachten Sie, dass dies genau das gleiche Formular sein könnte, nur mit einer anderen Schaltfläche (Bearbeiten statt Hinzufügen). Nun hängt es wirklich davon ab, wie Sie dies tun möchten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X