• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:パラメータを使ってみたい)

PHPでパラメータを使った商品検索を実装する方法

このQ&Aのポイント
  • syouhinテーブルにパラメータを使った商品検索機能を追加する方法についてアドバイスをお願いします。
  • 現在、syouhinテーブルの商品を価格帯で検索するためにPHPファイルを作成していますが、パラメータを使用して効率的に検索する方法を知りたいです。
  • 具体的には、price.phpファイルにlowとheightというパラメータを追加し、syouhinテーブルの商品を指定された価格帯で検索したいです。適切なデータベース設計方法のアドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kurarigu
  • ベストアンサー率100% (8/8)
回答No.1

意図されている回答かどうかわかりませんが、GETでパラメータを渡しその値の範囲で検索をと言う事でしたらテーブルはそのままで <?php #DB接続 $low = real_escape_string($_GET["low"]); $height = real_escape_string($_GET["height"]); $sql = "SELECT * FROM syouhin WHERE price >= '$low' AND price <= '$height'"; #SQL実行 #データ取り出し #やりたい処理 #DB切断 ?> という感じでGETパラメータをエスケープしてSQLに変数として渡す事でいけると思います。 質問の意図を勘違いしていたらすみません。

noname#184272
質問者

お礼

ありがとうございます。 希望通りできました。 分かりにくい質問で申し訳ございませんでした

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kurarigu
  • ベストアンサー率100% (8/8)
回答No.2

連続投稿すみません。 real_escape_stringでは無くmysql_real_escape_stringでした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 受け取ったパラメータを次のphpファイルにも引き継ぐ場合

    受け取ったパラメータを 別のphpファイルリックを使って引き継ぎたい時、 <a href="test.php?id=<?php echo $id; ?>">a.php</a> と記述すれば引き継げると思うのですが、 その際、アドレスバーにパラメータ部分を表示させない 事は出来ますか? それが出来ないとすると、<a href="...">ではなく、 どのようにしたらいいのですか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • MAMPでリンクに設定しているパラメータが...

    タイトル【MAMPでリンクに設定しているパラメータがあるURLになると消えてしまう】 http://localhost/○○○○/index.php で見た場合、開発ツールでリンクを見ると <a href="?○○○○=△△△△△">~</a> と記述されているのですが、 http://localhost/○○○○/ で見た場合ですと <a href="">~</a> のようにパラメータが空っぽになってしまっています。 これは何か設定が必要なのでしょうか。 また、デフォルトで http://localhost/○○○○/index.php にさせることはできるのでしょうか? よろしくお願いいたします。

    • 締切済み
    • PHP
  • パラメータを2個つけたい

    ある住所録があり、インデックスをつけてページング処理もさせたいと思っています。 具体的には、「あ」を押すとあ行の人のデータが1~10件表示され、 「next」を押すと、「あ」行の11~20件を表示するイメージになります。 以下のPHPを作成しましたがうまく動作しません。 どうしたらよろしいでしょうか。 ご教授ください。宜しくお願い致します。 ********************************** エラーメッセージ ********************************** Notice: Undefined variable: dtcnt in C:\Program Files\Apache…テスト.php on line 359 359行目が「back」を表示するコードになります↓。 if ($p > 1) { echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$prev\"> back</a>"; } ****************************** 作成したPHP 環境:PGSQL8.24 PHP5 Apache2.2 ****************************** <a href="テスト.php?x=a">あ</a> <a href="テスト.php?x=ka">か</a> … <a href="テスト.php?x=wa">わ</a> <table> <tr> <th>NO</th> <th>氏名</th> <th>住所</th> </tr> <?php // データベースに接続する $conn = pg_connect("host=サーバ dbname=データベース user=ユーザ password=パスワード") or die("接続エラー"); // 取り出す最大レコード数 $lim = 10; // 表示するページ位置を取得する $p = intval(@$_GET["p"]); if ($p < 1) { $p = 1; } // 表示するデータの位置を取得する $st = ($p - 1) * $lim; // 前のページ/次のページのページ番号を取得する $prev = $p - 1; if ($prev < 1) { $prev = 1; } $next = $p + 1; // データを取り出す if ($_GET['x']=='a') { // あ行 $sql = "select no, name, address from テーブル WHERE (name LIKE N'あ%' OR name LIKE N'い%' OR name LIKE N'う%' OR name LIKE N'え%' OR name LIKE N'お%') ORDER BY name LIMIT $lim OFFSET $st;"; } …(か行~ら行) if ($_GET['x']=='wa') { // わ行 $sql = "select no, name, address from テーブル WHERE (name LIKE N'わ%' OR name LIKE N'を%' OR name LIKE N'ん%') ORDER BY name LIMIT $lim OFFSET $st;"; } // 取り出したデータを表示する for ($i = 0; $i < pg_num_rows($res); $i++) { $row = pg_fetch_array($res, $i, PGSQL_ASSOC); echo "<tr>"; echo "<td>".$row["id"]."</td>"; echo "<td>".cnv_enc($row["name"], $enc_disp, $enc_db)."</td>"; echo "<td>".$row["address"]."</td>"; echo "</tr>"; } echo "</table>"; // 前のページ/次のページへのリンク if ($p > 1) { echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$prev\"> back</a>"; } if (($next - 1) * $lim < $dtcnt) { echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$next\"> next</a>"; } // 接続を解除する pg_close($conn); ?> </table> </body> </html>

    • ベストアンサー
    • PHP
  • phpmyadminからphpに読み込ませて配列化

    現在phpmyadminからphpに読み込みこんで配列化する勉強をしています。 syouhinテーブルの中にid name priceというものを用意しています。 $recordSet = mysql_query('SELECT * FROM syouhin'); while($data = mysql_fetch_assoc($recordSet)) { echo $data['id'],$data['name'],$data['price']; } このようにすれば用意しているもの、例えばidが1、nameがバナナ,priceが200、idが2、nameがバナナ,priceが200・・・・と全部でてくると思います。 これは$dataにこれらが入っているのだと思うですが、idが1のものをsyouhin1に格納しidが2のものをsyouhin2に格納するようにしたいのですがどうしたらいいでしょうか? すみません説明がへたくそでして。 プログラムは授業で勉強したばかりで配列が弱いので、丁寧に教えて頂けると嬉しいです。 ここの勉強もしておくべきという場所もありましたら教えて頂けると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • jQueryでPHPのパラメータを使うには

    画像のツールチップを表示させるjQuryのライブラリを導入しました。 ソースをはしょっているので、意味はわからないと思いますが、下記のように、 relのに値に「?no="~"」というパラメータを使用すると動作してくれません。 おそらくjQuery内でPHPのパラメータを使えない事が原因だと思うのですが、 このパラメータをjQuery内で利用するにはどうすれば良いでしょう? /* スクリプト */ <script type="text/javascript"> …………… $("body").append("<p id='screenshot'><img src='"+ this.rel +"' alt='url preview' />"+ c +"</p>"); …………… </script> /* PHPファイル */ <a href="test.php?no=1" class="screenshot" rel="test.php?no=1"><img src="test.php?no=1"></a>

  • ★PHP★パラメータで配列全てのデータを渡せる?

    初歩的ですみません。 パラメータで下記のように変数は渡せるのは理解できます。 <a href="ppp.php?act=prev&popid=5&category=おおお&size=aaa"></a> このデータをひとつにまとめて、配列とし、渡すことは可能でしょうか?

    • 締切済み
    • PHP
  • javascriptでGETパラメータを扱う

    javascript初心者です。 javascriptでURLをGETパラメータとして取得して、その値を HTMLのaタグのリンク先に指定しようとしています。 こんな感じに出来たらいいと思っています。 ↓ <a href="[GETパラメータで取得したURL]">[GETパラメータで取得したURL]</a> GETパラメータの取得は自力で調べて下記のように記述すればできることがわかりましたが、 aタグのリンク先に指定する記述方法が分かりません。 助けてください。 よろしくお願いします。 <script type="text/javascript"> function getUrlVars() { var vars = [], hash; var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); for(var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); vars.push(hash[0]); vars[hash[0]] = hash[1]; } return vars; } </script>

  • php_selfで複数の変数をパラメタとしたいとき

    php4.3.5にてdbデータをページ分けして表示する簡単なプログラムで、次ページへのリンクにページ番号をパラメタとして持たせていますが、もう1つの変数をパラメタに追加したいのですが私の追加方法では変数値が帰って来ません。 ~dbリード~dbデータの表示~ // 前のページ/次のページへのリンク if ($p > 1) { echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$prev\"> 前のページ</a>"; } if (($next - 1) * $lim < $dtcnt) { echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$next\">←ココに?age=$ageを追加したい。 次のページ</a>"; } 単なる書式の問題なのかも知れませんが、オンラインマニュアル・MLの検索でも分かりませんでした。 ご教授よろしくお願いします。

    • ベストアンサー
    • PHP
  • php パラメータ

    新規登録として登録できたら別ウインドウに遷移せずそのままtopに戻し戻ってきたらデータが登録されているようにしたいですがなかなか出来ません 調べたら、exec関数を使えばできるとのことですが $return_data = exec("/usr/local/bin/php ./top.php param1 = 1 m2 = 2"); こんな例がありましたが自分の力ではこのプログラムのどこを修正すればtop.phpに返ってくるかわかりません 下記は新規登録を行うための入力フォームです 登録するボタンを押したらそのままtopに移動したいのですがいまはinsert.phpに飛んでしまいます regist.php <html> <head><title>新規登録</title></head> <body> <blockquote> <form action = "insert.php" method = "POST"> <br><br>登録画面<br><br> すべての項目入力してください<br> 番号<input type="number" name = "ID"> (一覧画面にない番号を入力してください) <br> <br>氏名<input type="text" size = "50" name = "NAME"><br><br> 住所<input type="text" size = "130" name = "ADDR"><br><br> <a href="http://localhost/top.php"> <input type = "submit" value = "登録する" style ="font-size:20px; width: 100px; height: 40px"></A> <a href="http://localhost/top.php"> <input type = "button" value = "一覧に戻る" style ="font-size:20px; width: 100px; height: 40px"></A> </body> </blockquote> </form> </body> </html> 下記はinsert.phpです <!--insert.php 登録完了--> <html> <body> <blockquote> <?php $con=mysqli_connect("localhost","root","admin","db_test"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } if ($_POST['ID'] != '' && $_POST['NAME'] != '' && $_POST['ADDR'] != '') { $id = mysqli_real_escape_string($con, $_POST['ID']); $name = mysqli_real_escape_string($con, $_POST['NAME']); $addr = mysqli_real_escape_string($con, $_POST['ADDR']); $sql="INSERT INTO tbl_test (番号, 氏名, 住所) VALUES ('$id','$name','$addr')"; if (!mysqli_query($con,$sql)) { die('Error: ' . mysqli_error($con)); } echo "登録完了しました"; } else { echo "<br><br>データが未入力の箇所があります。すべてデータを入力してください"; } mysqli_close($con); $return_data = exec("/usr/local/bin/php ./top.php param1 = 1 m2 = 2"); ?> <br><br><br> <a href="http://localhost/regist.php"> <INPUT TYPE = "button" VALUE = "登録画面に戻る" style ="font-size:20px; WIDTH: 140px; HEIGHT: 40px"></A> <br><br><br> <A HREF="http://localhost/top.php"> <INPUT TYPE = "button" VALUE = "一覧に戻る" style ="font-size:20px; WIDTH: 140px; HEIGHT: 40px"></A> </blockquote> </body> </html> どこを直せばいいですか? 本格的に直さないとできないですか?

    • ベストアンサー
    • PHP
  • 受け取ったパラメータが文字化け

    お世話になります、JavaScript初心者です。 GET送信によるパラメータを他ページに受け渡して表示をさせると 各ブラウザで以下のような現象が起こります。 □Windows ・IE8:正常に表示 ・IE7:正常に表示するがエラーが表示される (エラー内容:「'document.form1.courseno.value'はNullまたはオブジェクトではありません。」) ・IE6:表示されずにエラーが表示される ・FF/chrome:文字化け □Macintosh ・safari/FF:文字化け 様々なサイトのソースを参考に自分なりに書いたのですが、 初心者なものでどこが原因なのか見当もつきません。 以下に該当するソースを明記いたしますので、ご教授いただければ助かります。 /* ↓↓↓パラメータを渡すページ↓↓↓ */ <script type="text/javascript"> function send() { var courseno=course=day=price=""; /* コード変換 */ courseno=escape(document.form1.courseno.value); course=escape(document.form1.course.value); day=escape(document.form1.day.value); price=escape(document.form1.price.value); } </script> <body> <form action="#" method="get" name="form1"> <p><a href="get.html?courseno=4074&course=水晶岳岳&day=12月25日&price=93,000円" onclick="send();">お申込み</a></p> </form> </body> /* ↑↑↑パラメータを渡すページ↑↑↑ */ /* ↓↓↓パラメータを表示させるページ↓↓↓ */ <script type="text/javascript"> function pramWrite() { var pram=location.search; /* パラメータがない時は処理しない */ if (!pram) return false; /* 先頭の「?」を削除して「&」で分割し配列へ */ pram=pram.substring(1); var pair=pram.split("&"); var i=temp=""; var key=new Array(); for (i=0; i < pair.length; i++) { /* 配列の値を「=」で分割 */ temp=pair[i].split("="); keyName=temp[0]; keyValue=temp[1]; /* キーと値の連想配列を生成 */ key[keyName]=keyValue; } var courseno=course=day=price=""; courseno=unescape(key["courseno"]); course=unescape(key["course"]); day=unescape(key["day"]); price=unescape(key["price"]); document.form1.pram.value="コースNO:"+courseno+"\n"+"コース名:"+course+"\n"+"出発日:"+day+"\n"+"旅行代金:"+price+"\n"; } </script> <body onload="pramWrite()"> <p>受け取ったパラメータを表示</p> <form name="form1" action="#"> <textarea name="pram" cols="40" rows="4" readonly="readonly" wrap="off" style="border:0;overflow:visible"></textarea> </form> </body> /* ↑↑↑パラメータを表示させるページ↑↑↑ */ 以上、よろしくお願いいたします。