2013-01-14 25 views
0

我有一个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> 
} 

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

回答

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攻击。

+0

雅呵,这是一种方法,我可以去i'l for..anything错过或我就有麻烦结束了,如果我用这个? +1 –

+0

我也是这么做的。这可能是最干净的方法。 –

+0

我总是使用htmlspecialchars,实体以及real_escape_string,因此没有消毒数据的问题,以及我也跟踪GET中检索到的值 –

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

我不知道我理解你的问题的权利。 你想使用相同的表单来创建一个新的条目或编辑,对吧? 简单的方法可以是这个例子,但有很多其他的方法。

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

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

亲切的问候

相关问题