- ベストアンサー
phpとMySQLの連携
phpとMySQLを利用してエクセルのオートフィルタ機能を 実現させてWeb上で閲覧できるようにさせたいと考えています。 不躾ではありますがもう少しで完成できそうなのでどなたか 力を貸して下さい。よろしくお願いします。 以下に状況を記します。 自分でできた事 MySQLでのテーブルの作成とCSVデータのインポート phpに記述するhtmlタグによるフォーム作成 わからない事 (おそらくphpの配列などを使うと思われる) 抽出フォームで選択した項目のphp内のSQL文への受け渡し 抽出結果のphpへの返し方 なお全文検索ではなくあくまで複数フィールドからの"抽出"にこだわっているせいで 良いサンプルがみつかりません。 参考ページなどお心当たりの方、いらっしゃいましたらURLだけでも教えて下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>抽出フォームで選択した項目のphp内のSQ L文への受け渡し form method="post" だとして postデータを$_POST['komokumei']で取得するところはよいのですよね phpからmysqlへの接続もできていますか?No1の方の紹介サイトをご参考ください。 それで、どういった条件文が書きたいのでしょうか? まずは、mysqlのドキュメントを十分読みましょう。 http://dev.mysql.com/doc/ ここで日本語ドキュメントもダウンロード出来ます。 >なお全文検索ではなくあくまで複数フィールド からの"抽出"にこだわっているせいで 全文検索の意味がつかみにくいのですが、複数フィールドに条件設定したいのでしょうか? tableのフィールド1を $_POST['komokumei1'] フィールド1で一致させたい文字列を $_POST['komoku1'] tableのフィールド2を $_POST['komokumei2'] フィールド2で文字列を含むものを検索したい $_POST['komoku2'] $query = "select * from table where " .$_POST['komokumei1']. " = \"" .$_POST['komoku1'] . "\" AND " .$_POST['komokumei2']. " LIKE \"%" . $_POST['komoku2'] . "\"%"; 検索文字列が日本語sjisの場合や検索文字列に「"'\」などを含む時の問題は、私の手にあまるので、実際に問題になるようなら、補足で質問してください それとも、表示フィールドを制限したいのでしょうか? $query = "select field1,field2 from table where " .$_POST['komokumei1']. " = \"" .$_POST['komoku1'] . "\""; うまくいかなかったsql文と、抽出条件がどんなものなのかを補足すると さらなる回答が付きやすくなるでしょう。 >抽出結果のphpへの返し方 考え方が逆のような気がします。 phpの方から結果を取りにいくと考えるとよいかと思います。 phpの mysql関数マニュアル http://jp.php.net/manual/ja/ref.mysql.php phpにて $queryのsql文で結果を受け取るには以下のようにするといいかと思います。 (半分は上記サイトからのコピー(^^;) $result = mysql_query($query); // HTMLに結果を出力する print "<table border='1'>\n\t<tr>"; $cols = mysql_num_fields($result); for($i=0; $i<$cols ; $i++){ print "\t\t<th>" . mysql_field_name($result, $i) . "</th>\n"; } print "\t</tr>\n"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { // while ($row = mysql_fetch_assoc($result)) { print "\t<tr>\n"; foreach ($line as $col_value) { print "\t\t<td>$col_value</td>\n"; } print "\t</tr>\n"; } print "</table>\n";
その他の回答 (1)
- amountainblast
- ベストアンサー率33% (63/186)
こんにちは。 私も初心者ですので、まだまだ人に教えられる程できませんが、ここのサイトなんかはどうでしょうか???
お礼
回答していただきありがとうございます。 まだ知らないサイトだったのでまずは熟読してみたいと思います。
補足
先ずはこんな見ず知らずの私の質問に快く回答して頂き 本当にありがとうございます。 職場の人間よりも的確かつ丁寧な回答に 見た瞬間は目から鱗でした。 自分でも毎日独学で進めていたのですが質問の内容に説明が 足りなかったことにも気付きました。すみませんでした。 hrm_mmmさんの推測どおり困っているのは >$query = "select * from table where " .$_POST['komokumei1']. " = \"" .$_POST['komoku1'] . "\" AND " .$_POST['komokumei2']. " LIKE \"%" . $_POST['komoku2'] . "\"%"; の部分です。 自己分析では配列や変数と「"」「\」からむと混乱しているように思えます。 自分で改造したソースではおかしな動きをします。 よろしければご覧頂いた上でご指摘頂けますでしょうか。 お願い致します。 ----form.html---------- <HTML> <HEAD> <TITLE>メンバー抽出</TITLE> </HEAD> <BODY> <FONT SIZE=5 COLOR=GREEN>メンバー抽出</FONT> <HR> <FORM ACTION="form.php" METHOD="POST"> <P> <INPUT TYPE="checkbox" NAME="keitai" VALUE="1">携帯アドレスの場合チェックする <P> <B>会費負担</B> <SELECT NAME="futan"> <OPTION VALUE="100">全額負担</OPTION> <OPTION VALUE="50">半額負担</OPTION> <OPTION VALUE="0">無料</OPTION> </SELECT> <P> <INPUT TYPE="submit" VALUE="抽出"> <INPUT TYPE="reset" VALUE="クリア"> </FORM> </BODY> </HTML> ----form.php----------- <?php //フォーム送信内容を取得 $keitai = $_POST['keitai']; $futan = $_POST['futan']; //MySQLに接続 if( ! $conn = mysql_connect( 'localhost', 'card', 'UQbVGauchEoQ') ){ die( 'MySQL接続失敗' ); } //データベースの選択 mysql_select_db( 'card', $conn ); //ヘッダ出力をします header('Content-Type: text/html; charset=euc-jp'); ?> <HTML> <HEAD> <TITLE>mysql関数テスト1</TITLE> </HEAD> <BODY> <?php //SQL発行 ここで $sql = $rs = mysql_query( "select * from member where futan = ${futan} && keitai = $keitai ", $conn ); //<TABLE>ヘッダ echo "<table border=1>"; echo "<tr><th>email</th><th>keitai</th><th>name</th><th>futan</th></tr>"; //1件ずつ取り出すループ while( $rec = mysql_fetch_array( $rs, MYSQL_ASSOC ) ){ echo "<tr>"; echo "<td>" . $rec['email'] . "</td>"; echo "<td>" . $rec['keitai'] . "</td>"; echo "<td>" . $rec['name'] . "</td>"; echo "<td>" . $rec['futan'] . "</td>"; echo "</tr>"; } //<TABLE>フッタ echo "</table>"; //結果セットの解放 //mysql_free_result( $rs ); //切断 mysql_close($conn); ?> </BODY> </HTML>