如何将php变量发送到下一页?

时间:2016-11-09 17:55:57

标签: php html oci

我有三个页面,第一页是从数据库中检索数据。第二个或编辑页面是编辑我在单击复选框时选择的数据,并通过按钮编辑传递值。最后一个或删除页面是删除也从复选框中选择的数据,并通过删除按钮传递值。

以下是我的代码..

第一页

    <?php

        $sql = 'SELECT * FROM STAFF ORDER BY STAFF_NAME ASC';
        $stmt = oci_parse($conn, $sql);
        oci_execute($stmt);             

    ?> 
    <table width="900" border="1" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <th>Staff ID</th>
        <th>Staff  Name</th>
        <th></th>
      </tr>

      <?php 
            $a = 1;
            while (($row = oci_fetch_array($stmt, OCI_ASSOC)) != false) {
      ?>
     <tr>
        <td><?php echo $row['STAFF_ID']  ?></td>
        <td><?php echo $row['STAFF_NAME']  ?></td>
        <td align="center"><input type="checkbox" name="chk'<?php echo $a ?>' " value="<?php echo $row['STAFF_ID'];?>"></td>
    </tr>
    <?php
                $a = $a + '1';
            }
            oci_free_statement($stmt);
            oci_close($conn);
    ?>

    </table>
    <button>Edit</button>
    <button>Delete</button>

秒/编辑页面

    <?php
        $sql = oci_parse($conn, "SELECT COUNT(STAFF_ID) AS COUNT_ROW FROM STAFF");
        oci_execute($sql);
        $row = oci_fetch_array($sql);
        $a =  $row["COUNT_ROW"];

        for($i=0; $i<count($a); $i++)
          {
            if(isset($_POST["chk".$i]) )
              {
                $stmt = oci_parse($conn, "SELECT * FROM STAFF WHERE STAFF_ID = :staff_id ");
                oci_bind_by_name($stmt,':vendor_id',$vendor_id1,10);
                $vendor_id1 = $_POST["chk".$i];
                $objExecute = oci_execute($stmt);
                $row = oci_fetch_array($stmt);
              }
             else{
                   echo "No Data Selected";
                 }
          }
    ?>

<input type="text" placeholder="Staff ID" name="staff_id" value="<?php echo $row['STAFF_ID'];?>">
<input type="text" placeholder="Staff Name" name="staff_name" value="<?php echo $row['STAFF_NAME'];?>">

2 个答案:

答案 0 :(得分:2)

有很多方法可以做到。

  1. 您可以将sessions与$ _SESSION或您自己的会话机制
  2. 一起使用
  3. 您可以使用数据库或任何存储将其保存在一个页面上并在另一个页面上检索
  4. 您可以通过GET / POST等http请求传递变量,并通过$ _POST或$ _GET获取。其他http方法也可以使用。
  5. 您可以将cookies与$ _COOKIE
  6. 一起使用

    示例:

    会话:

    当您想要在后续访问中传递变量数据时使用会话。例如,您记录了用户,并且您希望仅从db获取一次登录,并将其保存在会话中,以便在您可以访问它的任何页面上。

    <强> page_1.php

    <?php 
    session_start();
    $_SESION['variable'] = 'value';
    

    <强> page_2.php

    <?php 
    session_start();
    echo $_SESSION['variable'];
    

    数据库:

    当您要保留的信息应保留更长时间但不总是保留时使用。它主要取决于db类型。有时会话机制使用数据库。 redis用于会话存储是很常见的。

    <强> page_1.php

     $db->query("INSERT INTO storage_table(name,value) VALUES('variable', 'value')");
    

    <强> page_2.php

     var_dump($db->query("SELECT value FROM storage_table WHERE name='variable'")->fetch());
    

    HTTP方法GET

    get的常见用法是当您想要传递更改输出的变量时。例如,你有结果需要分页,所以网址看起来像data.php?page = 2所以在PHP中你会得到$ _GET [&#39; page&#39;];

    <强> page_1.php

     header('Location: page_2.php?variable=value');
    

    <强> page_2.php

     echo $_GET['variable']; 
    

    缓存

    如果您想在用户关闭浏览器后保留一些信息,则使用Cookie。它们用于在远程浏览器中存储数据,从而跟踪或识别返回用户。

    <强> page_1.php

    <?php
    setcookie("variable","value");
    

    <强> page_2.php

    <?php
    echo $_COOKIE["variable"];
    

    因此,您看到有很多方法可以将变量传递给另一个页面。我只提供了一些例子,但还有更高级的例子有curl,redis,HTTP push等。

答案 1 :(得分:0)

你显然可以通过多种方式实现它,但是因为你已经为$_POST方法构建了一个结构,我认为这是要走的路。

所以我想你想编辑选中复选框的行吗?您要“发送”到下一页的值是'chk [ANYNUMBER]'复选框。

为此,您需要将第一页中的表格和按钮包装成<form>。确保<form>使用POST方法和修改页面作为操作,因此<form method="POST" action="page2.php">第二次确保修改button成为submit,以便点击时提交表单在它上面。

现在,您可以使用$_POST[ANYINPUTNAME]获取第二页中的值,以便example $_POST["chk1"]

修改

首页应该是这样的(请注意inputform代码并将page2.php更改为您的网页名称):

       ...
      <form method="post" action="page2.php">
        <table width="900" border="1" align="center" cellpadding="0" cellspacing="0">
          <tr>
            <th>Staff ID</th>
            <th>Staff  Name</th>
            <th></th>
          </tr>

          <?php $a = 1; while (($row = oci_fetch_array($stmt, OCI_ASSOC)) != false) { ?>
          <tr>
            <td><?php echo $row['STAFF_ID']  ?></td>
            <td><?php echo $row['STAFF_NAME']  ?></td>
            <td align="center"><input type="checkbox" name="chk'<?php echo $a ?>' " value="<?php echo $row['STAFF_ID'];?>"></td>
          </tr>
          <?php $a = $a + '1'; } oci_free_statement($stmt); oci_close($conn); ?>

        </table>
        <input type="submit" name="edit_button" value="Edit">
        <input type="submit" name="delete_button" value="Delete">
      </form>