Как хранить POST-элементы в массиве - PullRequest
1 голос
/ 24 октября 2019

Это для "личного рецепта сайта", я застрял с функцией поиска. Сначала позвольте мне рассказать вам, как работает база данных:

Здесь я хотел бы создать страницу, на которой я могу искать рецепты, которые содержат, например, 1 или 2 специальных ингредиента. и в какой категории я хотел бы искать. Ссылка для поиска страницы изображения

Это search.php Я сделал на данный момент ... (вы можете увидеть это на codehare. io )

Как перейти к поиску рецептов, содержащих только выбранные ингредиенты?

<?php
    include("cnx.php");
    include("functions.php");
    // Query pour les catégories
    $rq_cat = "SELECT * FROM categories ORDER BY id_cat";
    $result_cat = $mysqli->query($rq_cat);
    if(isset($_POST["Recherche"]) AND $_POST["Recherche"] == "Go")
    {
        if($_POST["cat_recette"] == "") // Si aucune catégorie sélectionnée
        {
            echo "Aucune catégorie ";
            $rq_recettes = "SELECT * FROM recettes";
            $result_recettes = $mysqli->query($rq_recettes);
        }
        elseif($_POST["cat_recette"] == "Entrée") // Si catégorie Entrée sélectionnée
        {
            echo "Catégorie Entrée ";
        }
        elseif($_POST["cat_recette"] == "Plat") // Si catégorie Plat sélectionnée
        {
            echo "Catégorie Plat ";
            $rq_recettes = "SELECT * FROM recettes WHERE cat_recette='Plat'";
            $result_recettes = $mysqli->query($rq_recettes);
        }
        elseif($_POST["cat_recette"] == "Dessert") // Si catégorie Dessert sélectionnée
        {
            echo "Catégorie Dessert ";
            $rq_recettes = "SELECT * FROM recettes WHERE cat_recette='Dessert'";
            $result_recettes = $mysqli->query($rq_recettes);
        }
        elseif($_POST["cat_recette"] == "Soupe") // Si catégorie Soupe sélectionnée
        {
            echo "Catégorie Soupe ";
            $rq_recettes = "SELECT * FROM recettes WHERE cat_recette='Soupe'";
            $result_recettes = $mysqli->query($rq_recettes);
        }
        elseif($_POST["cat_recette"] == "Autre") // Si catégorie Autre sélectionnée
        {
            echo "Catégorie Autre ";
            $rq_recettes = "SELECT * FROM recettes WHERE cat_recette='Autre'";
            $result_recettes = $mysqli->query($rq_recettes);
        }
    }
?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <link href="https://fonts.googleapis.com/css?family=Quando&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="css/style.css">
    <title>cooketal</title>
</head>
<body class="search">

    <header>
        <?php 
            include("nav.php");
        ?>
    </header>

    <div class="banner">
        <h2>Recherche</h2>
    </div>
<section class="all-recipes add left">
    <div class="frigo-ing col-3">
        <table>
            <div class="contenu">  
                <form action="" method="POST">

                <h1>Les ingrédients que je possède</h1>
                <?php for ($i=1; $i < 10 ; $i++) { ?>
                <table>
                    <th><span><?php echo $i ?></span></th>
                    <td>
                        <select name="ing<?php echo $i; ?>">
                            <option value="" selected>- - - -</option>                      
                            <?php 
                                $rq_ingredients = "SELECT * FROM ingredients ORDER BY nom_ingredient ASC";
                                $result_ingredients = $mysqli->query($rq_ingredients);
                                while($row_ingredients = $result_ingredients->fetch_object()){ ?>
                                <option value="<?php echo $row_ingredients->id_ingredient; ?>"><?php echo $row_ingredients->nom_ingredient; ?></option>
                            <?php } ?>
                        </select>
                    </td>
                </table>
                <?php } ?>

                    <h1>Une catégorie en particulier ?</h1>
                    <select id="cat-recette" name="cat_recette">
                        <option value="">- - - -</option>
                        <?php 
                        $rq_cat = "SELECT * FROM categories ORDER BY id_cat";
                        $result_cat = $mysqli->query($rq_cat);
                        while( $row_cat = $result_cat->fetch_object()){ ?>
                            <option value="<?php echo $row_cat->cat_recette; ?>" <?php if( isset( $_POST["cat_recette"]) AND $_POST["cat_recette"] == $row_cat->cat_recette){ echo "selected";} ?>><?php echo $row_cat->cat_recette; ?></option>
                        <?php } ?>
                    </select><br>

                    <input type="submit" name="Recherche" value="Go">

                </form>
            </div>
        </table>
    </div>

    <div class="frigo-ing col-3">
        <h1>Résultats</h1>
    </div>

</section>

1 Ответ

0 голосов
/ 24 октября 2019

Если вы предлагаете использовать ajax , сделать select в html и установить вызов ajax, когда значение select's изменилось. Как это.
SELECT:

<select name='select' class='ingredient'>
<option value="" selected>- - - -</option>                      
                            <?php 
                                $rq_ingredients = "SELECT * FROM ingredients ORDER BY nom_ingredient ASC";
                                $result_ingredients = $mysqli->query($rq_ingredients);
                                while($row_ingredients = $result_ingredients->fetch_object()){ ?>
                                <option value="<?php echo $row_ingredients->id_ingredient; ?>"><?php echo $row_ingredients->nom_ingredient; ?></option>
                            <?php } ?>
</select>

AJAX CALL:

$('.ingredient').change(function() {
    var selected = $('.ingredient').val();
    var data = "";
    $.ajax({
        type:"GET",
        url : "search.php?ingredient='+selected+'',
        data : "",
        async: false,
        success : function(response) {
            //Here you get recipe name in response as return .. I hope it work.
        },
        error: function() {
            alert('Error occured');
        }
    });

Сделайте еще одну страницу под названием search.php
Здесь вы получите рецептс ингредиентом

<?php
$id = $_GET["ingredient"];
$sql = "SELECT * FROM recettes WHERE cat_recette='$id'";
$result = $conn->query($statement);
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "".$row["nom_recette"]."";
    }  
}
?>
...