Php 基于表单选项生成输出

Php 基于表单选项生成输出,php,javascript,mysql,ajax,forms,Php,Javascript,Mysql,Ajax,Forms,我一直在不懈地寻找这个问题,但我找不到解决我困惑的答案——我认为问题在于我不确定该搜索什么!无论如何,我的问题是 场景: 想象一下,为了参数起见,拥有一个食谱数据库,您希望让用户能够根据各种标准生成食谱建议列表 以网页的形式,我希望它是左侧的一系列下拉框。用户将从下拉框中选择筛选选项,按下提交按钮后,将显示符合条件的配方列表 例如,他们可以选择“膳食类型”、“卡路里”、“烹饪时间”,然后(点击提交后)返回符合账单要求的食谱建议列表 (理想情况下,它们出现时无需重新加载页面,并包含在一个滑块中供浏

我一直在不懈地寻找这个问题,但我找不到解决我困惑的答案——我认为问题在于我不确定该搜索什么!无论如何,我的问题是

场景: 想象一下,为了参数起见,拥有一个食谱数据库,您希望让用户能够根据各种标准生成食谱建议列表

以网页的形式,我希望它是左侧的一系列下拉框。用户将从下拉框中选择筛选选项,按下提交按钮后,将显示符合条件的配方列表

例如,他们可以选择“膳食类型”、“卡路里”、“烹饪时间”,然后(点击提交后)返回符合账单要求的食谱建议列表

(理想情况下,它们出现时无需重新加载页面,并包含在一个滑块中供浏览,但如果我对底层部分进行排序,我可能会破解该部分…)

要求: 我只需要知道——在最高层次上——我将使用哪些技术来实现这一点(以及它们如何协同工作的过程)

我猜我需要一个MySQL数据库,其中包含带有条件标记的配方,然后使用表单和php从数据库中提取。这是正确的吗

这似乎是一个常见的要求,但我找不到关于如何实现这一点的好读物。

过程:

1) 用户进行选择并单击提交按钮。这将启动一个到PHP页面(可以是同一个PHP页面)的HTTP POST,您将在其中收集这些信息

2) 使用PHP打开MySql数据库连接。您需要了解SQL才能从MySql数据库中提取数据。取决于数据库模式的布局方式

3) 拉取此信息后,将其显示为用户可以单击的复选框

这是最低限度

如果您想更喜欢,可以使用jqueryajaxpost(http://api.jquery.com/jQuery.post/)因此页面不会刷新


祝你好运,我已经饿了。哈哈。

看一下PHP准备语句指南。基本上,您将针对数据所在的表编写select语句,select语句的where子句是用户在表单中选择的参数

您希望坚持使用准备好的语句的原因是,它们通常更安全,可以通过表单(使用SQL注入)抵御站点上的攻击

对于端到端解决方案,前端将提交到一个PHP页面,该页面将处理用户指定的标准,将这些标准转换为准备好的语句,该语句将从表中查找数据。表本身需要有与标准对应的列。这更多地涉及到数据库设计,这是一个更大的主题,但是有很多关于这方面的指南


实际上,您希望将解决方案分解为子组件,然后找到解决这些部分的各种指南。祝你好运,希望这有帮助。:)

当用户选择表单中的选项并提交时,将在服务器上运行PHP脚本。服务器检索选项参数,并使用它们构造SQL查询。例如,脚本可能包含以下内容:

$criteria = array();
if (isset($_POST['calories'])) {
    $criteria[] = 'calories < '.$_POST['calories']);
}
if (isset($_POST['time'])) {
    $criteria[] = 'cooking_time < '.$_POST['time']);
}
...
$query = 'SELECT * FROM recipes WHERE '.implode(' AND ', $criteria);
$criteria=array();
如果(isset($_POST['carries'])){
$criteria[]='Carries<.$\u POST['Carries'];
}
如果(isset($_POST['time'])){
$criteria[]='cooking_time<.$_POST['time']);
}
...
$query='SELECT*FROM recipes WHERE'。内爆('AND',$criteria);
您可以使用mysqli或PDO之类的库来执行查询并获得结果。然后循环遍历结果,并将其格式化为HTML表,该表将作为结果网页返回给用户


或者PHP脚本可以将结果作为JSON数据返回。您的网页可以使用AJAX从服务器获取这些数据,然后使用JavaScript将其格式化为表。

您只需要标记的技术。。。这就是我所能说的,问题的其余部分只是打开的方式。你需要为recipies定义你的数据库结构,如果你设置正确,过滤将非常容易。你需要一个
GET
来检索数据,而不是
POST
。你可以使用任何一个。当脚本处理一篇文章时,它返回一个要显示的文档。谢谢!你提供的链接上的选项#3,对吗?正在使用一个prepye获取数据,这就是其中之一。关于这类事情还有其他指南,值得一读。它也非常方便,因为你不必担心有人在提交内容时会引用它,等等。准备好的声明将有助于处理所有这些。