У меня две таблицы 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
имя должно быть написано красным, отображаться пользователю (с помощью запроса выбора), потому что они оба добавляются друг другом.
Если 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
Для начала вы должны иметь уникальный идентификатор пользователя, чтобы понять, был ли он добавлен или нет (например, электронная почта)
тогда (просто не использовать в реальных проектах)
save.php:
"SELECT `id` from `users` where `email` = '$email'";
если пользователь существует, сделайте это (так как пользователь может быть создан существующим пользователем, у вас уже есть его идентификатор (В $_SESSION['id']
например)):
"SELECT * from `userdata` where `edder` = '$id' AND `edded` = '$_SESSION['id']'";
если запись существует, это означает, что они добавляются в обратном направлении.
Других решений пока нет …