我能把这个代码减半吗?

时间:2013-01-14 18:51:15

标签: php

我有一个php表单和很多标记,所以我需要重复相同的表单来创建一个新的页面条目和相同的编辑,所以例如现在正在做的是

if($_GET['page'] == 'hello') {
   //A whole lot of markup goes here
   <form method="post">
     <input type="text" name="whatever" />
     <input type="submit" name="create_new" />
   </form>
} elseif ($_GET['page'] == 'edit_hello') {
   //Same form markup is here, only change is the retrieved 
   //data values are echo'ed out in respective fields
   $query = mysqli_fetch_array(mysqli_query(...));
   <form method="post">
     <input type="text" name="whatever" value="<?php echo $query['column_name']; ?>" />
     <input type="submit" name="create_new" />
   </form>
}

所以任何想法如何使用相同的代码创建新条目以及更新表单值

3 个答案:

答案 0 :(得分:1)

使用变量并为其指定一个空字符串的默认值。

if($_GET['page'] == 'hello') {
   $whatever = "";
} elseif ($_GET['page'] == 'edit_hello') {
   $query = mysqli_fetch_array(mysqli_query(...));
   $whatever = $query['column_name'];
}

<form method="post">
   <input type="text" name="whatever"
      value="<?php echo htmlspecialchars($whatever); ?>" />
   <input type="submit" name="create_new" />
</form>

请注意,我还为您添加了适当的转义功能,以便您可以避免XSS攻击。

答案 1 :(得分:0)

这样的事情应该有效(未经测试)

$value = '';

if ($_GET['page'] == 'edit_hello') $value = $query['column_name'];

if (in_array($_GET['page']), array('hello', 'edit_hello')) { ?>
<form method="post">
     <input type="text" name="whatever" value="<?php echo $value; ?>" />
     <input type="submit" name="create_new" />
   </form>
<?php } ?>

答案 2 :(得分:0)

我不确定我理解你的问题是对的。 您想使用相同的表单来创建新条目或编辑,对吧? 简单的方法就是这样,但还有很多其他方法。

如果您为编辑模式创建表单,则在其上添加隐藏字段。在对表单发布请求后,您可以检查此变量。 Remenber:您需要更新一些密钥,以便更新正确的数据库记录。

if (isset($_POST["variable"]))
{
//updateaction
}
else 
{ //insertaction 
}

亲切的问候