0

私はこれを執拗に検索しましたが、私の困惑に対する答えを見つけることができません-問題は、何を検索すればよいか正確にわからないことだと思います! とにかく、私の問題はこれです...

シナリオ: 議論のために、レシピのデータベースがあり、ユーザーがさまざまな基準に基づいてレシピの提案のリストを生成できるようにしたいと考えています。

Web ページの形式では、これを左側の一連のドロップダウン ボックスにしたいと思います。ユーザーはドロップダウン ボックスからフィルター オプションを選択し、送信ボタンを押すと、条件に一致するレシピのリストが表示されます。

たとえば、「食事の種類」、「カロリー」、「調理時間」を選択し、(送信を押した後) 法案に合ったレシピの提案のリストを取得できます。

(理想的には、ページをリロードせずに表示され、閲覧するためにスライダー内に含まれる必要がありますが、基になる部分を並べ替えれば、おそらくその部分をクラックできます...)

要件: 私は、これを達成するためにどのテクノロジーを使用するか (およびそれらがどのように連携するか) をトップレベルで知る必要があるだけです。

基準でタグ付けされたレシピを含むMySQL dBが必要であり、フォームとphpを使用してデータベースからプルする必要があると思います。これは正しいです?!

このような一般的な要件のように思えますが、これを達成する方法についての良い読み物が見つかりません..

4

3 に答える 3

1

準備済みステートメントの PHP ガイドをご覧ください。基本的に、データが存在するテーブルに対して select ステートメントを作成します。select ステートメントの where 句は、ユーザーがフォームで選択したパラメーターです。

PHP プリペアド ステートメント

準備済みステートメントに固執する理由は、SQL インジェクションを使用したフォーム経由のサイトへの攻撃に対して、一般的により安全だからです。

エンド ツー エンド ソリューションでは、フロント エンドが PHP ページに送信されます。PHP ページは、ユーザーが指定した条件を処理し、それらをテーブルからデータを見つける準備済みステートメントに変換します。テーブル自体には、基準に対応する列が必要です。これは、ここでカバーするより大きなトピックであるデータベース設計に関係しますが、そのためのガイドはたくさんあります。

実際には、ソリューションをサブコンポーネントに分割してから、さまざまなガイドを見つけてその部分に取り組む必要があります。頑張ってください、これが役に立てば幸いです。:)

于 2012-09-27T00:59:38.673 に答える
0

ユーザーがフォームでオプションを選択して送信すると、サーバー上で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);

mysqliやPDOなどのライブラリを使用して、クエリを実行し、結果を取得します。次に、結果をループしてHTMLテーブルにフォーマットし、結果のWebページとしてユーザーに返します。

または、PHPスクリプトが結果をJSONデータとして返すこともできます。WebページはAJAXを使用してサーバーからこのデータを取得し、JavaScriptを使用してデータをテーブルにフォーマットすることができます。

于 2012-09-27T01:21:34.393 に答える
0

プロセス:

1) ユーザーが選択を行い、送信ボタンをクリックします。これにより、これらの情報を収集する PHP ページ (同じ PHP ページでもかまいません) への HTTP POST が開始されます。

2) PHP で MySql データベース接続を開きます。MySql DB からデータを取得するには、SQL を知る必要があります。データベース スキーマがどのようにレイアウトされているかによって異なります。

3) この情報を取得すると、ユーザーがクリックできるチェックボックスとして表示されます。

これは最低限のことです。

もう少し派手にしたい場合は、JQuery ajax 投稿 (http://api.jquery.com/jQuery.post/) を使用して、ページが更新されないようにすることができます。

幸運を祈ります。もうお腹がすいてきました。ハハ。

于 2012-09-27T00:56:41.390 に答える