я создаю как нелюбовь системы в PHP MySQL & Я также получаю сообщения от пользователей, подписавшись, присоединяясь к подписчикам. & я хочу, чтобы пользователям нравились картинки подписчиков, но я не могу получить индивидуальный идентификатор картинки.
это мой код для получения фото подписчиков
$query = "SELECT photos.image_url,photos.email,photos.username,photos.uid,photos.id FROM photos join followers on photos.uid = followers.user_id where followers.uid = '$id' ORDER BY photos.image_url DESC ";
$fire = mysqli_query($con,$query) or die("can not fetch data from database ".mysqli_error($con));
if (mysqli_num_rows($fire)>0) {
$row = mysqli_fetch_assoc($fire);
$follower_email = $row['email'];
$pics_id = $row['id'];
while ( $users = mysqli_fetch_assoc($fire)) {?>
<div class="card" >
<div class="float">
<div class="avatar">
<img src="<?php echo $avatar_image; ?>" class="avatar">
</div>
<div class="username" style="">
<p><?php echo $users['username']; ?></p>
</div>
</div>
<img src="<?php echo $users['image_url']?>" alt="Avatar" style="width:100%">
<div class="container">
<h4><b><?php echo "<div><a href='users.php?id=".$users['uid']."'>
<h3>".$users['username']."</h3>
</div></a>";?></b></h4>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="POST">
<input type="submit" name="like" value="like">
</form>
</div>
</div>
</div><br>
<?php }
}
?>
и это мой код для вставки лайков
<?php
if (isset($_POST['like'])) {
$query = "INSERT INTO likes(id,user_id,post_id) VALUES('','$id','$pics_id')";
$fire = mysqli_query($con,$query)or die();
}
?>
и это мой код, где я получил все переменные
<?php
$query = "SELECT * FROM photos";
$fire = mysqli_query($con,$query) or die("can not fetch data from database ".mysqli_error($con));
if (mysqli_num_rows($fire)>0) {
$users = mysqli_fetch_assoc($fire);
$pic_id = $users['id'];
}
?>
<?php
$query = "SELECT * FROM users WHERE email='$email'";
$fire = mysqli_query($con,$query) or die("can not fetch data from database ".mysqli_error($con));
if (mysqli_num_rows($fire)>0) {
$row = mysqli_fetch_assoc($fire);
$id = $row['id'];
}?>
<?php
$query = "SELECT * FROM users WHERE id='$id'";
$fire = mysqli_query($con,$query) or die("can not fetch data from database ".mysqli_error($con));
if (mysqli_num_rows($fire)>0) {
$users = mysqli_fetch_assoc($fire);
$id = $users['id'];
$fullname = $users['fullname'];
$avatar_image = $users['avatar_path'];
}
?>
<?php
$query = "SELECT * FROM photos WHERE email='$email'";
$fire = mysqli_query($con,$query) or die("can not fetch data from database ".mysqli_error($con));
if (mysqli_num_rows($fire)>0) {
$row = mysqli_fetch_assoc($fire);
$photos_id = $row['id'];
$photos_uid = $row['uid'];
$photos_email = $row['email'];
}?>
<?php
$query = "SELECT * FROM photos WHERE id='$id'";
$fire = mysqli_query($con,$query) or die("can not fetch data from database ".mysqli_error($con));
if (mysqli_num_rows($fire)>0) {
$users = mysqli_fetch_assoc($fire);
$username = $users['username'];
}
?>
<?php
$query = "SELECT * FROM followers WHERE id='$id'";
$fire = mysqli_query($con,$query) or die("can not fetch data from database ".mysqli_error($con));
if (mysqli_num_rows($fire)>0) {
$row = mysqli_fetch_assoc($fire);
$user_id = $row['user_id'];
$follower_id = $row['follower_id'];
$uid = $row['uid'];
}
а это мои фото
Thnx
Ваш код и запрос мешают вам получить правильные ответы. Внесите следующие изменения, которые сделают ваш запрос более компактным, и используйте подготовленные операторы sql или экранирующие значения для предотвращения внедрения.
$query = "SELECT *
FROM photos as 'ph'
inner join followers as 'fol'
on fol.user_id = ph.uid
where fol.uid = '$id'
ORDER BY ph.image_url DESC ";
Теперь удалите эти три строки кода
$row = mysqli_fetch_assoc($fire);
$follower_email = $row['email'];
$pics_id = $row['id'];
Поскольку вышеприведенное не является необходимым, вы можете получить одинаковые значения в цикле while для каждой записи.
Во входном типе submit передайте динамический идентификатор, чтобы поймать идентификатор pic, против которого будет подсчитываться подобное
<input type="submit" id="<?=$users['id'];?>|like" value="like">
В момент, как просто взорвать его на основе «|» и возьмите нулевое значение взорванного массива, чтобы получить идентификатор изображения. Этот тип кодов недолюбливания лучше всего использовать с помощью JQuery / AJAX. Однажды я разработал страницу, похожую на YouTube, где лайки, голоса и позиционирование видео на основе голосов были сделаны через JQuery / AJAX, а видео было перестроено в соответствии с голосами без обновления страницы.
Перво-наперво:
Ваш код кажется очень небезопасным. Вы не используете подготовленные операторы SQL для предотвращения SQL-инъекций и не экранируете значения в выводе html. Например. <h3>".$users['username']."</h3>
кажется небезопасным против XSS.
Мой совет:
По поводу вашей проблемы:
$query = "INSERT INTO likes(id,user_id,post_id) VALUES('','$id','$pics_id')";
Почему вы вставляете здесь пустой идентификатор? Разве это не должно быть хоть какой-то ценностью?
action="<?php $_SERVER['PHP_SELF'] ?>"
Это излишне. Просто удалите действие, если вы хотите опубликовать на тот же URL
Откуда берется $ id? Это правильно установлено?
join followers on photos.uid = followers.user_id
Это условие соединения правильное? Я не могу понять, к какому столбцу можно присоединиться, потому что названия столбцов не очень понятны. user_id и uid — это одно и то же в таблице подписчиков.
Трудно понять, откуда возникла проблема. Код написан не очень хорошо, и есть некоторые вещи, которые мне не понятны.