将会话变量从html表单传递到多个php页面URL?

时间:2014-05-14 15:38:07

标签: php html mysql

我正在尝试将表单中的变量传递给php中的多个页面

表格“rentcheck.php”

<?php require ("Connections/Project.php") ;?>
<?php session_start();?>

<title>Rent Check</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="rent.php">
  <table width="385" height="70" border="1">
    <tr>
    <td><label for="select3">Select Customer</label>
      <select name="Customer_ID" id="Customer_ID">
        <?php
//Select from SQL Database Table (t_customer)

        $sql=mysql_query("SELECT * from t_customer");

        while ($Customer = mysql_fetch_array($sql)){
         echo "<option value='".$Customer['Customer_ID']."'>".$Customer['Customer_Name']."</option>";
        }
          ?>
      </select></td>
    </tr>
</table>
  <p>
    <input type="submit" name="button" id="button" value="Submit" />
  </p>
</form>

</body>
</html>

输入后将其传递给“rent.php”页面

<?php
require("Connections/Project.php");


//$_SESSION['yourvariable'] = 'foo';

//$newDate = date("d-m-Y", strtotime($row_Recordset1['Customer_CC_Exp_Date']));
session_start();
$datetoday=date("Y-m-d H:i:s");
$endOfCycle=date('Y-m-d', strtotime("+30 days"));
if(isset($_GET['page'])){


    $pages=array("products","cart");

    if(in_array($_GET['page'], $pages)){

        $_page=$_GET['page'];


    }else{
        $_page="products";
    }

}else{
    $_page="products";

}
?>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Rent</title>
</head>
<body>
<p> <?php require($_page. ".php");?>
<?php echo $_POST['Customer_ID'];?></p>
</body>
</html>

此页面(rent.php)显示表单中的值。

第三页“products.php”

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>



<?php

if(isset($_GET['action']) && $_GET['action']=="add"){


    $custget=$_SESSION['Customer_ID'];
    $id=intval($_GET['id']);

    if(isset($_SESSION['cart'][$id][$custget])){

        $_SESSION['cart'][$id]['quantity']++;
        $getcust=$_SESSION['Customer_ID'];

    }else{
        $sql_s="SELECT * FROM t_dvd_copy
        WHERE dvd_copy_id={$id}";
        $query_s=mysql_query($sql_s);
        if(mysql_num_rows($query_s)!=0){
            $row_s=mysql_fetch_array($query_s);

            $_SESSION['cart'][$row_s['dvd_copy_id']]=array(
            "quantity" =>1,
            "price" => $row_s['price']
            );


        }else{
            $message="NO";

        }
    }
}
?>

<?php if(isset($message)) {
    echo"$message"; }
    //echo print_r($_SESSION['cart']); ?>

<table width="489" height="52" border="1">
  <tr>
    <td width="123">DVD Copy ID</td>
    <td width="120">Name</td>
    <td width="91">Price</td>
    <td width="127">Action</td>
  </tr>


 <?php
        $sql="SELECT *, dvd_title FROM t_dvd_copy INNER JOIN t_dvd ORDER BY dvd_title ASC";
        $query=mysql_query($sql);

        while($row=mysql_fetch_array($query)) {

?>

    <tr>
        <td><?php echo $row['dvd_copy_id']?></td>
        <td><?php echo $row['dvd_title']?></td>
        <td><?php echo $row['price']?></td>
        <td><a href="rent.php?page=products&action=add&id=<?php echo $row['dvd_copy_id']?>">Add To Cart</a></td>
<?php
        }
    ?>

</table>

<body>
</body>
</html>

此页面(products.php)显示:

  

注意:未定义的索引:第39行的C:\ xampp \ htdocs \ project3 \ rent.php中的Customer_ID“每当我点击”添加到购物车“或手动输入”rent.php?= cart“。

我要做的是在多个页面上显示(Customer_ID)/传递变量(“products.php”,“cart.php”)。

有任何建议或想法吗?

3 个答案:

答案 0 :(得分:0)

我认为您的问题是您尚未在其他网页上启动会话。 在每个要进行会话的php页面上,您需要将session_start();置于顶部。

如果您没有结束会话并清空其中的所有数据。

如果您想确定会话中的内容,可以将其打印出来:

echo "<pre>";
echo print_r($_SESSION);
echo "</pre>";

答案 1 :(得分:0)

一些事情:

  1. 您提到当您点击“添加到购物车”时,它无效。我假设你指的是rentcheck.php页面上标有“提交”的按钮。你能证实这是对的吗?
  2. 当您在Customer_ID数组中查找$_POST键时手动导航到rent.php?= cart时会出现错误,但此时您没有发布到服务器,您正在执行$_GET请求。
  3. 您引用了$_SESSION['Customer_ID'],但我在您的代码中看不到您设置此内容(products.php第7行代码)。
  4. 我建议您考虑用户如何浏览您的网站:

    • 他们可能在哪里开始?
    • 此时您可以使用哪些变量?
    • 如果所需的变量不存在,您会怎么做(例如$_SESSION)?
    • 您收集所需信息(表格)的最早点是什么?
    • 一旦表格正确完成,我如何确保在整个用户会话中保留所需信息?
    • 我是否继续在每个页面上测试我可以获得所需的变量?

    从那开始,看看它引导你的位置。

答案 2 :(得分:0)

查看代码,我可以看到您在products.php

中包含rent.php

这里有几点想法:

  • products.php不应该包含HTML <head>,因为它会被渲染 在<body>
  • 如果您有rent.php中的变量,它将可用 在products.php中使用相同的名称。

所以,如果你有rent.php

$customer_id = $_POST['Customer_ID'];
require('products.php');

products.php中,您可以直接使用$customer_id