- ベストアンサー
掲示板に投稿編集機能を追加する方法
- 掲示板に投稿編集機能を追加するための方法について説明します。
- 修正画面を表示すると記事が見当たらないと表示される問題に関して、修正対象のデータが見つからなかった場合のエラー処理を追加する必要があります。
- また、修正画面にそれぞれの箇所が反映されない問題についても修正が必要です。HTMLのフォーム部分で、各入力項目のvalue属性に変数を設定することで修正箇所が表示されるようになります。
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- 掲示板に投稿編集機能付けたい
質問の補足ができないので、新たに掲載します。 掲示板に投稿編集機能が無いので、付けようと奮闘しています。 書き込み時に削除PASSを入力するようになっています。 それを利用して投稿編集機能を付けたいです。 以下がユーザーの記事削除処理の部分ですが、 elsif ($in{'action'} eq 'usr_kill') { &kill_action; }##←始めの部分 記事表示部分↓↓↓ <FORM method="$method" action="$cgifile"> <INPUT type="hidden" name="action" value="usr_kill"> <INPUT type="hidden" name="sex" value="$in{'sex'}"> <BR> <TABLE cellspacing="0" width="200" border="0"> <TR align="left"><TD nowrap colspan="3"><B>【記事削除フォーム】</B></TD></TR> <TR><td nowrap align="right">記事No/</TD> <TD><input size="4" type="text" name="number"></TD></TR> <TR><td nowrap align="right">パスワード/</TD> <TD nowrap><INPUT size="10" type="password" name="pass"> <INPUT type="submit" value="削除"></TD></TR> </TABLE></FORM> 下の方にあるルーチン↓↓↓ ###+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ## SUB >>> ユーザー記事削除処理 ###+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sub kill_action { if ($in{'number'} eq "") { &error("記事Noを入力してください"); } elsif ($in{'number'} =~ /\D/) { &error("記事Noは半角数字で入力してください"); } elsif ($in{'pass'} eq "") { &error("パスワードを入力してください"); } &lock1; if ($in{'sex'} eq '0') { &mens_read("lock2"); } elsif ($in{'sex'} eq '1') { &ladys_read("lock2"); } #--パスワードを暗号化--# $crypted = crypt($in{'pass'}, "xx"); #--削除対象データが見つかるまでループ--# $flag1 = 0; $flag2 = 0; foreach $line (@DATA) { ($no,$name,$mail,$age,$state,$comment,$hoop,$risou,$max,$date,$H_A,$m_pass,$looks) = split(/\,/, $line); if ($in{'number'} eq "$no") { $flag1 = 1; chomp $m_pass; if ($crypted eq "$m_pass" || $in{'pass'} eq "$master_key") { $flag2 = 1; $line =~ s/.*\n//; last; } else { &lock2; &error("パスワードが一致しません"); } } } #--削除対象Noが見つからなかった場合のエラー処理ー--# unless ($flag1) { &lock2; &error("記事No$in{'number'}が見つかりません"); } if ($flag2) { if ($in{'sex'} eq "0") { if (!open(OUT,">$mensfile")) { &lock2; &error("$mensfile ファイルオープンエラー"); } print OUT @DATA; close(OUT); } elsif ($in{'sex'} eq "1") { if (!open(OUT,">$ladysfile")) { &lock2; &error("$ladysfile ファイルオープンエラー"); } print OUT @DATA; close(OUT); } &lock2; #--削除に成功したら完了メッセージを表示--# &html_head; &title; print <<"HERE"; <CENTER><TABLE width="560"> <TR><TD bgcolor="$top_t_bgc"><CENTER> <FONT color="$top_t_color"><B>削除完了!</B></FONT> </CENTER></TD></TR></TABLE><BR><BR> <FORM method="post" action="$cgifile"> <TABLE cellspacing="0" cellpadding="5" border="1"> <TR><TD nowrap bgcolor="#ffffd9" align="center"> <B>記事No$in{'number'}を削除しました。</B><BR><BR> <INPUT type="submit" value=" TOP "></TD></TR> </TABLE></FORM> HERE &html_footer; exit; } exit; } これに対しての回答が下記の一件ですが、 ↓↓↓ 削除と再登録が簡単に出来れば修正と同じことだと思いますので、 elsif ($in{'action'} eq 'edit') { &edit; } を追加したらeditの内容は kill_actionの削除処理を行った後に削除したデータを基にvalueやselectedを使って入力済みの状態にしたin_dataの処理を入れたらOKだと思います ~とのことですが、 プルダウンで選択させているところなどはどうすればいいのでしょう。 あらたにeditのルーチンを作ったとして、 どこからどこを追加して、何を記述してどうやって作れば良いか分かりません。 ズバッと回答して下さる勇者様はおりませんか?
- ベストアンサー
- CGI
- 掲示板に投稿編集機能付けたい
jewel http://www.groo-web.com/jewel.html こちらの掲示板を独学でカスタマイズして使ってますが、 投稿編集機能が無いので、付けようと奮闘しています。 書き込み時にデフォルトで削除PASSを入力するようになっています。 それを利用して投稿編集機能を付けたいのですが、 ご教授願います。 以下がユーザーの記事削除処理の部分ですが、 elsif ($in{'action'} eq 'usr_kill') { &kill_action; }##←始めの部分 記事表示部分↓↓↓ <FORM method="$method" action="$cgifile"> <INPUT type="hidden" name="action" value="usr_kill"> <INPUT type="hidden" name="sex" value="$in{'sex'}"> <BR> <TABLE cellspacing="0" width="200" border="0"> <TR align="left"><TD nowrap colspan="3"><B>【記事削除フォーム】</B></TD></TR> <TR><td nowrap align="right">記事No/</TD> <TD><input size="4" type="text" name="number"></TD></TR> <TR><td nowrap align="right">パスワード/</TD> <TD nowrap><INPUT size="10" type="password" name="pass"> <INPUT type="submit" value="削除"></TD></TR> </TABLE></FORM> 下の方にあるルーチン↓↓↓ ###+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ## SUB >>> ユーザー記事削除処理 ###+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sub kill_action { if ($in{'number'} eq "") { &error("記事Noを入力してください"); } elsif ($in{'number'} =~ /\D/) { &error("記事Noは半角数字で入力してください"); } elsif ($in{'pass'} eq "") { &error("パスワードを入力してください"); } &lock1; if ($in{'sex'} eq '0') { &mens_read("lock2"); } elsif ($in{'sex'} eq '1') { &ladys_read("lock2"); } #--パスワードを暗号化--# $crypted = crypt($in{'pass'}, "xx"); #--削除対象データが見つかるまでループ--# $flag1 = 0; $flag2 = 0; foreach $line (@DATA) { ($no,$name,$mail,$age,$state,$comment,$hoop,$risou,$max,$date,$H_A,$m_pass,$looks) = split(/\,/, $line); if ($in{'number'} eq "$no") { $flag1 = 1; chomp $m_pass; if ($crypted eq "$m_pass" || $in{'pass'} eq "$master_key") { $flag2 = 1; $line =~ s/.*\n//; last; } else { &lock2; &error("パスワードが一致しません"); } } } #--削除対象Noが見つからなかった場合のエラー処理ー--# unless ($flag1) { &lock2; &error("記事No$in{'number'}が見つかりません"); } if ($flag2) { if ($in{'sex'} eq "0") { if (!open(OUT,">$mensfile")) { &lock2; &error("$mensfile ファイルオープンエラー"); } print OUT @DATA; close(OUT); } elsif ($in{'sex'} eq "1") { if (!open(OUT,">$ladysfile")) { &lock2; &error("$ladysfile ファイルオープンエラー"); } print OUT @DATA; close(OUT); } &lock2; #--削除に成功したら完了メッセージを表示--# &html_head; &title; print <<"HERE"; <CENTER><TABLE width="560"> <TR><TD bgcolor="$top_t_bgc"><CENTER> <FONT color="$top_t_color"><B>削除完了!</B></FONT> </CENTER></TD></TR></TABLE><BR><BR> <FORM method="post" action="$cgifile"> <TABLE cellspacing="0" cellpadding="5" border="1"> <TR><TD nowrap bgcolor="#ffffd9" align="center"> <B>記事No$in{'number'}を削除しました。</B><BR><BR> <INPUT type="submit" value=" TOP "></TD></TR> </TABLE></FORM> HERE &html_footer; exit; } exit; } これに以下を追加して作ることは可能なんでしょうか? elsif ($in{'action'} eq 'edit') { &edit; } または elsif ($in{'action'} eq 'edit2') { &edit2; } なんとかできるように教えて下さい。お願いします。
- ベストアンサー
- CGI
- valign=topが機能しません
CGIファイル内のテーブルのtdにvalign=topを記述しましたが、テキストが上にきてくれません。 ソースは以下です。「メッセージ」の文字が上にくるようにするにはどうすれがいいか教えてください。 よろしくお願いします。 <center> <TABLE BORDER=0 CELLPADDING=10 CELLSPACING=10> <tr> <td align=right nowrap><font size=2>お名前</font></td> <td align=left> <input type="text" name="name" size="30" maxlength="100" class=textarea> </td> </tr> <tr> <td align=right nowrap><font size=2>タイトル</font></td> <td align=left><input type="text" name="title" size="50" maxlength="200" class=textarea></td> </tr> <tr> <td valign=top align=right nowrap ><font size=2>メッセージ</font></td> <td align=left><textarea name="msg" cols="50" rows="7" class=textarea></textarea></td> </tr> <tr> <td align=right nowrap><font size=2>パスワード</font></td> <td align=left><input type="password" name="pass" size="16" maxlength="200" class=textarea value=$cpass></td> </tr> <tr> <td colspan=2> <hr size=1 noshade> </td> </tr> <tr> <td align=center colspan=2> <div align="center"><input type="submit" value="投稿する" class=input2 onClick="writeCookie()"></div></td> </tr></form> </table> </center>
- 締切済み
- HTML
- 掲示板スパム対策(改造)1行追加でエラー
書き込み文字が変換されるタイプの掲示板です。 1行追加、アップした後に、サーバーのエラーが出るのですが、 どこが悪いのかわかりません。 #HTMLドキュメントのヘッダー宣言 ~省略~ #投稿フォームを作成 ~省略~ print "<td align=center>名前</td>\n"; print "<td><input type=text size=34 name=name value=" . $COOKIE{'name'} . "></td>\n"; print "</tr>\n"; print "<tr>\n"; print "<td align=center>E-mail</td>\n"; print "<td><input type=text size=34 name=email value=" . $COOKIE{'email'} . "></td>\n"; print "</tr>\n"; print "<tr>\n"; print "<td align=center>見出し</td>\n"; #返信の場合は、見出しを挿入 if ($FORM{'flags'} eq 'return') { print "<td><input type=text size=34 name=subject value=RE:" . $FORM{'subject'} . "></td>\n"; } else { print "<td><input type=text size=34 name=subject></td>\n"; } print "</tr>\n"; print "<tr>\n"; print "<td align=center>内容</td>\n"; print "<td align=center><textarea name=comment rows=3 cols=34></textarea><br>\n"; if ($FORM{'flags'} eq 'return') { print "<input type=submit value=$FORM{'subject'}へ返信>\n"; print "<input type=hidden name=ress value=$FORM{'code'}>\n"; } else { print "<input type=submit value=新規投稿>\n"; } print "ガードコード<input type=text name="guard" size=8>\n"; #スパム対策用で追加●●●●●●●●●● print "</form>\n"; (TっT)
- ベストアンサー
- CGI
- メールフォームについて
この中にどのようなHTMLを書けば自分のPCにメールが届く ようになりますか?よろしくお願いします。 <h2>■MAIL FORM</h2> <div class="text"> <form><table><tr><td width="100" align=right> NAME</td><td align=right><input type="text" name="Name" size="34"></td></tr><tr><td width="100" align=right> MAIL</td><td align=right><input type="text" name="Mail" size="34"></td></tr></table> <TEXTAREA NAME="Comments" ROWS="8" COLS="39" value="comments"></TEXTAREA> <br> <table><tr><td width="100" align=right> </td> </tr><tr> <td width="100" align=right> URL</td><td><input type="text" name="URL" value="http://" size="34"></td></tr><tr><td></td><td align="right"> <INPUT TYPE="reset" VALUE=" Reset "> <INPUT TYPE="submit" VALUE=" Send "></FORM> </td></tr></table><br></div>
- ベストアンサー
- HTML
- VBAでWebページに入力&ボタンクリック
URLがhttp://xxx.com/のページで次のようなフォームのときExcelで自動入力クリックするマクロを作りたいです。 <input type="hidden" name="room" value="aaaaa"/> <a name="regist" id="regist">総登録数</a> <table width="402" border="1"> <tr> <th align="center" colspan="2"><div align="left"><big>登録ページ</big></div></th> </tr> <tr> <td colspan="2"> name <input type="text" size="20" name="name" value="" maxlength="20"> Email <input type="text" size="20" name="email" value=""> </td> </tr> <tr> <td align="center">pass</td> <td><input type="text" size="20" name="pw" maxlength="12" value=""></td> </tr> <tr> <td align="center">category</td> <td><select size="1" name="junle"> <option value="pp" selected="selected">カテゴリ選択</option> <option value="0">その1</option> <option value="1">その2</option> </select></td> </tr> <tr> <td align="center">title</td> <td><input type="text" size="55" name="title" maxlength="25" value=""></td> </tr> <tr> <td align="center">URL</td> <td><input type="text" size="55" name="url"></td> </tr> <tr> <td align="center">intro</td> <td><input type="text" name="comment" size="55" maxlength="50" value=""></td> </tr> <tr align="center"> <td><br></td> <td><input type="submit" name="mode" value="登録"> <input type="reset" value="クリア"></td> </tr> </table> 入力する内容は1行目のA,B,C・・にname,email,pass・・・が順番にそれぞれ入っています。
- ベストアンサー
- オフィス系ソフト
- [VBScript]ラジオボタンでform送信
HTML内でVBScriptを用いて、以下のようなことをしたいと思っています。 <tr> <td nowrap align="center">東京 or 大阪 </td> <td><input type="radio" name="ikisaki" value="0" checked>東京 <input type="radio" name="ikisaki" value="1" >大阪 </td> <form method="post" action="xxxx.asp" name="form"> <tr> <td nowrap align="right">市名</td> <td nowrap><font size="+2"><%=strCitNm%></font></td> </tr> <tr> <td> <input type="submit" name="A1" value="送信"> </td> </tr> 上記なようなラジオボタンが2つあったとして、[送信]を押したときに ラジオボタンのチェックが「東京」なら action="tokyo.asp" に、 「大阪」なら action="oosaka.asp"へform送信を行いたいと思っているのですが、 HTML内でVBScriptを使用する場合、どのような記述にすればいいのかがわかりません。 どうかよろしくお願いします。
- ベストアンサー
- HTML
- クッキーを使って投票欄に名前と住所を保存したい。
下記の投票欄にクッキーを使って住所、名前を保存したいのですが、どなたか教えていただけませんか。 print "Content-type: text/html\n\n"; print "<HTML><HEAD><TITLE>$0</TITLE></HEAD>\n"; print "<BODY text=#000000 bgcolor=#f7f7e0>\n"; print "<center><table width=400 border=3>\n"; print "<br><br><tr><td><center><font color=0000ff size=\"$za\" face=\"$fon\"><br>$0</font><NOBR>\n"; print "<FORM method=POST action=\"ad.cgi\">\n"; print "<tr><td align=right><b>俳号:</b><INPUT type=text name=name size=24 value=$cookie{'name'}><BR></font> "; print "<tr><td align=right><font face=\"$fon\"><b>都道府県名:</b><INPUT type=text name=address size=24 value=$cookie{'address'}><BR></font>"; print "<tr><td align=right><font face=\"$fon\"><b>メールアドレス:</b><INPUT type=text name=mail size=24 value=$cookie{'mail'}><BR></font> ";
- 締切済み
- CGI
- 「option」をソートしたい!
お世話になります。 調べてもわからないので、丸投げです。ごめんなさい。 このCGIのアイコン選択の「option」をソートで名前順にしたいのですが、 お分かりになるでしょうか? どうぞ、宜しくお願いします。 print "<tr><td><b>アイコン</b></td><td>\n"; if ($UZa_icn) { push(@icn_img,"$myicon"); push(@icn_nam,"管理者専用"); } print "<select name=gicon>\n"; foreach(0 .. $#icn_img) { if ($gicon eq "$icn_img[$_]") { print "<option value=\"$icn_img[$_]\" selected>$icn_nam[$_]\n"; } else { print "<option value=\"$icn_img[$_]\">$icn_nam[$_]\n"; } } print "</select>$ic_tog</td></tr>\n"; } else {print"<input type=hidden name=gicon value=\"$gicon\">";} print <<"EOM"; <tr><td><b>URL</b></td><td><input type=text name=ul size="$ltx_wth" value="http://$gurl" class="text"> </td></tr> <tr><td> </td><td> <input type=hidden name=ps value="$F{'ps'}"> <input type=hidden name=no value="$F{'no'}"> <input type=hidden name=dl value="$F{'dl'}"> <input type=hidden name=mode value="kakikae"> <input type=submit value="修正する" class="button"> </form></td></tr> </table></td></tr></table></div><br><br>
- ベストアンサー
- CGI
- 【タグ】左寄せする方法
一部消去していますが、以下のようなフォームを左に任意のスペースを空けて表示させる場合、どういったタグを使えばいいのでしょうか。 よろしくお願いいたします。 <FORM ACTION="" METHOD="GET" NAME="TG" TARGET="_blank"><table width="250" border="0"><tr><td bgcolor="#0000FF"><div align="center"><font color="#FFFFFF"><strong>検索</strong></font></div></td></tr><tr><td>選びください。<br></br><select name="stayym" size="1"><option value="200902"></option></select></br><br>選びください。</br><select name="catid" size="1">n><option value="11203</option></option></select><input type="submit" value="GO"></td></tr><tr><td><div align="right">ツーリスト</div></td></tr></table></FORM>
- ベストアンサー
- HTML
お礼
無事に修正機能を付けることに完成致しました! 少しだけ表示をアレンジして、インライン・フレームの中に取り込めました。 本当に一から教えて頂いて、本当に勉強になりました。 さん、本当に有難うございました。 しかし、たかが修正機能と思いきや、 こんなに長い記述が必要だったとは驚きました。 現在まで独学で三年掛けて、HTML、CSS、JavaScript、ホームページビルダー、 ムーバブルタイプ、ムーバブルタイプ・カスタマイズとマスターして来て、 先月に初めて本格的にCGIに手を付け出してここまで来ましたが、 簡単なように見えて、このCGI(Perl)が一番手こずっていることに気づきました。 事情があって書籍も買いに行けず、ネットだけでやって来ましたが、 今回これほどの作業を完成させることができたのは、さんのお陰です。 やはり、さんがそれ程詳しいのは、その筋の学校出か、お仕事なのでしょうか? 独学でそこまで来られたとしたら、余程の頭脳の持ち主とお察し致します。 これで、ほぼ全ての機能を取り込むことができ、 素晴らしい掲示板になったと感じております。 本当に有難うございました。 私も、困っている方にアドバイスして上げられるよう、 もっともっと磨きを掛けて勉強して行こうと思った次第です。 今回は、さんの貴重なお時間を費やして頂いて、 本当に有難うございました!(^^)/ あと一つだけ、 デザイン的なことに関してどうしてもできないことが発生したのですが、 それはまた新しい質問として載せたいと思います。 もし、お暇があれば、アドバイスの程、宜しくお願い致します。 今回は、本当に有難うございました。 まさに、私の中で、本当の勇者様です。 今後とも、お体に気を付けて頑張って下さい!(^^)/