我正在尝试制作一个简单的拍卖网站。我需要跟踪将项目添加到拍卖中的用户。我已经弄清楚如何存储用户的帐户ID,我认为存储用户名会很相似,但我无法解决。无论我尝试过什么,用户名永远不会存储在我的项目表中。
这是我的additemprocess.php页面。
<?php session_start(); ?>
<html>
<head></head>
<body>
<?php
require_once("dbconnect.inc");
$_SESSION['username']=$_POST['username'];
$item=$_POST['item'];
$description=$_POST['description'];
$accountid=$_SESSION['accountid'];
$sql= "INSERT INTO biditems (username, accountid, biditem, biddesc) VALUES
('{$_SESSION['username']}', '$accountid', '$item', '$description')";
$result=mysql_query($sql) or die("Error in adding item: " .mysql_error());
$mess="Item successfully added!";
echo $mess;
?>
这是应该列出项目的页面,显示添加项目的用户的用户名。
<?php
session_start();
require_once("dbconnect.inc");
require_once("checkstatus.inc");
$sql=" select * from biditems";
$result=mysql_query($sql);
echo "Items for Auction";
while($row=mysql_fetch_array($result)) {
$itemid=$row['itemid'];
$item=$row['biditem'];
$auctionby=$row['username'];
$description=$row['biddesc'];
echo "<p>$itemid $item $auctionby $description</p>";
}
?>
这是我添加项目的代码。
<?php
session_start();
require_once("dbconnect.inc");
?>
<form id="additem" name="additem" method="post" action="additemprocess.php">
Item<br>
<input type="text" name="item" id="item"/><br>
Description<br>
<textarea name="description" id="description"></textarea><br>
<input type="submit" name="submit" id="submit" value="submit"/>
</form>
答案 0 :(得分:0)
您目前正在使用$_SESSION['username']=$_POST['username'];
,但您需要将此用户名视为accountid。它应该在您登录会话时存储,然后在您的数据库中输入出价数据时调用。
例如:
登录时:
$_SESSION['username']=$_POST['username'];
存储出价时:
$username = $_SESSION['username'];
或者使用accountid从users表中获取用户名,然后将其添加到查询中,如下所示:
$username = $row['username'];
此外,如果您尝试了此操作但在使用会话的页面之间共享此数据时遇到问题,请确保在要使用会话的每个页面的顶部包含session_start();
。
答案 1 :(得分:-1)
问题发生在:$_SESSION['username']=$_POST['username'];
,您将session
设置为post
甚至不存在......?设置$_SESSION['username']
;在登录过程中。
因此,当您使用以下内容设置$_SESSION['accountid']
等于当前登录帐户的ID
时,$_SESSION['accountid'] = $row['id']
;。
在那之下,您将添加$_SESSION['username'] = $row['username'];
。
然后只需删除添加项目流程中的$_SESSION['username'] = $_POST['username'];
即可。