【问题标题】:Pass value between different pages (form) with PHP使用 PHP 在不同页面(表单)之间传递值
【发布时间】:2013-09-03 17:44:15
【问题描述】:

我正在尝试将 page1.php(将数据添加到 DB 的表单)中的表单的值带到 page2.php(将 IMG 添加到 DB 的表单)。我读了一大堆关于如何做到这一点的页面,但仍然无法弄清楚。

<form name="formBrokerTour" class="login-form-addproperty" method="post"
  action="insertPropertyInfoWITHgeocode.php" onsubmit="return validateForm()">

然后我需要添加几个字段,地址、城市、邮政编码状态。这里是四分之一:

<td  width="125" class="formLable">Address</td>
<td width="269" class="formSquare">
   <input type="text" class="general_input" 
     name="address" id="nameText" width="269" >
</td>

page2.php(相关部分)——如你所见,如果我写了一个地址,那个地址就会被添加到数据库中,所以我们不用担心sql出错。如果我尝试通过会话(因为我有用户名可以在数据库中添加信息)或发布/获取将信息从第 1 页传递到第 2 页,则不会添加地址。有趣的是,正在添加用户名。

$username = htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF-8');
$address = "123 abec st"; 

$query = "
  INSERT INTO my_image
  (name, size, type, file_path, username, address) 
  VALUES(?,?,?,?,?,?)";
$conn = $db->prepare($query);
if ($conn == TRUE) {
    $conn->bind_param("sissss", $myfile, $fileSize, $fileType, $path, $username,  $address);
    if (!$conn->execute()) {
      echo 'error insert';
    } else {
      echo 'Success!<br/>';
      echo '<img src="' . DISPLAY_PATH . $myfile . '"/>';
    }
}

我尝试回显$_session 等,正如我们在其他问题中看到的那样,但这是一个新计算机人的问题......我在哪里添加此信息?我在顶部的session_start 中添加了它,就在SQL 查询之前,它在查询中不接受它。

page1.php 有带有数据库和地理编码内容的提交按钮。它发送到 page3.php,询问用户是否要添加图像。如果是,page2.php,如果不是索引。 我对传递信息感到困惑。

【问题讨论】:

  • 我不清楚具体问题,但您可以通过访问$_POST 超全局来检索 POST 数据。
  • 我需要将地址、城市、州、邮政编码的值(都在 page1.php 中 - table1 用于数据内容)到 page2.php(table2 用于图像内容),用户可以在其中添加图像到数据库。我不希望用户再次添加地址,因为它不会是相同的地址......希望它得到更好的解释。还有 page3.php 用户对是否添加图像有疑问。

标签: php mysql


【解决方案1】:

表单中的所有字段都在 $_POST 中。您将使用

提取地址
$address = $_POST['address'];

如果您通过 GET 表单操作或通过 URL 传递变量,您将使用 $_GET。

我真的建议您查看教程网站或 PHP 书籍,因为这是您将要学习的基本内容之一。

【讨论】:

  • 是的,我查看了教程……但我找不到一个完整的教程。就像如何使用提交按钮通过多个页面传递值一样。我现在将浏览所有答案。谢谢。
  • 如果您想将它从 1 传递到 2 到 3,那么在 2 上,您可以将 $_POST 变量保存在会话中,或者将其作为隐藏输入添加到第 2 页表单中,您可以在其中然后可以在第 3 页再次将其从 $_POST 中取出。
  • 好的,我已经尝试过 $_POST[name_field],但是上一页呢?我是否需要发送标头('Location: some_file.php?variable_name='.$_POST['Some_variable'])。我阅读了教程,但它们是零散的。把它放在标题或会话中?对我来说,会话​​与我拥有用户名内容的代码块相同,对吧?感谢您的耐心等待。
  • 如果你想将它存储在 $_GET 中,你可以这样做。就个人而言,我会选择 $_SESSION 或隐藏表单字段路由。处理 POST 后,您可以使用 $_SESSION['value'] = $value; 将其存储在会话中
  • Session 是我的第一条路线,然后是 Get/POST。让我们选择会话。在 page1.php 中,我在用户名的顶部有一个带有 php 代码的块。我是否在表单和提交按钮之前添加 $_SESSION['address']=$address ?
【解决方案2】:

因为您在查询中使用 ? 而不是变量,所以 bindParam 的正确用法类似于 $conn-&gt;bindParam(number_of_param, the_value); 其中 number_of_param 是您要替换的 ? 的编号。

您还可以将一组参数传递给$conn-&gt;execute() 调用,如下所示,以一次替换所有?

        $conn = $db->prepare("INSERT INTO my_image(name, size, type, file_path, username, address) VALUES(?,?,?,?,?,?)");
        if ($conn == TRUE) {
            $result = $conn->execute(array($myfile, $fileSize, $fileType, $path, $username,  $address));
            if (!$result) {
                echo 'error insert';
            } else {
                echo 'Success!<br/>';
                echo '<img src="' . DISPLAY_PATH . $myfile . '"/>';
            }
        }

旁注:我建议使用 PDO::EXCEPTION 样式的错误处理,并用 try {} catch 块包围您的数据库代码,因为它可以帮助标准化错误处理,但这完全取决于您。

【讨论】:

  • 但我没有从其他页面获取地址的值。我是 PHP 新手(几乎所有教程都使用旧的 musql,有点使用 sqli,几乎没有使用 PDO)。
  • 啊抱歉,我想我在这里解决了错误的问题,那么你想要的变量,正如其他人所说,是 $_POST
【解决方案3】:

使用

$_POST['form input name']

所以

VALUE ($_POST['myfile'], $_POST['fileSize'],ect.)

【讨论】:

    【解决方案4】:

    对于那些在同一个问题上苦苦挣扎的人: 我在所有相关文件中添加了这个

    <?php session_start();
    $_SESSION['address']=$address;
    $_SESSION['city']=$city;
    $_SESSION['zip_code']=$zip_code;
    ?>
    

    我在查询之前添加了这个:

    $username = htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF-8');
    $address= htmlentities($_SESSION['address']);
    $city= htmlentities($_SESSION['city']);
    $zip_code= htmlentities($_SESSION['zip_code']);
    

    然后查询:

     $query =
                  "INSERT INTO my_image(name, size, type, file_path, username, address, city, zip_code) VALUES(?,?,?,?,?,?,?,?)";
                $conn = $db->prepare($query);
                if ($conn == TRUE) {
                    $conn->bind_param("sissssss", $myfile, $fileSize, $fileType, $path, $username, $address, $city, $zip_code);
    .......etc.
    

    可能有一点魔法,我的意思是,可能不需要一些步骤。经过长时间的尝试,它正在工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      相关资源
      最近更新 更多