- 締切済み
サーバのデータを動的に取得するスクリプト
PHPにて、テキスト欄に、生徒番号を入力すると、 サーバのDBに問い合わせして、 詳細情報を、生徒番号のテキスト欄の下に、 同様なテキスト欄に、 名前とか、性別、生年月日などが 表示されるようにするには、 どのようなコードを書けば良いのでしょうか?
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- soyokaze2020
- ベストアンサー率27% (48/177)
一番かんたんな方法は、PHPとサーバを諦め、FileMakerProでカード型データベースを作ることです。 これなら、ド素人でも3日あればできます。 どうしてもサーバを使いたいということであれば、MSアクセスでSQLを勉強すると良いです。 SQLの使い方を覚えたら、PHP経由でサーバにSQLで問合せ、目的の項目を表示します。 HTML、フォーム、CGIくらいはご存知なのですよね?
ページ遷移を伴わないアクションを実装するには、サーバー側で実行して結果だけを返すPHP言語だけは実現できません。Webブラウザ上で実行される言語であるJavaScriptとの連携が不可欠です。PHPで実行結果を「JSON」というフォーマットで出力し、JavaScript側でそれを読み取らせて処理をさせます。 (PHP側の実装例) http://pastebin.com/ShiZfTS5 以下に出力結果例を示します。実際の出力は(エスケープされるため)少し異なりますが、ここでは分かりやすく日本語をそのまま書きます。 【検索に成功したとき】 (ステータスコード: 200 OK) { "result" : { "no" : 1, "name" : "田中太郎", "gender" : "男", "birthday" : "1980-01-01" } } 【番号に対応する生徒が見つからなかったとき】 (ステータスコード: 404 Not Found) { "error" : "番号に一致する生徒は見つかりませんでした" } 【番号を指定しなかったとき】 (ステータスコード: 400 Bad Request) { "error" : "生徒番号が指定されていません" } 【データベースに不備があったとき】 (ステータスコード: 500 Internal Server Error) { "error" : "データベースでエラーが発生しました" } あとはこの結果をHTMLに適用させるわけですが…あんまりJavaScript関連は詳しくないので、参考リンクだけ貼らせていただきます。不十分であればPHPカテゴリではなくJavaScriptカテゴリで再質問していただき、その際にこの質問のURLを貼ってください。 Google検索 - 「ajax json php」 https://www.google.co.jp/search?q=ajax+json+php jQuery Manual - jQuery.ajax() http://api.jquery.com/jQuery.ajax/ あと一応PHP側でのデータベースの扱いに関してのまとめも掲載しておきます。 Qiita - PHPでデータベースに接続するときのまとめ http://qiita.com/mpyw/items/b00b72c5c95aac573b71
仕様が不明瞭すぎます。 >> PHPにて、テキスト欄に、生徒番号を入力すると、 ということなので、検索条件に用いるのは生徒番号だけかと思っていましたが >> 生徒番号、氏名、性別、生年月日の >> テキストボックスが >> すでにある場合は、 >> どのようにしたら、 >> 良いのでしょうか? 他の条件も検索に使うという事でしょうか? その場合複合条件はANDかORかどちらですか? また、完全一致でなく部分一致でもヒットさせるのですか? それとも、単に既に表示されているテキストボックスの中に 「Webブラウザのリロードを伴わずに」結果を取得して表示させたい ということでしょうか? 作りたいものを明確に言葉で表す作業ってとても大事ですよ。
訂正 $stmt->bindValue($no, PDO::PARAM_INT); ↓ $stmt->bindValue(1, $no, PDO::PARAM_INT);
補足
生徒番号、氏名、性別、生年月日の テキストボックスが すでにある場合は、 どのようにしたら、 良いのでしょうか?
【参考リンク】 Qiita - $_GET, $_POSTなどを受け取る際の処理 http://qiita.com/mpyw/items/2f9955db1c02eeef43ea Qiita - PHPでデータベースに接続するときのまとめ http://qiita.com/mpyw/items/b00b72c5c95aac573b71 【実装例】 OS: Linux系 PHPバージョン: 5.3.5以降 データベース製品: MySQL データベース名: student ユーザー名: username パスワード: password テーブル名: student id (int PRIMARY KEY) … 生徒番号 name (varchar) … 名前 gender (varchar) … 性別 birthday (date) … 生年月日 であると仮定します。 (定義通りに作れば多分コピペで動きます) http://pastebin.com/S4r9qxPV
こういうのは、データベース設計が明確になってないと回答のしようがないものです。データベースの種類、データベース名、データベースサーバーアドレス、テーブル名、テーブルに用意されたコラム名とその型、プライマリキー情報、そしてアクセスする利用者名とパスワードなどの情報を正確に記述しないとアクセスできません。 とりあえず、それらをすべて仮に考えて、ごくおおまかに整理すると、こんな感じでしょうか。(これはPDOが利用可能という前提で書いてます) $query = "select * from テーブル where 検索条件"; $result = "<table>"; try { $pdo = new PDO("データベースの指定","ユーザー名","パスワード"); $statement = $pdo->query($query); while($record = $statement->fetch(PDO::FETCH_ASSOC)){ $result .= "<tr>"; foreach($record as $column){ $result .= "<td>" . $column . "</td>"; } $result .= "</tr>"; } $result .= "</table>"; } catch(PDOException $e){ $result = "#ERR:" . $e->getMessage(); } $pdo = null; // 後は、$resultをどこかに出力する これは、検索条件に合致したレコードをすべて取得し、その全データをテーブルにまとめるものです。これのひらがなで書いてあるところを、全部あなたの利用するデータベースの設定に書き換えて下さい。で、この後に$resultを適当な場所に出力して下さい。 これ以上の細かい話は、データベース設計について詳しくわからないと回答のしようがありません。
- lv4u
- ベストアンサー率27% (1862/6715)
>>どのようなコードを書けば良いのでしょうか? そういう動作をするようなフローチャートを考えて、適切なDB設計を行い、HTML,CSS,PHP,SQLやJavascriptでロジックを組み立てて、コーディングすればいいです。 判らない部分があれば、ネットや書籍等で勉強しましょう。
補足
ブラウザのリロードを伴わずに、 結果を表示させたいです。