PHP脚本无需重定向即可运行

时间:2019-03-19 16:15:30

标签: php jquery html mysql forms

我有一个包含两个表的数据库:帐户和配方(每个都有自己的ID列)。

我有一个页面,显示所有食谱。我想让用户将配方添加到帐户表中的收藏夹中。用户登录后,将设置$ _SESSION ['user_id']。

我有一个脚本,可以将配方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?
                }
            }
        });
    });
});

0 个答案:

没有答案