我刚刚创建了一个todo list html页面,该页面链接到包含id itemname和done的数据库。我正在尝试将此表的id链接到登录表的id,其中包含id、用户名和密码。当用户登录时,我可以将用户名传递到主页,但是在todo列表中创建项目时,如何将用户的相同id与id链接?这是我的代码validation.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>
初始化.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.');
}
?>
1条答案
按热度按时间hec6srdp1#
我脑子里有一些额外的想法。
item表:id(主键)、name、user、done(单击done按钮时)、created(获取日期)
用户表:id(主键)用户名,密码
第一种方法:
当用户创建/添加新项目时
id
从user
表也被存储到item
table的user
现场。因此,您可以保留记录的用户详细信息,如
id
进入session
登录成功后。第二种方法:在这里创建另一个表,其中包含
item
以及user
表item\ to\ user\表:id、item\ id(item表中新添加的项的id)、user\ id(用户窗体会话的id)或
user
表)所以当用户创建/添加新项目时,接下来的过程就开始了
将新项目插入
item
table在插入新项之后,使用mysqli\u insert\u id函数获取最后一个
inserted id
项目的然后使用步骤2
inserted_id
以及user_id
进入第三张tableitem_to_user_table
第二种方法的优点:item
关系的详细信息将单独存储,以便以后您可以轻松地从中删除该项目item table
不影响user table
缺点:时间长,需要额外努力。