Добавить / просмотреть / изменить записи MySQL с той же формой PHP - PullRequest
3 голосов
/ 12 июля 2011

Я написал форму PHP для добавления записей в базу данных MySQL, которая выглядит как первое изображение здесь.Однако я также хочу использовать ту же форму для просмотра и редактирования информации, уже имеющейся в базе данных, как показано на второй и третьей фотографиях.Какой самый простой способ сделать это?

Ответы [ 2 ]

1 голос
/ 12 июля 2011

Как правило, довольно легко использовать одну и ту же форму.Другой вопрос, как вы решаете ошибки проверки и не заставляете пользователя повторно заполнять форму - это решается как в том же процессе.Вам понадобятся некоторые помощники для полей выбора и любых полей-флажков / радио.Точное количество помощников зависит от вас, но они помогут вам начать:

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

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

Помощник флажка в значительной степени точно такой же.Параметры выбора очень похожи:

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

Использование их в форме следует примерно так:

<?
    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>

Часть формы может быть такой же - ей просто нужен массив с именем $ dataвдаваясь в это.Массив может быть пустым, заполненным из базы данных или из недопустимых данных формы.

0 голосов
/ 12 июля 2011

Проверьте, является ли значение поля нулевым в базе данных, если да, то не заполняйте значение в поле:

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

Для раскрывающихся списков составьте таблицу значений, которая будет соответствовать значениям в раскрывающемся списке, затем вы можете сопоставить свой идентификатор, если он есть, и напечатать что-то вроде этого:

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

Это довольно широкий ответ на довольно широкий вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...