У меня есть две таблицы users
и userdata
, и я создал их, используя:
CREATE TABLE users
(
id INT(6) AUTO_INCREMENT NOT NULL PRIMARY KEY,
name VARCHAR(255),
password VARCHAR(255)
);
и userdata
через это:
CREATE TABLE userdata
(
adder INT(6) NOT NULL,
added INT(6) NOT NULL,
CONSTRAINT adder_user FOREIGN KEY (adder) REFERENCES users(id),
CONSTRAINT added_user FOREIGN KEY (added) REFERENCES users(id),
PRIMARY KEY (adder, added)
);
Я имею вид системы входа в систему, см. Эту страницу index.php
: (Здесь пользователь добавляется путем ввода его идентификатора и пароля, и для каждого пользователя устанавливается сеанс)
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>
login
</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
</head>
<body>
<form action="review.php" method="post">
<input type="text" name="id" placeholder="id">
<input type="password" name="password" placeholder="password">
<input type="submit" name="submit" class="btn btn-success">
</form>
</body>
</html>
У меня review.php
, где я проверил подлинность пользователя (на базовом уровне)
<?php
session_start();
$connect = mysqli_connect('localhost','root','root','stackoverflow');
if(isset($_POST['submit']))
{
$id = $_POST['id'];
$password = $_POST['password'];
$query = "SELECT `name`,`id`,`password` from `users` where `id` = '$id' and `password` = '$password' ";
$run = mysqli_query($connect,$query);
$row = mysqli_fetch_assoc($run);
if( ($id == $row['id']) && ($password == $row['password']) )
{
// start session with the id of the one who is logged in
// this is the id of the user who is logged in
$_SESSION['id']= $row['id'];
header('location:save.php?id=$id');
}
}
?>
Это save.php
, вот основная проблема. Допустим, Алиса вошла в мою систему, и она заходит на страницу save.php
, чтобы добавить Bob
в мою систему.
На этой странице есть кнопка «Сохранить», когда какой-либо зарегистрированный пользователь в моей системе (Alice
) пытается добавить другого пользователя (Bob
) в мою систему (таблица userdata
), в этот момент я хочу проверить это->
Bob
уже добавил Alice
(когда Боб вошел в систему)? если это так, когда Алиса нажимает кнопку «Сохранить», имя Bob
должно быть вставлено в таблицу userdata
, а имена Alice
и Bob's
должны быть написаны красным цветом и отображены пользователю (с помощью запроса select), поскольку они оба добавляются друг другом.
Если Alice
хочет добавить Bob
, но Bob
не добавил Alice
ранее, то после нажатия кнопки сохранения с помощью Alice
имя Bob
должно быть вставлено в таблицу userdata
и должно отображаться без любой цвет, потому что Bob
еще не добавил ее.
Как я могу решить эту проблему, когда пользователь добавляет имя, вы должны проверить, добавлены ли они к оборотной стороне, и в этом случае указать его . Например, если Алиса добавляет Боба, а Боб добавил Алису, вы должны указать это (с некоторым символом)?
<?php
session_start();
$connect = mysqli_connect('localhost','root','root','stackoverflow');
if(isset($_POST['save']))
{
$name = $_POST['name'];
$id = $_SESSION['id'];
$insert = "INSERT INTO `userdata` ('adder','added') values ('$id','$name')";
$query = "SELECT aer.name AS Adder, 'added', aed.name AS added
FROM users aer
INNER JOIN userdata ud ON aer.id = ud.adder
INNER JOIN users aed ON aed.id = ud.added
WHERE
(
SELECT COUNT(*)
FROM userdata uda
WHERE uda.adder = ud.added
AND uda.added = ud.adder
) >= 1";
$run = mysqli_query($connect, $query);
while($row = mysqli_fetch_assoc($run))
{
echo "<div class = 'text text-center' id = 'special'>".$row['Adder']." Added ".$row['added']."</div><br>";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>save</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<link rel="stylesheet" href="style.css">
</head><body>
<div class="container">
<div class="row">
<div class="col-md-6">
<form action="save.php" method="POST">
<input type="text" name="name">
<input type="submit" name="save" value="Save" class="btn btn-success">
</form>
</div>
</div>
</div>
</body>
</html>
users
стол
здесь userdata
таблица, содержащая сумматор и добавленные столбцы
adder added
1 2
1 3
первый ряд Alice
добавлено Bob
второй ряд Alice
добавлено John