こんにちは。
昨日の学びの内容をまとめてなかったので、書くことにした原始人美加子です。
メルマガの登録プログラムを作っていると、登録情報をフォーム内に再表示したい事があります。(登録内容変更時とか。)
今まではフォームに入力した値をPOSTを使って表示させていたが、
登録完了済みの人が、ログイン(名前とemailで本人確認)した場合、登録情報はDBの値を表示させました。
ここで問題発生。
ログイン時に使ったフォームは【名前】と【email】のみ。
今までのように、性別や生年月日をフォームの値からPOSTで受け取ることが出来ません。そもそもDBの登録内容を変更させたいので、DBの値をとってこないといけないのですが・・・。どーやったらいいかわかりません!!
そんなこんなで、Qちゃん先生に教えてもらうことに。
登録変更ページに移動するためのボタン内容を変更。
1 2 3 4 5 |
<form name ="henkou" action ="mail_1.php" method ="post"> <td><input type ="submit" name ="henkou" value ="変更"></td> <input type="hidden" name="id" value="<?php print $id;?>"> <input type="hidden" name="syori_flg" value="1"> </form> |
上から3行め。【$id】という変数を【hidden】を使って送信。
*この時の$idの説明は→前回の記事を参考にしてね。
その下に【name=”syori_flg” value=”1″】という見慣れない名前を設定。
この【name=”syori_flg” value=”1″】がリンク先のファイルで処理設定しているので、確認してみる。
登録変更ページの設定。
上記で送信されたPOST情報を変数【$syori_flg】に代入。
まず 【if文】で「$syori_flg が1」の時と、異なるときの処理を設定。
もし「$syori_flg が1」の時はDBの値を【for文】でくり返し処理する設定をする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
$syori_flg = $_POST["syori_flg"]; //$syori_flg が1の時はDBの値を呼び出す。 if($syori_flg == 1){ $id = $_POST["id"]; $sql="SELECT * FROM `mailmaga` WHERE id= '".$id."' AND delflg = 0"; $db_director = db_select($sql); //DBの内容をfor文で表示 for ($i = 0; $i < count($db_director); $i++) { $name=$db_director[$i][1]; $kana=$db_director[$i][2]; $email=$db_director[$i][3]; // $kakunin=$db_director[$i][4]; $sex=$db_director[$i][4]; $yyyy=$db_director[$i][5]; $mm=$db_director[$i][6]; $dd=$db_director[$i][7]; } //異なる時はPOSTの値を呼び出す。 }else{ $name=$_POST["name"]; $kana=$_POST["kana"]; $email=$_POST["email"]; $kakunin=$_POST["kakunin"]; $sex=$_POST["sex"]; $yyyy=$_POST["yyyy"]; $mm=$_POST["mm"]; $dd=$_POST["dd"]; } |
これで、「$syori_flg が1」の時はDBの値を呼び出し、
そうじゃない場合は「POST」の値を呼び出す事ができる。
名前空間
クラス名、関数名などの名前が重複しないようにするための機能のこと。
『関数内』で定義している変数名はその『関数内』でのみ有効。
そのため、【関数外】からは参照できない。
その【関数外】で参照したい場合は 新たに〔変数〕に代入する必要がある。
(*『関数内』での処理結果を【関数外】で参照したい場合は、『関数内』で返り値を設定し、【関数外】ではその返り値を受け取る。)
ピンバック: 関数メモ :nl2br() ・ mb_strimwidth() ・ now() – 原始人みかこのIT奮闘記