人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

現在i-modeのフォームを制作しています。

その確認画面に「戻るボタン」をつけたいと思っています。

というのは、入力漏れがあった場合、次ページの確認画面で「入力漏れがあります」を表示し、「前のページへ戻る」ボタンをつけたいと思っています。その際「前のページの入力内容を残したまま」戻る方法を模索中です。

ようはキャッシュを残したまま戻りたいです。

cgi側での制御かと思いますが、下記のように「histry back」等色々試してみましたがやはりうまくいきませんでした。

<form>
<input type=button value='前のページに戻る' onClick='history.back();'>
</form>

javascriptが使えないのであたりまえですが・・。

初歩的な質問で申し訳ございませんが、
ご教授お願いします。

●質問者: saruz999
●カテゴリ:インターネット ウェブ制作
✍キーワード:CGI i-mode JavaScript キャッシュ ボタン
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● ヨネちゃん
●23ポイント

「戻る」ではなく「訂正する」という考え方で、訂正用フォームに変数を渡す方法が良いかと思います。最初のフォームをcgi等にしておけば、戻ってきた時に変数を取得する処理を組み込むと良いと思います。

ちょっと手間ですが、携帯用のサイトはそうしています。

◎質問者からの返答

ご回答ありがとうございます!なるほど、そういう考え方なのですね。ただ初心者なもので、具体的に、どのような指定をすればよいか教えていただければ幸いです。すみません・・・(^^;


2 ● pxb12663
●23ポイント

history.backはJavascriptなんで無理ですね。

データを残したまま戻らせるには、入力したデータを保持しておく必要があります。

一番簡単な方法はセッションを使う方法でしょう。PHPやCGIで簡単に利用できると思います。

あらかじめセッション変数として配列変数を定義しておき、フォームのページの、各項目にvalue=""でデータを代入しておきます(当然最初は空なので、何も表示されません)。

PHPの場合
<input type="text" name="data" value="<?php print $data[1]; ?>">

次に、POSTで入ってきたデータを、ページの頭で対応する配列変数に入れてやれば、普通にで戻ってもデータは残った状態になります。

◎質問者からの返答

ご回答ありがとうございます!参考にさせていただきます!


3 ● ヨネちゃん
●22ポイント

PHPの例ですが、

http://acappella.cc/test/re/

のようになります。

フォーム(index.php)のソースは、

<html>
<body>
<p>"a" を入力するとエラーになります</p>
<form name="form1" method="post" action="register.php">
 <input type="text" name="textfield" value="<?php echo $textfield;?>">
 <input type="submit" name="Submit" value="送信">
</form>
</body>
</html>

で、登録ページ(register.php)のソースは、

<html>
<body>
<?php if($textfield=="a"){?>
<p>「<?php echo $textfield?>」は正しくありませんので訂正して下さい</p>
<form name="form1" method="post" action="./">
 <input type="hidden" name="textfield" value="<?php echo $textfield;?>">
 <input type="submit" name="Submit" value="戻る">
</form>
<?php }else{echo "「".$textfield."」が入力されました。";}?>
</body>
</html>

となります。

input type="hidden" で、それぞれの変数をフォームに戻してやるところがミソです。

もしも続けてご質問がある場合は一度終了するか、回答回数を増やして下さい。

◎質問者からの返答

yoneto164様

再度ご回答ありがとうございます!

申し遅れましたが、現在組み込んでいるフォームは、PHPではなくcgi(perl)を使用しています。

CGI上でご回答いただいたプログラムを活用する方法はございますでしょうか?

※回答回数を増やしました

何度もすみません・・・


4 ● ヨネちゃん
●22ポイント

いえいえ、最初から「cgi側での制御」とおっしゃられていたにも関わらず、こちらで勝手にPHPのほうが簡単であると思ってしまい、大変ご迷惑をおかけしました。

http://acappella.cc/test/re02/

にて実装しておりますが、CGI(Perl)の場合は、編集用のCGIファイルを作ったほうが簡単かと思いましたのでご案内させて頂きます。


ファイル構成は、

index.htm
cgi-lib.pl
register.cgi(755)
edit.cgi(755)

とします。


index.htm のソースは、

<html><body>
<p>"a" を入力するとエラーになります</p>
<form method="post" action="register.cgi">
<input type="text" name="textfield">
<input type="submit" name="Submit" value="送信">
</form></body></html>

register.cgi のソースは、

#!/usr/local/bin/perl
require "cgi-lib.pl";
print "Content-type: text/html\n\n"; 
&amp;ReadParse(*form); 
if ($form{"textfield"}eq"a"){
print <<EOL; 
<html> 
<body> 
<p>「$form{"textfield"}」は正しくありませんので訂正して下さい</p>
<form name="form1" method="post" action="edit.cgi">
 <input type="hidden" name="textfield" value="$form{"textfield"}">
 <input type="submit" name="Submit" value="訂正">
</form>
</body> 
</html> 
EOL
}else{
print <<EOL; 
<html> 
<body> 
「$form{"textfield"}」が入力されました。
</body> 
</html> 
EOL
}

edit.cgi のソースは、

#!/usr/local/bin/perl
require "cgi-lib.pl";
print "Content-type: text/html\n\n"; 
&amp;ReadParse(*form); 
print <<EOL; 
<html><body>
<p>"a" を入力するとエラーになります</p>
<form method="post" action="register.cgi">
<input type="text" name="textfield" value="$form{"textfield"}">
<input type="submit" name="Submit" value="送信">
</form></body></html>
EOL

とします。


cgi-lib.pl は、

http://cgi-lib.berkeley.edu/2.18/cgi-lib.pl.txt

をダウンロードし、末尾の「.txt」を削除して下さい。


ただ、CGIの場合は、かなり様々な方法がありますので、この方法が現在ご使用されている i-mode 用のフォームに適しているかどうかは不明ですが、ご参考になれば幸いです。

更に不明な点が御座いましたら遠慮なくどうぞ。

(回等回数は増やして下さいね)

◎質問者からの返答

yoneto164様

わざわざスクリプトまで書いていただき

ありがとうございました!!

心から感謝しております!!

これを参考に、再度チャレンジしてみたいと思います。

本当にありがとございました。

もし再度つまずきましたら、また質問させてください・・・(^^;

よろしくお願いいたします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ