DB(MySQL)、PHP、jQueryの連結

このQ&Aのポイント
  • 現在DB(MySQL)、PHP、jQueryの連結でつまづいております。
  • 上記3で困っております。現状はjQueryのchangeで項目が選択されたと同時にセレクト項目$item['web_category']をjs変数に代入し、loadでDB検索リクエスト用のphpファイルにポストできないものかと考えていたのですが、jQの部分でエラーがでてしまいどうにもうまくいきません。
  • 初心者なものでこのやり方自体はき違えているのかもしれません。説明下手な上、支離滅裂な個所もあるかとは存じますが、それも含めご教授いただけるとありがたいです。
回答を見る
  • ベストアンサー

DB(MySQL)、PHP、jQueryの連結

現在DB(MySQL)、PHP、jQueryの連結でつまづいております。 具体的には 1.フォームからポストした値をDBへ保存 フォーム項目はタイトル、カテゴリ、内容の3つです。 ↓ 2.DBから上記で保存された値(カテゴリ)をセレクトメニューへ出力 ↓ 3.セレクトメニュー内のカテゴリが選択されたタイミングでDBへセレクトされたワード(カテゴリ)で検索をかけ同ページセレクトメニュー下にカテゴリと一致したタイトルと内容を出力 という言う様な形にしたいのですが、上記3で困っております。 現状はjQueryのchangeで項目が選択されたと同時にセレクト項目(上記2でDBから出力したカテゴリが代入されているphp変数)$item['web_category']をjs変数に代入し、loadでDB検索リクエスト用のphpファイルにポストできないものかと考えていたのですが、jQの部分でエラーがでてしまいどうにもうまくいきません。如何せん初心者なものでこのやり方自体はき違えているのかもしれません。説明下手な上、支離滅裂な個所もあるかとは存じますが、それも含めご教授いただけるとありがたいです。問題と思われる個所のコードは以下の通りです。 セクトメニュー部 <form> <select id="category"> <?php while ($item = mysql_fetch_array($rs)) { echo "<option id='".$item['web_category']."'>" .$item['web_category']. "</option>"; } ?> </select><br> </form> jQ部 $("#category").change( function() { var value = $(this).val(); $("#display").load('search.php', {search: value}); });

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 まずエラーが出ている場合はどんなエラーが出ているかを質問に含めると回答が付きやすいです。 似たような構成で作ってみましたがエラーになりませんでした。 どこかケアレスミスか何かだと思いますがいかがでしょうか。 エラーメッセージ、全体のソースを補足頂ければ解決策が見つかるかもしれません。 ==== 動作確認 http://hppg.moe.hm/okwave/qa/q7289962/ ==== ソース <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <title>DB(MySQL)、PHP、jQueryの連結</title> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript">google.load('jquery','1');</script> <script type="text/javascript"> $().ready ( function() { $("#category").change ( function() { var value = $(this).val(); $("#display").load ( 'search.php', {search:value} ); }); }); </script> <style type="text/css"> body { background-color:#000;color:#999; } </style> </head> <body> <h1>カテゴリ検索</h1> <form> <p> カテゴリ <select name="category" id="category"> <option value="youga">洋画</option> <option value="houga">邦画</option> <option value="anime">アニメ</option> </select> </p> <div id="display"></div> </form> </body> </html>

kabane_shi
質問者

お礼

お礼が遅くなってしまい申し訳ありません。 仰る通り私の記述ミスでした。 上記のコードを参考にさせていただきどうにか自身が希望していた物を作成することが叶いました。 本当にありがとうございます。

関連するQ&A

  • PHPからMySQLに接続することができません。

    PHPからMySQLに接続することができません。 解決方法をご存じの方は教えていただけないでしょうか。 PHPから、mysql_connect を行った際、以下のエラーが発生してしまいます。 Can't connect to local MySQL server through socket '/tmp/mysql.sock' (13) 環境 OS:CentOS 5.3 DB:Mysql 5.0.67(ソースからインストール) Web:Apache PHPのソースの一部を以下に記します。   $db_host = 'localhost';//DB_NAME;   $db_user = 'user';//DB_USER;   $db_pass = 'pass';//DB_PASS;   $db = mysql_connect($db_host,$db_user,$db_pass); 以下の方法も試したのですが、エラーメッセージは変わりませんでした。   $mysql_connect("localhost:/tmp/mysql.sock","mysql","passwd") 端末のコマンドからMySQLへの接続は成功します。 ホスト名、ユーザー名、パスワードも上記と同一のものです。   $ /usr/local/mysql/bin/mysql -h localhost -u user -p   Enter password:pass 以上です。宜しくお願いします。

    • 締切済み
    • PHP
  • Ajax、PHP、MySQLでDBからデータをWEB上に表示するサイト

    Ajax、PHP、MySQLでDBからデータをWEB上に表示するサイトでDBのデータが変わるとWEBサイトの表示も変わるようにするにはどうすればいいのでしょうか。

    • ベストアンサー
    • AJAX
  • mysqlからphpに表示ですべての項目を出したい

    phpとmysqlの勉強をしているのですが、出したい項目がでてきてくれません。 今mysqlでidとnameとpriceの項目を作っているのですが、以下だとどうしてもnameしか出てきてくれません。 どうすれば3つの項目がでてくれますでしょうか? よろしくお願いします。 <?     mysql_connect('localhost' , 'root' , '') or die(mysql_error());     mysql_select_db('db1'); mysql_query('SET NAMES UTF8'); $sql="SELECT * FROM syouhin"; $res=mysql_query($sql); $options=""; while($row = mysql_fetch_array($res,MYSQL_ASSOC)){ $options.="<input type=\"radio\" name=\"syouhin1\" value='{$row['id']}' checked>        {$row['name']}\n<br>"; } $select="{$options}</select>\n";     print $select; ?>

    • ベストアンサー
    • PHP
  • DBとPHPを使ってこのサイトみたいなものを

    DBとPHPを使ってこのサイトみたいなものを http://japonyol.net/editor/sql-search-map.html DBやXMLの仕組みがいまいち理解できていません。 Webサーバのファイル配置もよくわかっていない為分かりやすく教えていただけるとうれしいです。

  • 飲食店のメニュー表を作成中。MySQLの内容を出力する時に画像が×表示になります。<img src="">の使い方を教えて下さい。

    PHP+MySQLで飲食店のメニュー表を作成しています。 -------------------------------------------------- MySQLのテーブル -------------------------------------------------- CREATE TABLE item ( id int(11) NOT NULL auto_increment, menu varchar(50) NOT NULL, comment text NOT NULL, upfilename TEXT NOT NULL, imgdir TEXT NOT NULL, PRIMARY KEY (id) ); id = オートナンバー menu = メニュー名 comment = メニューのコメント upfilename = アップロードするイメージファイル名 imgdir = アップしたイメージファイルのディレクトリ -------------------------------------------------- 質問 -------------------------------------------------- 「imgdir」には、常に「/web/img/」がMySQLに登録されるようにしています。 「menu.php」で出力する時に、「upfilename」にデータが存在しない場合は、×が表示されます。 メニューの写真がない場合もあります。 こういう場合は、どのような処理を行えばよいのでしょうか? よろしくお願い致します。 -------------------------------------------------- menu.php -------------------------------------------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> </head> <body> <?php $dbHandle = mysql_connect("mysql**.lolipop.jp","LA**","g**") or die("can not connect db\n"); $db = "LA**"; $sql = "SELECT id, menu, comment, upfilename, imgdir FROM item ORDER BY id DESC"; $rs = mysql_db_query($db,$sql); while ($item = mysql_fetch_array($rs)){ print $item['id'] . "<BR>"; print $item['menu'] . "<BR>"; print $item['comment'] . "<BR>"; print "<img src=".$item['imgdir'] . $item['upfilename'].">" . "<BR>"; print "<hr>"; } mysql_free_result($rs); mysql_close($dbHandle); ?> </body> </html>

    • ベストアンサー
    • PHP
  • php5+mysqlのSELECT文でwhere句を指定すると正しく動

    php5+mysqlのSELECT文でwhere句を指定すると正しく動きません。 レコード数を取得します。 ここで、field10(category)=text型の値に基づきレコード数を取得したいのですが、 $sql="select * from A where B='C'"; とするとレコード出力(index.php)で0を出力。 where句を指定せずに $sql="select * from A"; とするとレコード出力(index.php)で97を出力。 文字コード関係のQ&Aサイトを見ましたが、phpファイルの冒頭部分に $con = mysql_connect($DBSERVER, $DBUSER, $DBPASS); mysql_query("SET NAMES 'sjis'"); $selectdb = mysql_select_db($DBNAME, $con); を指定しています。 テーブルAに含まれるデータは、csv(,区切り)で、load data infile・・・しました。 ※Records:97 Deleted:0 Skipped:0 Warnings:0 他に考えられる原因・対処方法はありますでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • php経由のMySQL

    php経由で、サーバー上のMySQLにアクセスします。 その場合の、MySQLへの接続アカウントの処理は、どうするべきなのでしょうか? DBとのやり取りのコードは、サーバー上のphpファイルに書かれていますし、そのphpにアクセスしてデータをやり取りします。なので、MySQLへ接続する際のMySQLアカウント(ユーザー名とパスワード)が、php上に書かれています。 通常phpのコード自体は、ブラウザからは読めませんが、 アクセスできる場所にあるという時点で、セキュリティ上 問題があるのかなとも思います。 しかし、多くのサイトで、このような、webサーバー上のphpを通してMySQLにアクセスするのは、一般的な形だと思いますが、そのようなサイトでは、MySQLにアクセスするためのアカウントを、どのように管理しているのでしょうか? 当然、そのwebサイトへのログインアカウントとは別で管理されていると思うのですが・・・。 わかる方、よろしくお願いします。

    • ベストアンサー
    • PHP
  • php mysqlについて

    初心者です宜しくお願いします。 phpからデータベースを使いたいのですが(mysql)、mysql_query()関数のところで1366エラーが出ます。 半角英数ならエラーは出ません。 プログラムを貼り付けます。どなたかお願いします、説明をもっと書きたいのですが私もあまりわかってないのでどうもすみません。 今やっていることは全てローカルですwindowsを使ってます、文字コードもshift_jisです。phpもmysqlも一台のコンピュータでやっています。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>MySQLへデータを登録</title> </head> <body> DBとの連携テスト結果<br> <?php // DBに接続 if(!$con=mysql_connect("localhost","root","y3kwyuba")){ echo"connect_error"; exit; } // DBを選択 if(!mysql_select_db("test",$con)){ echo"select_db_error"; exit; } //MySQL4.1への対応 //mysql_query("SET NAMES SJIS"); この上の行のコメントをはずすとうまく動くのですが色々調べましたら、この書き方は推奨されないと書いてありました、他に対策はあるのでしょうか? $name = $_POST['nm']; $age = $_POST['age']; // フォームで送られてきたデータでINSERT文を作成 $sql = "insert into t_touroku(name,age) values('$name',$age)"; // SQLを実行 if(!$res=mysql_query($sql,$con)){ echo"query_error"; echo "エラー番号:".mysql_errno(), #エラー番号 "メッセージ:".mysql_error(); #エラーメッセージ exit; } // DBから切断 mysql_close($con); // メッセージ出力 echo"登録完了"; ?> </body> </html> 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 【PHP・MySQL】一文字だけ抜き出したい

    php・MySQL初心者です。 何とかここまで自力でやってこれたのですが、もうお手上げで…。 サンプルコードを解析し、部分的に理解しながら進んでる状態です。 やりたいことは、 「ユーザーが入力した文字列の最後の1文字だけを抜き出し、データベースに代入する」です。 ←(2) ちなみに、 「ユーザーが入力した文字列をそのまま、データベースに代入する」はできました。←(1) 参考に、(1)のソースコードの一部を書きます。 ------------------------------------------- 『main.php』 <form action="result.php" method="POST" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="<?= $file_maxsize ?>"> タイトル:<INPUT type="text" name="title" size="50"><br> コメント:<INPUT type="text" name="comment" size="50"><br> <input type="submit" value="送信"> </form><hr> ------------------------------------------- 『result.php』 $comment = @trim($_REQUEST['comment']); //※ $query = "insert into main_t (comment, last)" . " values ('$comment', '$last')"; $result = mysql_query($query); ------------------------------------------- だいたいこんな感じで(1)は出来ました。 (関係がありそうなところだけを抜き出したつもりです…) 『main.php』で出力して確認もしました。 (2)の現状の私のコードを書きます。 ------------------------------------------- 『result.php』 $x = mysql_query("select right('$title', 1)"); $last = mysql_fetch_assoc($x); ------------------------------------------- これを(1)の //※  の部分に記述してみましたが、うまくいきません。 出力するとなぜか「Ar」と出てきます…泣 『select right('いちもじ', 1)』で『じ』とちゃんと右一文字が取り出せるのをbatファイル?みたいなので確認しました。 このSQL文をPHP内で行いたいのですが、やり方がわかりません…。 (そもそも根本的に間違っているのでしょうか…) $x = mysql_query("select * from ○○ where 条件"); $last = mysql_fetch_assoc($x); みたいにfromで検索先や条件を指定して得た「配列」を取得し、表示する方法はネット検索で沢山見つかったのですが、fromやwhereを使わず、結果も配列ではなく1つだけ得られるような場合は、どうすればよいのでしょうか? わかりづらい文章ですみません; 難しい質問かとは思いますが、PHPやMySQLに詳しい方がいましたら、是非ともご教授いただけたらと思います。 よろしくお願いいたします。

  • PHP+MySQL on さくらサーバー

    さくらサーバーで、プレミアムプランで契約しています。 PHP4.3.10、MySQL 4.0.26で、以下のPHPファイルを埋め込んだphpファイルを実行すると、エラーが生じます。なんか、初歩的なことを勘違いしているのではないかと言う気がするのですが、何が問題なのでしょうか。 データベースのユーザー名は、xxx パスワードは、yyy データベース名は、xxx(一つのみ割り当て) Userというテーブルがあります。 <?php $conn = mysql_connect("mysql11.db.sakura.ne.jp","xxx","yyy"); mysql_select_db("xxx", $conn); $sql = 'SELECT * from User'; mysql_query($sql, $conn)); ?>

    • ベストアンサー
    • MySQL