首页 > 解决方案 > 如何将 POST 元素存储在数组中

问题描述

这是一个“食谱个人网站”,我被搜索功能困住了。首先让我告诉你数据库如何:

在这里,我想创建一个页面,我可以在其中搜索包含例如 1 或 2 种特殊成分的食谱,以及我想搜索的类别。搜索页面图片的链接

这是我暂时完成的search.php ......(你可以在codeshare.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>

标签: phpmysqlrecipe

解决方案


如果建议您使用ajaxselect在 html 中制作并在select's值更改时设置 ajax 调用。像这样。
选择:

<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 调用:

$('.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"]."";
    }  
}
?>

推荐阅读