使用mysql php的todolist

qhhrdooz  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(256)

我刚刚创建了一个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.');
}

 ?>
hec6srdp

hec6srdp1#

我脑子里有一些额外的想法。
item表:id(主键)、name、user、done(单击done按钮时)、created(获取日期)
用户表:id(主键)用户名,密码
第一种方法:
当用户创建/添加新项目时 iduser 表也被存储到 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 进入第三张table item_to_user_table 第二种方法的优点: item 关系的详细信息将单独存储,以便以后您可以轻松地从中删除该项目 item table 不影响 user table 缺点:时间长,需要额外努力。

相关问题