如何使用GET或POST方法将变量传递给php中的另一个页面?

时间:2015-09-02 17:54:54

标签: php mysql forms

我正在制作一个编辑表格。 有两种形式,一种称为edit1.php,另一种称为edit.php。第二个应该从edit1.php获取生成的id并使用它来生成进一步的查询。以下是2个文件的代码:

edit1.php:

<table>
  <tr>
    <td align="center"><h4><b>EDIT DATA</b></h4></td>
  </tr>
  <tr>
    <td>
      <table border="3">
      <form action="edit.php" method="get">
      <?php

      $vendors = "SELECT `vendor`.`v_id`,`vendor`.`v_name` FROM `stfood`.`vendor`";
      $result = mysqli_query($con, $vendors);

      while ($row = mysqli_fetch_array($result)){
        echo ("<tr><td>'".$row["v_id"]."'</td>");
        echo ("<td>'".$row["v_name"]."'</td>");
        echo ("<td><a href=\"edit.php?id=".$row['v_id']."\">Edit</a></td></tr>");

      }

      ?>
      </form>
      </table>

edit.php:

<?php
require 'init.php';
require 'functions.php';

?>
<html>
<head>
<title>Form Edit Data</title>
</head>
<body>
<table border=1>
  <tr>
    <td align=center>Form Edit vendor Data</td>
  </tr>
  <tr>
    <td>
      <table>

      <?php
        echo $_REQUEST['v_id'];
      $vendor = "SELECT `vendor`.`v_name`, `vendor`.`v_email`,`vendor`.`v_desc`,`vendor`.`cont_id` FROM `stfood`.`vendor` WHERE `vendor`.`v_id` = '".$v_id."'";
      $vendor_result = mysqli_query($con, $vendor);
      $row = mysqli_fetch_array($vendor_result);
      ?>
      <form method="post" action="edit_data.php">
      <input type="hidden" name="id" value="<?php echo $row["v_id"];?>">
        <tr>        
          <td>Name</td>
          <td>
            <input type="text" name="name" size="20" value="<?php echo $row["v_name"]; ?>">
          </td>
        </tr>
        <tr>
          <td>Email</td>
          <td>
            <input type="text" name="email" size="50" value="<?php echo $row["v_email"];?>">
          </td>
        </tr>
        <tr>
          <td>Vendor Description</td>
          <td>
            <input type="text" name="description" size="100" value="<?php echo $row["v_desc"];?>">
          </td>
        </tr>
        <tr>
          <td align="right">
            <input type="submit"
          name="submit value" value="Edit">
          </td>
        </tr>
      </form>
      </table>
    </td>
  </tr>
</table>
</body>
</html>

当我运行代码时,第一个表单显示所有相关数据,当我点击edit链接时,页面被重定向,我可以看到URL中传递的v_id,但是没有任何内容进入edit.php文件。当我执行var_dump($row['v_id']);时,我得到NULL

为什么v_id中没有设置edit.php

4 个答案:

答案 0 :(得分:1)

由于您的超链接如下所示:

<a href=\"edit.php?id=".$row['v_id']."\">Edit</a>

您的edit.php应该使用

echo $_GET['id'];
// or something like this
$received_id = $_GET['id'];
// do validation whether you received a good id or not and then move on
...
...
<input type="hidden" name="id" value="<?php echo $received_id;?>">

答案 1 :(得分:0)

尝试在$_GET['id']

上使用$_REQUEST['v_id']代替edit.php

See example #1 here

此外,您是否在查询中使用$v_id之前定义了它?

Like this.

答案 2 :(得分:0)

在您的edit.php页面上

<a href=\"edit.php?id=".$row['v_id']."\">Edit</a>

现在在您的edit1.php上,您应首先拥有isset(),然后按照以下步骤操作:

if(isset($_GET['id']){

$id = $_GET['id'];

//carry on blah3 ...

答案 3 :(得分:0)

在edit1.php中,您没有使用表单元素。值$ row ['v_Id']应该是表单元素输入的值,如此内部表单

<input type='hidden' name='v_I'd value ='<?php echo $row['v_id'] ?>'>