从大型表格发布数据的最佳方式错误后保留输入中的数据

时间:2013-06-21 06:30:17

标签: php mysql forms session

这是一个“最佳实践”/“最有效”的问题。我有一个大型(20多个字段)。将帖子发布到一个大的MySQL表中。

不,我不能打破表格,不,我不能打破桌子(它用于保持测量);由admin销售代表使用。另外,我不想使用Javascript。

我知道我可以这样做: HTML

<form action="etc.php" method="post">    
<input type="text" name="neck" value="">
<input type="text" name="arm" value="">
<input type="text" name="back" value="">
<input type="text" name="chest" value="">
<input type="text" name="legs" value="">
<submit button>

PHP

<? 
$_POST['neck']; 
$_POST['back']; 
$_POST['arm']; 
$_POST['chest']; 
$_POST['legs']; 
$postMeasurements = "INSERT INTO measurements (etc, etc, etc,) VALUES (etc, etc, etc) WHERE etc='etc'; query ($postMeasurements);
?>

但有更快的方法吗?而不是必须声明每个单独的帖子,只需运行一个循环,将所有数据发布并插入表中。即使数据与表的列的顺序相同,或者输入名称必须与表列名相同,我也可以。我只是厌倦了将所有这些$ _POST变量写入。

第二个问题:出现错误时保存此数据的最佳方法是什么?就像现在一样,我在$ _SESSION中保存所有内容(每个输入一个会话变量),如果出现错误消息,则重定向回表单页面。然后将每个$ _SESSION变量作为输入值回显。

谢谢,

3 个答案:

答案 0 :(得分:1)

如果字段为字段名称的确切名称。帖子只能有字段而没有别的

 //if $_POST has the form then, also this is very unsafe because there is no injection prevention too

 $sql = "INSERT INTO table (" . implode(",", array_keys($_POST)) . ")"
      . "VALUES ('" . implode("','", array_values($_POST)) . "')";

答案 1 :(得分:0)

您可以在查询中直接使用$ _POST ['foo'],无需声明:)。

保存数据可以是会话,也可以是内联缓存,如果你有大量数据,最好在服务器中使用一些缓存,并在表单上载,它会根据SESSION_ID从服务器检索数据

答案 2 :(得分:0)

将页面发布到自身。

然后做这样的事情:

if($_SERVER["REQUEST_METHOD"] == "POST"){
    // validate and insert post data
    header("Location: $successUrl");
    exit();
}
?>
<form action="etc.php" method="post">    
    <input type="text" name="neck" value="<?= $_POST["neck"]?>">
    <input type="text" name="arm" value="<?= $_POST["arm"] ?>">
    ....