php - 如何将 POST 元素存储在数组中
问题描述
这是一个“食谱个人网站”,我被搜索功能困住了。首先让我告诉你数据库如何:
1表类别:图像的配方 链接类型
1 表成分:食谱中使用的所有成分 图片链接
1个表格recettes:所有食谱都存储有其类别的列 链接图片
1 表成分_recette:链接组成特定配方的所有成分和数量 图像链接
在这里,我想创建一个页面,我可以在其中搜索包含例如 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>
解决方案
如果建议您使用ajax并select
在 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"]."";
}
}
?>
推荐阅读
- javascript - 带有 OR 操作的 angularjs 过滤器
- php - 如何解决“Mysqli 错误 - 命令不同步”
- airflow - Airflow 将 jinja 模板作为字符串
- powershell - 使用 WS-COMMAND 调用系统无法处理企业服务器上的微焦点 COBOL
- javascript - 替换文件中的 Javascript 对象
- cupy - 为cupy数组分配GPU内存
- windows-10 - 在 Windows 10 (1803) 平台上使用 clearcase 8.0.1.x /9.0.1.x(签出文件)时系统崩溃
- android - 在 BottomSheetFragment 上重复 ConstraintSet 的过渡动画问题
- javascript - javascript oninput:按一键触发多个事件
- docker - 是否可以为 docker 卷设置 umask/chmod 值?