Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用相同的php表单添加/查看/编辑mysql条目_Php_Mysql_Forms_Edit - Fatal编程技术网

使用相同的php表单添加/查看/编辑mysql条目

使用相同的php表单添加/查看/编辑mysql条目,php,mysql,forms,edit,Php,Mysql,Forms,Edit,我编写了一个PHP表单,将条目添加到MySQL数据库中,如下所示。但是,我也希望使用相同的表单查看和编辑数据库中已有的信息,如第二张和第三张照片所示。最简单的方法是什么?检查数据库中字段的值是否为空,如果为空,则不要在字段中填写值: <input type="text" name="title" value="<? if(!empty($row['title'])) echo $row['title']; ?>" /> 使用相同的表单通常很容易。另一个问题是如何解决验证

我编写了一个PHP表单,将条目添加到MySQL数据库中,如下所示。但是,我也希望使用相同的表单查看和编辑数据库中已有的信息,如第二张和第三张照片所示。最简单的方法是什么?

检查数据库中字段的值是否为空,如果为空,则不要在字段中填写值:

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

使用相同的表单通常很容易。另一个问题是如何解决验证错误,而不是让用户重新填写表单——这一问题在同一过程中得到解决。对于选择字段和任何复选框/单选字段,您需要一些帮助。帮手到底能做多少取决于您,但这些将帮助您开始:

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

    return '<input type="radio" name="'.$name.'" value="'.$value.'" '.$checked.' />';
}
功能收音机($name、$value、$selected_值)
{
$checked=($value===$selected\u value)?'checked=“checked”':空;
返回“”;
}
复选框助手几乎完全相同。选择选项非常相似:

function select_option($text, $value, $selected_value)
{
    $selected= ($value === $selected_value) ? 'selected="selected"' : null;
    return '<option value="'.$value.'" '.$selected.'>'.$text.'</option';
}
函数选择_选项($text、$value、$selected_值)
{
$selected=($value====$selected\u value)?'selected=“selected”':空;
返回“”。$text。“/>

is_empty不是PHP函数。我想你的意思是:
if(!empty($row['title'])echo$row['title']
也会检查NULL。我个人只会检查主键是否存在,然后如果它存在,则填写其他所有内容。为数据库节省一些无意义的工作,并且根据您的使用模式,可能会产生一些严重的节省。@user是的,这是我会做的。虽然通常在添加某些内容时,您有不同的表单而且它不会是同一个表单。现在,您可以始终将“查看”和“编辑”表单放在一起,这非常有意义。您可能希望创建条目列表,您可以单击链接显示该条目并对其进行编辑。请注意,这可能是完全相同的表单,除非使用不同的“提交”按钮(编辑而不是添加)。现在这也要看你想怎么做了。@justin谢谢,更新了答案。@kerin有几种方法可以根据你的情况来做,我只是展示了一些如何预映射字段的示例。@kerin@Matt是的,这正是我想做的!不过我不确定该怎么做,所以我在这里问你。如果更简单的话,听起来是这样的,我将为查看/编辑和添加创建一个单独的页面,但为了简化用户体验,让它们看起来几乎相同。
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>