• ベストアンサー

入力・確認・登録に関して

いつもお世話になっております。 下記サイトにあるサンプルを用いて、入力→確認→登録。といったコードを書いているのですが、textareaを設置する場合、どのようにしたら宜しいのでしょうか? 知識が乏しい中、試行錯誤を繰り返しているのですが、自ら設置したtextareaのデータの受渡しが思うようにいきません。 お手数お掛けいたしますが、ご教授頂ければ幸いです。 http://php.dori-mu.net/session.html

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

  • ベストアンサー
  • Ikonos00
  • ベストアンサー率28% (86/302)
回答No.6

あ、原因分かりました。 echo "<textarea name=\"○○\" cols=\"35\" rows=\"12\">$naiyou_txt</textarea><br>"; の、nameの値(○○)と define( 'NAIYOU', "○○"); が、一致しないと正常に動作しません。 他のタイトルとかを見ていただけると、一致しているのが確認できると思います。 FORMから送ったものが、name="○○"だったとすると、 受け取る時は、$_POST['○○']で受け取るので。 おそらく、これで上手くいくはず…。

sadacha
質問者

お礼

Ikonos00様 こんばんは。何度も何度もすみません。。 初心者ながらに、「あれ?これがそうかな?」などと思っていたところ、Ikonos00様に同じところを指摘していただいたので安心いたしました。 (ホント初心者なので なかなか確信を得ずにいる状態でした。) 今後、似たような質問をするかと思いますが、今後とも宜しくお願い致します。有難う御座いました!

その他の回答 (5)

  • Ikonos00
  • ベストアンサー率28% (86/302)
回答No.5

確認です。 私がNo.4を回答してから、修正した部分を教えてください。 「_txt」を外して define( 'NAIYOU', "my_naiyou"); に、戻しただけですか? 他の部分も修正しましたか?

  • Ikonos00
  • ベストアンサー率28% (86/302)
回答No.4

>違う書き方になるのでしょうか?… すみません。「_txt」は必要ありません。 私個人のくせとして、同じものが入るときは、 変数などは統一するので、「_txt」をつけてしまいました…。 あと、他にも間違いがありました。 2.input.phpの変更 >if(isset($_SESSION[NAIYOU])) $naiyou_txt = $_SESSION[NAIYOU]; >を >if(isset($_SESSION[NAIYOU])) $my_naiyou_txt = $_SESSION[NAIYOU]; >に変更。 こっち(↑)を修正ではなく。 echo "<textarea name=\"my_naiyou_txt\" cols=\"35\" rows=\"12\">$my_naiyou_txt</textarea><br>"; を echo "<textarea name=\"my_naiyou_txt\" cols=\"35\" rows=\"12\">$naiyou_txt</textarea><br>"; が正しいです。 経験者なのに…。 ざっと目を通しただけで修正したら駄目ですね。 もっとよく読むべきでした。 申し訳ないです。

sadacha
質問者

お礼

Ikonos00様 こんにちは。ご親切なアドバイスを有難う御座います。「すみません」…って謝らないで下さい。私自身、理解をしたいが故の質問だったので…。 が、しかし、只今確認をさせて頂いたところ、「_txt」を外すと正常に動かないようです。 confirm.phpに移動した際、データが受け渡されないようなのです。お忙しい中お手数お掛けいたしますが、引き続きご指導頂ければ幸いです。宜しくお願い致します。

  • Ikonos00
  • ベストアンサー率28% (86/302)
回答No.3

今の状態では、textareaの値は受け取りませんね。 修正箇所を以下に示します。 動作確認は行っていませんので動かないかもしれません。 一応怪しいところは、こんなところくらいに考えてください。 1.definition.phpの変更 my_naiyouをmy_naiyou_txtに変更 2.input.phpの変更 if(isset($_SESSION[NAIYOU])) $naiyou_txt = $_SESSION[NAIYOU]; を if(isset($_SESSION[NAIYOU])) $my_naiyou_txt = $_SESSION[NAIYOU]; に変更。 3.confirm.phpの変更 $bConfirm = array(TITLE=>TRUE, URL=>TRUE, MAIL=>TRUE); を $bConfirm = array(TITLE=>TRUE, URL=>TRUE, MAIL=>TRUE, NAIYOU=>TRUE); に変更。 $bConfirm[MAIL] = containsChar( $_POST[MAIL] ); の下に $bConfirm[NAIYOU] = containsChar( $_POST[NAIYOU] ); を追加。 echo "アドレス : ".htmlspecialchars($_POST[MAIL], ENT_QUOTES)."<br>"; の下に echo "アドレス : ".htmlspecialchars($_POST[NAIYOU], ENT_QUOTES)."<br>"; を追加。 echo "メール : "; if(!$bConfirm[MAIL]) echo "<font color=\"red\">メールの入力がありません</font><br>"; else { echo $_POST[MAIL]."<br>"; } の下に echo "内容 : "; if(!$bConfirm[NAIYOU]) echo "<font color=\"red\">内容の入力がありません</font><br>"; else { echo $_POST[NAIYOU]."<br>"; } $_SESSION[MAIL] = $_POST[MAIL]; の下に $_SESSION[NAIYOU] = $_POST[NAIYOU]; を追加。

sadacha
質問者

お礼

Ikonos00様 早速のご丁寧なアドバイスを有難う御座います。 只今、確認したところ正常に動作する事を確認いたしました!ありがとう御座います! ところで、definition.phpの変更ですが、他のもの(始めから設置してある)と同じように追加した訳ですが、何故、追加したものだけ他のとは違う書き方になるのでしょうか?…追加したものだけ、「_txt」が付いている。 お手数お掛けいたしますがご教授いただけると有難いです。

  • MrYoYoYo
  • ベストアンサー率33% (38/115)
回答No.2

フォームの値が受け取れない場合は、単純な記述ミスであることが多いです。 <textarea name=""></textarea> のname部分は、PHP側で受け取ろうとしているものと同じですか? <form action="" method="" /> の部分のファイル名、送信方法は大丈夫ですか? <input type="submit" value="" /> submit のつづりはまちがっていませんか? 以上を確認して、問題がなければ、 var_dump($_GET); としてみましょう。(POSTならば$_POST)に変更してください。 ここで、textareaで入力した情報がなければ、HTMLもしくはサーバ側の問題でしょう。 表示されていれば、ご自身で記述されたコードのどこかに間違いがあります。

sadacha
質問者

お礼

MrYOYOYO様 はじめまして、こんばんは。ご丁寧なアドバイスを有難う御座います。 以下、サイトにあるファイルなのですが、textareaだけをテスト的に追加し、動作確認などを試みている状況なのですが、textareaの設定(設置?)がよく判らず、textareaのみがデータの受渡しが出来ない状態となっています。引き続きご指導頂ければ幸いです。 ●definition.php <?php define( 'TITLE', "my_title"); define( 'NAIYOU', "my_naiyou"); define( 'URL', 'my_url' ); define( 'MAIL', 'my_mail_address'); ?>

sadacha
質問者

補足

補足から失礼します。以下、確認用スクリプトです。 ●confirm.php <html> <body> <?php //confirm.php session_start();//defineとの関係 require_once "definition.php"; //これにFALSEが入力されたら、アウト $bConfirm = array(TITLE=>TRUE, URL=>TRUE, MAIL=>TRUE); $nextPage = TRUE;//FALSE $bConfirm[TITLE] = containsChar( $_POST[TITLE] );// 下の方に自分で定義した関数 文字がはいっているか return "true" or "false" $bConfirm[URL] = containsChar( $_POST[URL] ); $bConfirm[MAIL] = containsChar( $_POST[MAIL] ); //フォームすべてに文字がはいっているか確認 foreach($bConfirm as $value){ if(!$value){ $nextPage = FALSE; } } //入っていたら if($nextPage){ echo "以下の内容でよろしいでしょうか?<br><br>"; echo "タイトル : ".htmlspecialchars($_POST[TITLE], ENT_QUOTES)."<br>"; echo "URL : ".htmlspecialchars($_POST[URL], ENT_QUOTES)."<br>"; echo "アドレス : ".htmlspecialchars($_POST[MAIL], ENT_QUOTES)."<br>"; echo "<br><b><a href=\"regist.php\">確認した上で登録<a></b>"; } //入っていなかったら else{ echo "<br><font color=\"red\">入力の足りない箇所があります。</font><br><br>"; echo "タイトル : "; if(!$bConfirm[TITLE]) echo "<font color=\"red\">タイトルの入力がありません</font><br>"; else { echo $_POST[TITLE]."<br>"; } echo "URL : "; if(!$bConfirm[URL]) echo "<font color=\"red\">URLの入力がありません</font><br>"; else { echo $_POST[URL]."<br>"; } echo "メール : "; if(!$bConfirm[MAIL]) echo "<font color=\"red\">メールの入力がありません</font><br>"; else { echo $_POST[MAIL]."<br>"; } //sessoin情報を使う echo "<br><a href=\"input.php\">戻る</a>"; } //最後に入っていなくても入っていてもセッションに入れる…1 $_SESSION[URL] = $_POST[URL]; $_SESSION[TITLE] = $_POST[TITLE]; $_SESSION[MAIL] = $_POST[MAIL]; //文字が変数に入っているか判定する関数 function containsChar( $sPost ){ $bConfirm = TRUE; //$choppedChars = chop($sPost); if(!(isset($sPost)) || $sPost == "") { $bConfirm = FALSE; //スペース等を抜くchop関数 } return $bConfirm; } ?> </body> </html> php

  • Ikonos00
  • ベストアンサー率28% (86/302)
回答No.1

質問とURLの内容だけでは、ちょっと情報が足りないです。 今の状態は、 textareaをどのように設置して、 どのようにして受け取ろうとしているのですか。

sadacha
質問者

お礼

Ikonos00様 はじめまして、こんばんは。早速のお返事ありがとう御座います。 コードを記述すると文字数制限に引っかかってしまうかと思ったもので…説明不足で申し訳ありませんでした。 下記は質問にて掲載したサイトにあるinput.phpにtextarea を付け加えただけのものですが、textarea へ入力したデータが上手く受け渡されずにいる状態です。 サイトからDL出来る付随した他のファイルも、追加設定をしては居るものの、初めて遭遇するコードに頭を悩ませております。引き続きご指導頂ければ幸いです。 <html> <body> <b>sessionを利用した登録</b> <br><br> <form method = "post" action = "confirm.php"> <?php session_start(); require_once "definition.php"; $title_txt = ""; $naiyou_txt = ""; $url_txt = ""; $mail_txt = ""; if(isset($_SESSION[TITLE])) $title_txt = $_SESSION[TITLE]; if(isset($_SESSION[NAIYOU])) $naiyou_txt = $_SESSION[NAIYOU]; if(isset($_SESSION[URL])) $url_txt = $_SESSION[URL]; if(isset($_SESSION[MAIL])) $mail_txt = $_SESSION[MAIL]; echo "タイトル<br><input type = \"text\" name = \"my_title\" value=\"$title_txt\"><br>"; echo "<textarea name=\"my_naiyou_txt\" cols=\"35\" rows=\"12\">$my_naiyou_txt</textarea><br>"; echo "URL<br><input type = \"text\" name = \"my_url\" value=\"$url_txt\"><br>"; echo "メールアドレス<br><input type = \"text\" name = \"my_mail_address\" value=\"$mail_txt\"><br><br><br>"; echo "<input type =\"submit\" value=\"登録\"><br>"; ?> </form> </body> </html>

関連するQ&A

専門家に質問してみよう