как подсчитать, сколько пользователей оценили определенные c элементы в php и mysqli - PullRequest
0 голосов
/ 09 июля 2020

Ну, у меня было так много одинаковых результатов в stackoverflow, но этого не было в php и mysqli. Я пытаюсь подсчитать, сколько пользователей оценили, указав c item. Как 10 пользователей оценили item_id 21. Фактически Я могу показать, сколько пользовательских оцененных c элементов, используя счетчик в select * на веб-странице, но мне также нужно сохранить их в моей базе данных. Таким образом, я могу предложить другим пользователям наиболее оцененный продукт. это мне нужно сохранить, сколько пользователей, которые оценили, чтобы указать элемент c. Но я не знаю. Мой код находится в pdo.plz, помогите мне.

В этом коде я могу показать их на веб-странице, используя счетчик, но я тоже хочу сохранить их в базе данных. Я не знаю, где мне поместить запрос на вставку. потому что в моем коде $ output используется только для отображения вывода не для вставки ..

<?php
$connect = new PDO('mysql:host=localhost;dbname=final', 'root', '');
  $id=$_GET['id'];

$query = "SELECT p.*,COUNT(r.rating) as rating_num FROM search
 as p LEFT JOIN rating as r ON r.business_id = p.id WHERE p.id = $id"; 
$statement = $connect->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
$output = '';
foreach($result as $row)
{
 $rating = count_rating($row['id'],$connect);
 $color = '';
$count='';
$output .= '
<h1 class="text-center  mt-1 mb-2 p-2" style="text-transform:capitalize;background-color:white;color:black;text-align:center;">Brand_Name:'. $row["brand"].'</h1>
';
$output .= '
<div class="columnhead" style="padding-left:140px;text-align:left;background-color:white;">
<p style="font-size:30px;"><b>Name:</b>'.$row["name"].'</p>
<p style="font-size:30px;"><b> Brand_name:</b>'.$row["brand"].'</p>
 <p style="font-size:30px;"><b>Code:</b>'.$row['code'].'</p>
<p style="font-size:30px;"><b>Color:</b>'.$row['color'].'</p>
<p style="font-size:30px;"><b>Size:</b>'.$row['size'].'</p>
<p style="font-size:30px;"><b>Price:</b>'.$row['price'].'</p>
';
for($count=1; $count<=5; $count++)
 {
  if($count <= $rating)
  {
   $color = 'color:#ffcc00;';
  }
  else
  {
   $color = 'color:#ccc;';
  }
  $output .= '
 <ul  class="inline-list  title="Average Rating - '.$rating.'" style="display:inline-block;list-style-type: none; padding: 0;"">
<li  title="'.$count.'" name="'.$row['name'].'" id="'.$row['id'].'-'.$count.'" data-index="'.$count.'"  data-business_id="'.$row['id'].'" data-rating="'.$rating.'" class="rating" style="cursor:pointer; '.$color.' font-size:16px;">&#9733;</li>
</ul>
'; 
}
  $output .= '
<p>('.$row["rating_num"].' users voted)</p>
';
 $output .= '
 <form method="post" action="mycart.php?action=add&id='.$row['id'].'">  
                <p style="font-size:30px;"><b>Quantity:</b></p><input type="text" name="quantity" class="button1" value="1" width="15px">
                <input type="hidden" name="name" value="'.$row['name'].'">
                <input type="hidden" name="price" value="'.$row['price'].'"> 
<br/> 
  <input type="submit" class="a" name="add_to_cart" value="Add to Cart">
        </form>
</div>

';
}
echo $output;
 
function count_rating($business_id,$connect)
{
 $output = 0;
 $query = "SELECT AVG(rating) as rating FROM rating WHERE business_id = '".$business_id."'";
 $statement = $connect->prepare($query);
 $statement->execute();
 $result = $statement->fetchAll();
 $total_row = $statement->rowCount();
 if($total_row > 0)
 {
  foreach($result as $row)
  {
   $output = round($row["rating"]);
 }
 }
 return $output;
 
}

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