我刚刚创建了一个待办事项列表html页面,该页面链接到包含id itemname的数据库并完成。我正在尝试将此表的ID链接到包含ID,用户名和密码的登录表的ID。我可以在用户登录时将用户名传递给主页,但是在待办事项列表中创建项目时如何将用户的相同ID与ID链接起来?这是我的代码 validate.php
$username = $_POST ['username'];
$password = $_POST ['password'];
$s = " select * from usertable1 where username = '$username' ";
$result = mysqli_query($con, $s);
$num = mysqli_num_rows($result);
$error = "username/password incorrect";
if($num == 1 ){
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
if(password_verify($password, $row['password'])){
$_SESSION['username']= $username;
header('location:home.php');
}else{
header("location: index.php");
}
}else{
header("location: index.php");
}
?>
todolist.php
<?php
require_once 'init.php';
$itemsQuery = $db ->prepare("
SELECT id, name, done
FROM items
WHERE username = :username
");
$itemsQuery->execute([
'username'=>$_SESSION ['id']
]);
$items = $itemsQuery->rowCount()? $itemsQuery :[];
foreach ($items as $items ) {
echo $item['name'], '<br>';
}
?>
<html>
<head>
<meeta charset = "utf-8">
<title> To do</title>
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Shadows+Into+Light+Two" rel="stylesheet">
<link rel ="stylesheet" href="cool.css">
<meta name="viewport" content="width=device-width", initial-scale=1.0:>
</head>
<body>
<div class ="list">
<h1 class ="header"> To do.</h1>
<?php if(!empty($items)):
?>
<ul class="items
<?php foreach ($items as $item): ?>
<li>
<span class="item<?php echo $item['done'] ? ' done' : ''?>"><?php echo $item['name'];?></span>
<?php if(!$item['done']): ?>
<a href="mark.php?as=done&item=<?php echo $item['id'];?>" class="done-button"> Mark as done</a>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
</<?php else: ?>
<p> You haven't added any items yet. </php>
</<?php endif; ?>
<form class="item-add" action="add.php" method="post">
<input type="text" name="name" placeholder="Type a new item here." class="input" autocomplete="off" required>
<input type="submit" value="Add" class="submit">
</form>
</div>
</body>
</html>
init.php
$username = $_POST ['username'];
$password = $_POST ['password'];
$s = " select * from usertable where username = '$username' ";
$result = mysqli_query($db, $s);
if($num == 1){
$_SESSION['username']= $username;
}else{
die('You are not signed in.');
}
?>
答案 0 :(得分:0)
我的脑海中还有一些额外的想法。
项目表: id(主键),名称,用户,完成(单击完成按钮时),创建(获取日期)
用户表:ID(主键)用户名,密码
第一种方法:
当用户创建/添加新项目时,来自id
表的用户user
也将存储到item
表的user
字段中。
因此,您可以在成功登录后将id
之类的登录用户的详细信息保存到session
中。
第二种方法:
在这里,您将创建另一个表,其中包含之间的关系
item
和user
表
item_to_user_table: id,item_id(项目表中新添加的项目的ID),user_id(用户表单会话或
user
表中的ID)
因此,当用户创建/添加新项目时,接下来的过程就会进行
item
表中在插入新项目之后,立即使用mysqli_insert_id函数获取项目的最后inserted id
然后使用步骤2 inserted_id
和user_id
进入第三张表item_to_user_table
第二种方法的优点: item
和关系详细信息将分别存储,因此以后您可以轻松地从item table
删除项目,而不会影响user table
缺点:很长,需要一些额外的工作。