как вызвать первичный ключ из таблицы в другой в php mysql - PullRequest
0 голосов
/ 17 марта 2019

У меня есть этот код, где я указываю ID пользователя, что я хочу, пожалуйста (поскольку у меня есть таблица в моей базе данных с именем tbl_registration, и у нее есть user_id), как вы можете видеть в моем коде, я указал $ userid = 3, я хотите, чтобы это было, зависит от идентификатора, который имеет пользователь регистра, пожалуйста. это функция оценки, и если у вас есть возможность, только зарегистрированный пользователь будет оценивать любой фильм не более одного раза для каждого фильма. Я буду рад, если вы можете помочь мне с этим, спасибо

rating.php

<?php

include "config.php";

$userid = 3;
$movieId = $_POST['movie_id'];
$rating = $_POST['rating'];

// Check entry within table
$query = "SELECT COUNT(*) AS cntpost FROM post_rating WHERE movie_id=".$movieId." and userid=".$userid;

$result = mysqli_query($con,$query);
$fetchdata = mysqli_fetch_array($result);
$count = $fetchdata['cntpost'];

if($count == 0){
    $insertquery = "INSERT INTO post_rating(userid,movie_id,rating) values(".$userid.",".$movieId.",".$rating.")";
    mysqli_query($con,$insertquery);
}else {
  $insertquery = "INSERT INTO post_rating(user_d,movie_id,rating) values(".$userid.",".$movieId.",".$rating.")";
  mysqli_query($con,$insertquery);
}


// get average
$query = "SELECT ROUND(AVG(rating),1) as averageRating FROM post_rating WHERE movie_id=".$movieId;
$result = mysqli_query($con,$query) or die(mysqli_error());
$fetchAverage = mysqli_fetch_array($result);
$averageRating = $fetchAverage['averageRating'];

$return_arr = array("averageRating"=>$averageRating);

echo json_encode($return_arr);

movies.php

<?php include('header.php');?>
<br/>
<link href="style.css" type="text/css" rel="stylesheet" />
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css">
<link href='jquery-bar-rating-master/dist/themes/fontawesome-stars.css' rel='stylesheet' type='text/css'>

<!-- Script -->
<script src="jquery-3.0.0.js" type="text/javascript"></script>
<script src="jquery-bar-rating-master/dist/jquery.barrating.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
        $('.rating').barrating({
                theme: 'fontawesome-stars',
                onSelect: function(value, text, event) {

                        // Get element id by data-id attribute
                        var el = this;
                        var el_id = el.$elem.data('id');

                        // rating was selected by a user
                        if (typeof(event) !== 'undefined') {

                                var split_id = el_id.split("_");

                                var movie_id = split_id[1];  // postid

                                // AJAX Request
                                $.ajax({
                                        url: 'rating_ajax.php',
                                        type: 'post',
                                        data: {movie_id:movie_id,rating:value},
                                        dataType: 'json',
                                        success: function(data){
                                                // Update average
                                                var average = data['averageRating'];
                                                $('#avgrating_'+movie_id).text(average);
                                        }
                                });
                        }
                }
        });
});

</script>
<div class="container-fluid">
<h1 class="style-text text-center"><strong>All Movies</strong></h1><br/ ><br>
</div>
<div class="content">
    <div class="wrap">
        <div class="content-top">

            <?php
                        $userid=3;
             $qry2= "select * from  tbl_movie order by rand()";
                         $result = mysqli_query($con,$qry2);
              while($m=mysqli_fetch_array($result))
                   {
                                         $movieId = $m['movie_id'];
                                         $image = $m['image'];
                                         $movieName = $m['movie_name'];
                                         $type = $m['type'];
                                         // User rating
                    $query = "SELECT * FROM post_rating WHERE movie_id=".$movieId." and userid=".$userid;
                    $userresult = mysqli_query($con,$qry2) or die(mysqli_error());
                    $fetchRating = mysqli_fetch_array($userresult);
               //   $rating = $fetchRating['rating'];
                                        $rating = isset($_GET['rating']) ? $_GET['rating'] : '';
                    // get average
                    $qry2 = "SELECT ROUND(AVG(rating),1) as averageRating FROM post_rating WHERE movie_id=".$movieId;
                    $avgresult = mysqli_query($con,$qry2) or die(mysqli_error());
                    $fetchAverage = mysqli_fetch_array($avgresult);
                    $averageRating = $fetchAverage['averageRating'];

                    if($averageRating <= 0){
                        $averageRating = "No rating yet.";
                    }
            ?>
                        <div class="col-md-2 col-md-offset-1">
                        <div class="imageRow">
                        <div class="single">
                        <a href="about.php?id=<?php echo $movieId;?>"><img src="<?php echo $image;?>" alt="" width=180 height=280/></a>
                        </div>
                        <div clsss='post'>
                        <!-- Rating -->
                        <select class='rating <?php echo $movieId; ?>' data-id='rating_<?php echo $movieId; ?>'>
                                <option value="1" >1</option>
                                <option value="2" >2</option>
                                <option value="3" >3</option>
                                <option value="4" >4</option>
                                <option value="5" >5</option>
                        </select>

                        Average Rating : <span id='avgrating_<?php echo $movieId; ?>'><?php echo $averageRating; ?></span>
                        <div class="movie-text">
                        <h4 class="h-text"><a href="about.php?id=<?php echo $movieId;?>"><?php echo $movieName;?></a></h4>
                        Type: <Span class="color2"><?php echo $type;?></span><br/></br/>

                            <!-- Set rating -->
                            <script type='text/javascript'>
                            $(document).ready(function(){
                                $('<?php echo $movieId; ?>').barrating('set',<?php echo $rating; ?>);
                            });

                            </script>


                                                    </div>  </div>  </div>

</div>

        <?php
            }
            ?>
            </div></div></div>
                <div class="clear"></div>

            <?php include('footer.php');?>

1 Ответ

0 голосов
/ 17 марта 2019

Ответ, потому что в вашем коде и проблемах с производительностью серьезный недостаток безопасности !

Во-первых, у вас есть то, что мы называем «SQL-инъекция»:

<?php
$query = "SELECT COUNT(*) AS cntpost FROM post_rating WHERE movie_id=".$movieId." and userid=".$userid;
$query="SELECT * FROM post_rating WHERE movie_id=".$movieId." and userid=".$userid;

Это должно использовать подготовленный оператор, как описано в руководстве по PHP . Подробную информацию о внедрении SQL можно найти в википедии .

Вторым является печально известный «заказ по ранду ()». Не делай этого! Это очень медленно, так как БД должна сканировать полную таблицу И "rand ()" нестабильна. Это означает, что тасование будет медленным и предвзятым. Вам может быть лучше взять несколько случайных строк со стороны клиента. Кроме того, установите ограничение: сегодня 10 строк, за неделю 100 и т. Д.

Избегайте "*" в выборе. Вы будете получать столбцы, которые вам не нужны!

По основному вопросу вы хотите, чтобы ваш пользователь подключался к вашей системе, используя систему аутентификации, например, пару имя пользователя / пароль.

Затем вы хотите начать ( сеанс на стороне сервера ).

Оттуда вы сможете хранить и извлекать любую нужную вам информацию, включая ID пользователя.

Также полезно проверить, как работают функции .

Персональный совет: прочитайте инструкции в справочник по языку

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