• ベストアンサー

phpとMySQLの連携

phpとMySQLを利用してエクセルのオートフィルタ機能を 実現させてWeb上で閲覧できるようにさせたいと考えています。 不躾ではありますがもう少しで完成できそうなのでどなたか 力を貸して下さい。よろしくお願いします。 以下に状況を記します。 自分でできた事 MySQLでのテーブルの作成とCSVデータのインポート phpに記述するhtmlタグによるフォーム作成 わからない事 (おそらくphpの配列などを使うと思われる) 抽出フォームで選択した項目のphp内のSQL文への受け渡し 抽出結果のphpへの返し方 なお全文検索ではなくあくまで複数フィールドからの"抽出"にこだわっているせいで 良いサンプルがみつかりません。 参考ページなどお心当たりの方、いらっしゃいましたらURLだけでも教えて下さい。

  • PHP
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.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";

参考URL:
http://jp.php.net/manual/ja/ref.mysql.php http://dev.mysql.com/doc/
naokisijp
質問者

補足

先ずはこんな見ず知らずの私の質問に快く回答して頂き 本当にありがとうございます。 職場の人間よりも的確かつ丁寧な回答に 見た瞬間は目から鱗でした。 自分でも毎日独学で進めていたのですが質問の内容に説明が 足りなかったことにも気付きました。すみませんでした。 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>

その他の回答 (1)

回答No.1

こんにちは。 私も初心者ですので、まだまだ人に教えられる程できませんが、ここのサイトなんかはどうでしょうか???

参考URL:
http://www.stackasterisk.jp/tech/php/php03_03.jsp
naokisijp
質問者

お礼

回答していただきありがとうございます。 まだ知らないサイトだったのでまずは熟読してみたいと思います。

関連するQ&A

  • phpとMySQLの連携2

    MySQLとphpとphpMyAdminを使ってWEBデータベースを構築したいと考えています。 当初からこちら http://www.comtechware.com/demo/members.php のようにエクセルのオートフィルタみたいに動くものを 作りたいと考えております。 MySQLにテーブルを作ってデータを入れることはできました。 しかしphpのサンプルの改造など模索しましたが 基本的なSQL文だけでは ファイルが作れずに行き詰っております。 phpとSQL文に関しては始めて1ヶ月程度です。 スキルが初級シスアドレベルの私には phpとSQLの入門書だけでは到底作れないレベルだと感じてきました。 どなたか参考になるサンプルをお持ちの方がいらっしゃいましたら、 いただけないでしょうか。 もちろんほぼ丸投げであることは重々承知してはおりますが 上記URLのようなのデータベースはレベルが相当高いのか、 高ければあきらめます。 念のため改造したソースを添付します。 判断材料に指針だけでもいただけないでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • MYSQLとPHPの連携について

    MYSQLとPHPで野球チームのデータ管理、WEBで表示 というサイトを作成しようと思っております。 そこで一連の流れについて質問があります。 例えば、打数100 安打数30 の選手がいたとし、 カラムA(打数)   カラムB(安打)   打率  100         30       .300 というのをWEBで表示する場合、 DBにデータをインポートする際、カラムAとBのみインポートし、 打率はmysql側で計算してインポートしてくれるようなことは出来るのでしょうか? 可能な場合、どのような処理を行えばいいのでしょうか? ご教授いただける方、何卒宜しくお願いします。

    • ベストアンサー
    • MySQL
  • PHPでMySQLのデータのインポート&SELECT結果のダウンロード

    こんにちは。いつもここにはお世話になっています。 ご質問が何点かあって申し訳ないのですが、簡単に作ろうとしているスクリプトを説明すると一日一回夜中にCSVかTEXT形式でデータがアップされます。それをMysqlの指定したテーブルにインポートします。その際前日のデータは全て削除します。作られたCSVファイルも削除したいんです。翌日にそのインポートされたデータを検索し必要に応じて検索されたデータをダウンロードできるようにしたいんです。ダウンロードするファイルはCSVでファイル名はテーブル名に検索した時の時間をつけた名前。これを全てPHPで行いたいんです・・・。 現在検索とSSHでログインしてのMysqlにインポートはできました。ダウンロードはまだ挑戦していないのですが、まずファイルを作ることとPHPでのデータのインポートができるのかわかりません。 質問なのですが、 1.分かりにくいのですが、上記のようなことはPHPで可能でしょうか? 2.データのインポートはPHPではどのようにしたらいいのでしょうか? 3.テーブル内のデータの削除はDELETEを使えば可能なのはわかりましたが、指定したフォルダ内のファイルを削除する方法はありますか? 4.SELECTで検索したデータが画面に表示されダウンロードできるようにファイルを作るのに $sql = "SELECT * FROM テーブル名 WHERE フィールド = \"条件\" "; $sql .= "INTO OUTFILE \"/home/パス/テキスト.CSV(or txt)\""; $res = mysql_query($sql); とスクリプトを記述しましたが出来ませんでした。 SShでmysqlにログインをして mysql> SELECT * FROM テーブル名 WHERE フィールド = '条件' -> INTO OUTFILE '/home/パス/テキスト名.txt'; とするとできたのですが、単純にこれをSELECT等と同じようにしたらダメなのでしょうか? 質問が多く申し訳ないのですが、ご教授をよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP/mySQLでインサートができません。

    PHPとmySQLを勉強中の初心者ですが、よろしくお願いします。 PHPで簡単なインサート文を作ってそれをmySQLに保存しようとしているのですが、以下のエラーが出てしまいます。 Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource プログラムは以下の通りです。HOSTNAME,USERNAME,DBPWDは別のところで定義していますが、mysql_connect, mysql_select_dbではエラーにならないので、データベースの選択まではうまく行っていると思うのですが。 $conn = mysql_connect(HOSTNAME, USERNAME, DBPWD); if(!$conn){ die("Logon Failure to mysql Server."); } $db = mysql_select_db(DBNAME, $conn); if(!$db){ die("Cannot access to the DB"); } foreach($csv_ary as $a => $b) { $query = "INSERT INTO TEST field_a VALUES $a"; if (!mysql_query($query, $db)){ echo "更新失敗: SQL=$query<br>"; } } mysql_close($conn); field_aはvarchar(10)でPrimary_key, NOT NULLの設定です。 Foreachで展開した配列の値はちゃんと長さ10の文字列が入っています。 PHP 4.3.11は mySQL 4.0.27です。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP4とMySQL5の連携での文字化け

    質問させていただきます。 以前LinuxにてMySQL3で運用していたデータベースを、 MySQLを5にVerUPしてWinXPのサーバーに移植しました。 その際、有名な不都合だとわかっていますが、 PHPで表示するDBのデータが文字化けしてしまったのです。 MySQLを3に戻して使えるなら良いのですが、 事情があり、どうしても5でなければいけないのです。 その際、PHPのソースには手を付けられません。 MySQLとphp.iniの設定だけで、 どうにか解決する事は出来ないでしょうか? PHPのソースはEUCで書かれています。 出来る限り検索をして、トライしてみたのですが どうしても解決することが出来ませんでした。 SQL文でバックアップがありますので、 データ自体は1から入れなおす事が可能です。 具体的にどこをどう一致させればいいか、 解説してくださる方がいらっしゃいましたら、 どうかお力を貸していただきたく存じます。 宜しくお願いします。

  • MySQL検索結果を配列として得るには?

    PHP+MySQLで検索フォームを作成しています。 検索結果の件数を得る事は出来たのですが、例えば仮に5件Hitした場合、5件分のPRIキー(主キー)のみを配列として得るにはどうすればよいのでしょうか? 出来れば、更に多次元配列としてPRIキーに対応するnameフィールド、mailフィールド等の値も持たせたいのですが・・ どなたか有識者の方ご覧でしたら宜しくお願いします!

    • ベストアンサー
    • PHP
  • Flash→PHP→MySQLへの値の受け渡しについて

    現在、Flashのフォームで受け取った値をPHP経由でMySQLへデータを格納するシステムを作成しています。 現在、詰まっている点とは、Flashで送信したデータがMySQLまで到達できないというところです。 少し分析してみたところ、PHPを単独でブラウザにて開くと "フィールドが取得できません。" と出力されていました。 これは、 ----- <?php $setsuzoku = mysql_connect("localhost", "*****", "*****"); if (! $setsuzoku) { die ("データベースに接続できません"); } if (! mysql_select_db ("test")) { die ("データベースが取得できません"); } mysql_query("INSERT INTO rank VALUES('".$HTTP_GET_VARS['nickname']."', ".$HTTP_GET_VARS['score']); if (!$fd) { die ("フィールドが取得できません。"); } // 処理が終わったことを知らせる print('OK'); ----- というプログラムで動かしていまして、『mysql_select_db ("test")』まで動作しているのではないかと思われます。 ですので、もしかしたらFlash以前にPHPとSQLの連携がうまくいっていないような気がするのですが…どうでしょうか? Flashからの情報を送信するシステムである以上、PHPで表示すると必ずこのような形になるのでしょうか? ちなみにMySQLには、必要なDatabaseとテーブルを作成しました。 問題の切り分けは一応してみましたが、間違っているかもしれません。何かご教授頂ければ幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • phpでMySQL内の重複文字カウント

    phpでMySQL内に格納されている文字データのうち、重複した文字データを 重複数順にランキング表示するプログラムを作成しようと思います。 例 MySQLデータが 昼 夜 昼 昼 夜 朝 であれば、 1、昼 2、夜 3、朝 とphpで表示 MySQLへのデータ登録は、普通にmysql_queryでSQL文を飛ばしてデータ挿入しています。 その際、MySQL内のデータと重複したらイベント(重複カウントを1増やすなど)を起こす方法、 もしくは、重複しているデータと、その重複数を取得できるようなphp関数、SQL文はないものでしょうか? データ数自体は100程度のものなので、全データをphpで配列に格納してから、 配列内を捜査でもよいのですが・・・ 初歩的かつ限定的な質問ですが、どうかご回答お願いします。

    • ベストアンサー
    • PHP
  • phpからmysqlの操作について

    phpでmysqlを操作してブラウザー上へレコードの全データをテーブル化して表示したとします。 表示されているレコードから任意のレコードを選択し削除するにはどうすればよいでしょうか。 削除のsqlは解りますが、ブラウザー上に表示されているデータを選択して内容をphpへ送信する方法がわかりません。 フィールドごとにチェックボックスを出力してvalue にフィールドの値をセットしておきsubmit ボタンでvalue値を送信するような方法でしょうか。 Visual Basic などではグッリドコントロールの何処が選択されているか取得できるので簡単ですが, php とブラウザーでそんなことができるとは思えません。 よろしくお願いいたします。 php も sql もWEB上にあります。

    • ベストアンサー
    • PHP
  • 【php MySQL】データが取り出せない

    こんにちは。 MySQLのデータをphpで管理するページを作っていますが、壁にぶつかってしまいました。 データベースのあるフィールドに、「あああ」「いいい」「ううう」というようにいろんな言葉が登録されています。 これらを削除・追加するために、phpで取り出して、チェックボックスでリストアップします。 リストにない言葉は新たに登録できるように、テキストフィールドも用意しています。 □あああ □いいい □ううう 新規:[   ](テキストフィールド) というふうにです。 このフォームはちゃんと機能していまして、追加した言葉はデータベースに記録されているのですが、なぜかフォームにリストアップされないのです。 例えば、    □あああ □いいい □ううう 新規:[   ] で、新規のところに「かかか」と入れて送信すると、    □あああ □いいい □ううう □かかか 新規:[   ] となってほしいわけですけど、    □あああ □いいい □ううう □ 新規:[   ] となってしまうのです。 フォームを使って送信した言葉が、データベースに記録されていながら、取り出せないというのは、何が原因だと考えられるでしょうか? 何かすごく単純なことのような気がするので、ソースは載せないでおきます。 ご教示をよろしくお願いいたします。

    • ベストアンサー
    • PHP