Как / в отличие от системы в PHP - PullRequest
0 голосов
/ 25 июня 2018

Я создаю подобную нелюбовь в PHP и mysqli;Я также выбираю посты пользователей-фолловеров, присоединяясь к фолловерам и фолловерам с помощью uid.Теперь я хочу, чтобы пользователям нравились картинки подписчиков, но я не могу получить индивидуальный идентификатор картинки.Это мой код для получения изображений подписчиков пользователя:

$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'];
}

и это мои фото на столе

это таблица фотографий:

это таблица последователей:

это таблица пользователей:

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Ваш код и запрос не позволяют получить правильные ответы.Внесите следующие изменения, которые сделают ваш запрос более компактным, и используйте подготовленные операторы 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, а видео было перестроено в соответствии с голосами без обновления страницы.

0 голосов
/ 25 июня 2018

Перво-наперво:

Ваш код кажется очень небезопасным. Вы не используете подготовленные операторы SQL для предотвращения SQL-инъекций и не экранируете значения в выводе html. Например. <h3>".$users['username']."</h3> кажется небезопасным против XSS.

Мой совет:

  • использовать подготовленные заявления
  • использовать шаблонизатор, который по умолчанию имеет экранирование (например, Twig)

Относительно вашей проблемы:

$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 - это одно и то же в таблице подписчиков.

Трудно понять, откуда возникла проблема. Код написан не очень хорошо, и есть некоторые вещи, которые мне не понятны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...