現在データベースを利用したお問い合わせフォームを作成中なのですが、分からない点が2つあり質問させて頂きました。
■流れ
・お問い合わせフォームから入力されたデータをDBへ格納
・DBに格納されたデータを一覧表示させる。表示しているのは番号・名前・日付
・一覧画面の番号をクリックすると詳細画面へ飛ぶ
・詳細画面で表示しているものはお問い合わせフォームの項目・番号・日付・selectタグ
・selectタグのプルダウンから完了か未完了を選択し、「更新」ボタンを押すとDBへ変更が格納される
(1=完了、null or 0=未完了)
・画面にプルダウンで選んだ完了または未完了が表示される
■質問1.GETとPOSTを同時に取得する方法
一覧画面から番号クリックで詳細画面へ飛ぶ際にGETを使用
詳細画面でselectタグを選択したあと更新ボタンを押してページの更新をする際にはPOSTを使用
⇒更新ボタンを押すとそれまで表示していたデータが消えてしまう
GETとPOSTを同時に取得するにはREQUESTを使うと出てきたが、どのように変更すればいいのか?
また、更新ボタンを押すとデータが消えてしまうのはGETで送ったものが受け継がれていないからということだが、
$no = $_GET['no'];はどこに書くのか?(REQUESTにかえるのか?)
■質問2.updateを使用して更新情報をDBに格納する方法
DBに格納するにはinsertを使うとあったのですが、格納から表示の実行するまでの流れが不明
現在出来ているソースコード
詳細画面.php
lang
1<?php 2require_once( "DBクラス.php" ); //クラスファイルへリンク 3//一覧画面から詳細画面へデータを受け継いでいる。番号 4$no = $_GET['no']; 5// データベースクラス 6$SQL = new DB( ); 7//DBの選択 8$Query = "select * from テーブル名 where no={$no}"; 9//SQL 10$Column = $SQL->QueryEx($Query); 11//アップデート(完了か未完了かを選択し更新ボタンを押すとDBへ格納・実行・画面へ表示) 12$QueryA = "update * from テーブル名 where pull = null "; 13$QueryA = "INSERT INTO テーブル名(pull)"; 14//データベースの切断 15$SQL->Close( ); 16?> 17 18<html><body><table> 19 <tr> 20 <td>No</td> 21 <td><?php print($Column['no']); ?></td> 22 </tr> 23 <tr> 24 <td>名前</td> 25 <td><?php print($Column['name']); ?></td> 26 </tr> 27 <tr> 28 <td>連絡先メールアドレス</td> 29 <td><?php print($Column['c_mail']); ?></td> 30 </tr> 31 <tr> 32 <td>お問い合わせ内容</td> 33 </tr> 34 <tr> 35 <td>日付</td> 36 <td><?php print($Column['date']); ?></td> 37 </tr> 38 <tr> 39 <td>ステータス</td> 40 <td><?php print($Column['pull']); ?></td> 41 </tr> 42</table> 43<form action="詳細画面.php" method="POST"> //更新した後同じページを表示 44 <select name="status"> 45 <option value="1" <?php if($Column['pull']==1){echo "selected";} ?>>完了</option> 46 <option value="0" <?php if($Column['pull']==0){echo "selected";} ?>>未完了</option> 47 </select> 48<input type="submit" name="update" value="更新する"><br> 49</form> 50<?php 51if ($QueryA){ 52 print('データの更新に成功しました<br>'); 53 }else{ 54 print('データの更新に失敗しました<br>'); 55} 56?> 57 58</body></html>
DBクラス.php
lang
1<?php 2//データベースクラス 3class DB { 4 var $Connect; 5 var $Result; 6 var $Debug; 7// コンストラクタ 8 function DB( $Server='サーバ', $DbName='テーブル', $User='ユーザ', $Password='パスワード' ) { 9 $this->Connect = mysql_connect( $Server, $User, $Password ); 10 mysql_select_db( $DbName, $this->Connect ); 11 $this->Debug = FALSE; 12 } 13// 接続解除 14 function Close( ) { 15 mysql_close( $this->Connect ); 16 } 17//クエリー 18 function Query( $SqlQuery ) { 19 $ret = mysql_query( $SqlQuery,$this->Connect ); 20 if ( $this->Debug ) { 21 if ( mysql_errno() != 0 ) { 22 print "<B>" . mysql_error() . "</B><BR>"; 23 }} 24 return $ret; } 25// フェッチ 26 function Fetch( $Result ) { 27 return mysql_fetch_array( $Result ); 28 } 29// クエリーとフェッチ 30 function QueryEx( $SqlQuery='' ) { 31 if ( $SqlQuery != '' ) { 32 $this->Result = $this->Query( $SqlQuery ); 33 if ( !$this->Result ) { 34 return FALSE; 35 } 36 return $this->Fetch ( $this->Result ); 37 } 38 else { 39 return $this->Fetch ( $this->Result ); 40}}} 41?>
インデントが揃っていない、説明が下手でごめんなさい!
よろしくお願い致します
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。