3

好吧伙计们..

我有两页

page1 包含一个表单

 <form id="Form1" name="Form1" method="post" action="form1.php"> //form1.php is the page1 where this form is..
<input type="text" class="input" name="txtName" value="<?php if(isset($name)){echo $name;} ?>" <?php if(isset($flag) && $flag == 1){echo "div style = 'border:2px solid red;'". "/div";}?>> //HERE EVERYTHING IS GOOD

<input type="submit" name="submit" value="Submit" class="button3">
</form>

我使用 php 会话将数据发送到 page2

php page1代码

session_start();
if(NO ERRORS)) // in the form there is actual code
{
//insert into database
$result = mysql_query($insert);
if($result)
{
echo("<br>Input data is succeed");
$lastInsertedId =  mysql_insert_id();
$_SESSION['last_id'] = $lastInsertedId;
header('Location: form1_conf.php?id');
}
else
{
$message = "The data cannot be inserted.";
$message .= "<br />" . mysql_error();
}

现在是第2页

page2 名称是 form1_conf.php & 用于向用户显示表单数据,以便他可以检查表单是否有错误,如果有任何错误,他可以单击编辑并返回主表单 (page1) 并重新输入数据并重新提交表格。

这是page2代码

在这里,我使用 php 从 page1 接收数据:

<?php 
session_start();
$id = $_SESSION['last_id'];
$query  = "SELECT * FROM db_form1 WHERE id=$id";
$result = mysql_query($query);
while($row = mysql_fetch_row($result))
{
    $name = $row[3];
}
?>

这是显示这个的html代码

 <div id="DisplayForm">
 <div class="dispText">
 <?php echo $name; ?>
 </div>
 </div>

 <a href="#" class="button">EDIT</a>

现在我有两个问题

  1. 人们告诉我,如果表单在多个选项卡中打开,会话可能会成为问题,会话可能会混乱。所以建议我使用get。如果这个语句是有效的,应该在哪里修改 php 代码以使用 get 或更好的方法来完成它?
  2. 无论是否修改此代码以通过 get 获取工作,如果用户单击 page2 上的编辑按钮,此表单将如何重定向到 page1?请参阅带有 EDIT 按钮的 #。如何实现?

非常感谢您的帮助朋友。

4

2 回答 2

3

那么这是一个在一个页面中执行此操作的解决方案:

表单.php

<?php

if(isset($_POST['txtName'])) {
    //the form was submitted, validate the data and insert to the database
    if(NO ERRORS)) // in the form there is actual code
    {
        //insert into database
        $result = mysql_query($insert);
        if($result)
        {
            $lastInsertedId = mysql_insert_id();
            $_SESSION['last_id'] = $lastInsertedId;
            //do not echo anything before you try to redirect. There must not be any output before header
            header("Location: the_page_that_displays_your_data.php?id=$lastInsertedId");
        } else
        {
            $errorMessage = "The data cannot be inserted.";
            $errorMessage .= "<br />" . mysql_error();
        }
    } else {
        //check your errors and display them in the form below
    }
}

?>

<!--set action to "" so the page will submit to itself-->
<form id="Form1" name="Form1" method="post" action="">
    <!--if $errorMessage is defined you can echo it here (for example)-->
    <!--if the txtName in $_POST is set display it after escaping it-->
    <input type="text" class="input" name="txtName" value="<?php echo isset($_POST['txtName']) ? htmlspecialchars(filter_input(INPUT_POST, 'txtName'), ENT_COMPAT, 'UTF-8') : ''; ?>">
    <input type="submit" name="submit" value="Submit" class="button3">
</form>

希望这可以帮助!

于 2013-07-29T07:08:12.130 回答
2

您可以使用查询字符串发送数据以发送 id 或header函数中的任何其他内容:

header('Location: form1_conf.php?id='.$id);

或其他任何地方,例如链接:

www.example.com/page2.php?id=445

然后在接收端,可以用$_GET数组获取数据:

if (isset($_GET['id'])){
    $id = $_GET['id'];
}

您也可以使用 URL 更改编辑链接:

<a href="http://www.example.com/page1.php?id=<?php echo $id; ?>" class="button">EDIT</a>
于 2013-07-29T06:49:38.410 回答