• ベストアンサー

hiddenがうまく働かない

CGI初心者です。 自分で掲示板を作ってみようとして書いてみたんですが、送信した時にhiddenで数値を持たせようとするんですが、受け取れません。なにか宣言や、処理が必要なのでしょうか。 ちなみに、 <input type = hidden name = mode value = "write"> ・・・ if(FORM{'mode'} ep 'write'){ ・・・ という感じにしています。

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

  • ベストアンサー
  • natural
  • ベストアンサー率37% (419/1115)
回答No.3

>サブミット後はプログラムの初めからまた読み直すんではないんでしょうか? フォームの処理とサブミット後の処理はスクリプトを分けることも可能なので確認しました。 それではフォームからの値の取り出し部分を見たいのですが、ReadParse後の処理を補足欄に記載して頂けますか?

zeyper
質問者

お礼

度々すいません。 >それではフォームからの値の取り出し部分を見たいのですが、ReadParse後の処理を補足欄に記載して頂けますか? と回答をもらい、記載しようとしてまとめていたところ、"ReadParse後の処理"と言うところで(私はReadParseがどういう処理をすくかが良く分からなかったので自分でデコードを書いていたんですが、デコードにエラーチェックを連動してつけていたため、最初のフォームの表示で何もデータが無いとエラーが出てしまうので、送信した後からデコードをするようにしていました。)ハッとなって、デコードを先に持ってきたらきちんと動いてくれました。 本当に初歩的なミスですいません。大変親身になって答えていただいて助かりました。ありがとうございました。

その他の回答 (3)

  • callhiro
  • ベストアンサー率35% (54/152)
回答No.4

hiddenではない変数が$FORM{'**'}という形で受け取れているのであれば、 hiddenでも同様に受け取れると思います。 確認して欲しいのが、 submitボタンを設置している<form>と</form>の間に <input type = hidden name = mode value = "write"> を書いていますでしょうか? ちなみに$FORM{'mode'}をプリントしてみたら値は何も入ってなかったですか? if(FORM{'mode'} ep 'write'){ ↑ "$"がぬけているのもありますが、"eq"であるはずのところが"ep"になっていますよ。 それが原因の可能性もありますので注意してくださいな。

zeyper
質問者

お礼

丁寧な回答ありがとうございます。 "$"や"eq"のところは、スクリプトの方ではきちんとなってました。 ("$"はスクリプトを書いていてもしょっちゅう抜けてエラーを出してます(笑)) "<input type = hidden name = mode value = "write"> "の方も、正しい場所に置いてありました。

  • natural
  • ベストアンサー率37% (419/1115)
回答No.2

>$FORM{'mode'}という呼び出しが悪いんでしょうか? $FORM{'mode'}は合っています。(但し質問文の方は「$」が抜けてますね) スクリプト全体が見えないので何とも言えないのですが、hiddenで指定した項目はフォームのサブミット後に参照可能となりますので、上記の参照はサブミット後に呼び出される処理の中で行われなければなりません。 まずはこの辺りからチェックしてみてください。

zeyper
質問者

補足

丁寧な回答ありがとうございます。 サブミット後に呼び出される処理の後と書いてありますが、サブミット後はプログラムの初めからまた読み直すんではないんでしょうか? 私はそのつもりで書いているのですが・・・。

  • natural
  • ベストアンサー率37% (419/1115)
回答No.1

<input type="hidden" name="mode" value="write"> という風に書き換えてみてください。 (空白にも注意!)

zeyper
質問者

補足

回答ありがとうございます。やってみましたが、相変わらず動きません。 $FORM{'mode'}という呼び出しが悪いんでしょうか? hiddenを使うと何処に数値が返ってくるのか良く分からないんで、出来たら教えて欲しいんですが。