PHP-скрипт работает без перенаправления - PullRequest
0 голосов
/ 19 марта 2019

У меня есть база данных с двумя таблицами: учетные записи и рецепты (у каждой есть свой столбец идентификаторов).

У меня есть страница, которая отображает все рецепты. Я хочу, чтобы пользователи могли добавлять рецепты в избранное в таблице учетных записей. После входа пользователя в систему устанавливается $ _SESSION ['user_id'].

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

Вот что у меня есть:

_view.php

    <?php
    $result = $mysqli->query("SELECT * FROM recipes");

    if ( $result->num_rows == 0 ){
        $_SESSION['message'] = "Error!";
        echo "<div class='error-mess'>" . $_SESSION['message'] . "</div>";
    }
    else { 
        while ($row = mysqli_fetch_array($result)) {
                $slug = $row['slug'];
                $ingr = json_decode($row['ingr']);
                $ingr_count= count($ingr);
                $id = $row['id'];
                echo '<div class="container recipe mb-2">';
                echo  '<img class="" src="/images/recipes/';
                echo  $row['img'];
                echo '"/>';
                echo  '<div class="title-cats"><a href = "/recipe_preview.php?slug=' . $slug . '">';
                echo  $row['title'];
                echo  '</a></div>';
                echo  '<h4>Ingredients:</h4><br>';
                for($i = 0; $i<$ingr_count;$i++){
                    $num = $i + 1;
                    echo $num . '. ';
                    $ingrs = json_decode($ingr[$i],true);
                    print_r($ingrs[0]);
                    echo '<br>';
                }
                echo  '<br><a href="/recipe_preview.php?slug=' . $slug . '"><button type="submit" class="btn" name="add">Read More</button></a>';

//favourites link
                echo '<a href="/libs/_favourite.php" id="favourite" data-id="'.$id.'"><span class="fa fa-heart ml-3"></span></a>';

                echo  '</div><hr>';
            }
    }

_favourite.php

<?php
//relationship
require 'db.php';
$user_id = $_SESSION['user_id'];
//$favourite_id = $_POST['fav'];
$favourite_id = $_GET["id"];
echo $favourite_id;
echo $user_id;

$result = $mysqli->query("SELECT favourites FROM accounts WHERE id ='$user_id'");
if ( $result === null) {//doesnt work
    $favs = array();
    array_push($favs,$favourite_id);
    $new_favs = json_encode($favs);
    echo 'null';
}
else{
    $favs = array();
    $result = json_decode($result,true);
    array_push($favs, $result);
    array_push($favs,$favourite_id);
    $new_favs = json_encode($favs);
}
$sql = "UPDATE accounts SET favourites ='$new_favs' WHERE id = '$user_id'";
if ( $mysqli->query($sql)){
    echo '<div class="error-mess">Recipe sucessfully saved!</div>';
}
else{
    echo '<div class="error-mess">NOT</div>';

}

.js -jquery библиотека есть

$(document).ready(function() {
    $('#favourite').click(function(e) {
        e.preventDefault(); // prevents the default behaviour of following the link

        $.ajax({
            type: 'GET',
            url: $(this).attr('href'),
            data: {
                id: $(this).data('id'),
            },
            dataType: 'text',
            success: function(data) {
                // do whatever here
                if(data === 'success') {
                    alert('Updated succeeded');
                } else {
                    alert(data); // perhaps an error message?
                }
            }
        });
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...