Я работаю над личным проектом и пытаюсь создать php-скрипт для отображения кнопки «Follow», если вошедший в систему пользователь сеанса еще не следует за отображаемым пользователем.
Вот что яполучили:
<?php
$query = query("SELECT*FROM following, users WHERE followed_id=" .escape_string($_GET['id'])."
AND user_id=".escape_string($_GET['id'])." AND follower_id =".escape_string($_SESSION['user_id'])."");
confirm($query);
while($row = fetch_array($query)):
if(mysqli_num_rows($query)==0){
$followbutton=<<<DELIMITER
<form method="post" action="">
<input type="hidden" name="followed" value="{$row['user_id']}">
<input type="hidden" name="follower" value="{$_SESSION['user_id']}">
<input class="btn btn-info" type="submit" name="submit" value="follow">
</form>
DELIMITER;
echo $followbutton;
}elseif($row['follower_id'] == $_SESSION['user_id']){
$unfollowbutton=<<<DELIMITER
<form method="post" action="unfollow.php?id={$row['user_id']}">
<input class="btn btn-info" type="submit" value="Unfollow">
</form>
DELIMITER;
echo $unfollowbutton;
}
endwhile; ?>
Вот что делают запрос, escape_string, fetch_array и подтвердите:
function redirect($location){
header("Location: $location");
}
function query ($sql){
global $connection;
return mysqli_query($connection,$sql);
}
function confirm($result) {
global $connection;
if(!$result){
die("QUERY FAILED ".mysqli_error($connection));
}
}
function escape_string($string){
global $connection;
return mysqli_real_escape_string($connection,$string);
}
function fetch_array($result) {
return mysqli_fetch_array($result);
}
В таблице "следующим" есть только два столбца;follow_id и follower_id. Когда пользователь нажимает кнопку «Follow», он передает зарегистрированный user_id как follower_id, а user_id для человека, за которым следует «follow_id». Поскольку никаких записей не будет, если пользователь A еще не подписан на BI пользователя, кнопка должна отображаться только в том случае, если по запросу не возвращаются результаты.