• 締切済み

検索結果の表示形式を表形式にしてだしたいのですが・・・

CGI初心者です。データベース検索のCGIをフリーからカスタマイズをかけて利用を試みています。今の状態では、検索結果が、 print "<LI><a href=\"$script?mode=view&no=$no\">$sub</a>\n"; 状態で表示されます。 が、これをメンテするときの一覧状態にしたいのです。 メンテ時の表示プログラムは、 # 管理画面を表示 &header; $count = @lines; print "<center>\n"; print "<form action=\"$script\" method=\"$method\">\n"; print "<input type=hidden name=pass value=\"$in{'pass'}\">\n"; print "<input type=hidden name=mode value=\"admin\">\n"; print "<input type=hidden name=action value=\"delete\">\n"; print "<table border=1 cellspacing=1><tr>\n"; print "<th>削除<th>料理名<th>食種<th>食材<th>調理法<th>コメント</tr>\n"; foreach $line (@lines) { local($no,$sub,$com,$p1,$p2,$p3) = split(/<>/, $line); $com =~ s/<br>/ /g; $com =~ s/</&lt;/g; $com =~ s/>/&gt;/g; if (length($com) > 60) { $com = substr($com,0,58); $com = "$com" . '..'; } print "<tr><th><input type=checkbox name=del value=\"$no\"></th>"; print "<td><b><a href=\"$script?mode=mente&no=$no\">$sub</a></b></td>"; print "<td>$part1[$p1]</td><td>$part2[$p2]</td><td>$part3[$p3]</td>"; print "<td><small>$com</small></td></tr>\n"; } print "</table><P>\n"; です。どうしたら、メンテ時のような一覧の表形式で表示できるのでしょうか? あと、あまりに言語がわからないので、なにか良い参考書及びHPがあれば教えてください。

  • bori
  • お礼率67% (40/59)
  • CGI
  • 回答数1
  • ありがとう数2

みんなの回答

  • y_oku
  • ベストアンサー率62% (25/40)
回答No.1

検索結果を表示している前後のプログラムが見たいです。 >print "<LI><a href=\"$script?mode=view&no=$no\">$sub</a>\n"; 表示行で変数$noや$subを使っていますが、 その変数はどのように定義されていますか? また、メンテプログラムの$p1や$p2や$comは、 表示プログラムで取得することができますか? メンテプログラムには、食種名の配列@part1や 食材名の配列@part2があると思いますが、 表示プログラムにもありますか? もし、変数の条件が同じにできれば、 メンテプログラムから削除のためのチェックボックスだけを取り除くだけで、 表形式にしているプログラムを利用することができると思いますが。 ちなみに、CGIはPerlというスクリプト言語で書かれています。 Perlが分からないということであれば、 下のようなページあたりを見て回って、 情報収集してみてください。 Perlカテゴリの質問を参考にするのもよいでしょう。 http://oshiete1.goo.ne.jp/oshiete.php3?c=255

参考URL:
http://www.harukaze.net/~mishima/perl/
bori
質問者

お礼

すいません。ありがとうございました。 参考 URLを頼りに再度チャレンジしてみます。 (。・_・。)ノ

関連するQ&A

  • 表示を一覧表形式にしたいのですが組みかたを教えてください。

    検索データを一覧表で表示したく、いろいろやってみたのですができません。なぜできないのか、どこがいけないのかおしえていただきたいのですが・・・ 一応、一覧表で表示されていたスクリプトをお手本にやっていたのですが、知識がなさすぎてわかりません。よろしくおねがいします。 sub search { &header; print "<table border=1 cellspacing=1><tr>\n"; print "<th>情報提供者<th>ユーザ名<th>業務<th>顧客管理元<th>責任者<th>コメント</tr>\n"; # キーワード前準備 $in{'word'} =~ s/ / /g; @word = split(/\s+/, $in{'word'}); open(IN,"$logfile") || &error("Open Error : $logfile"); $i=0; while (<IN>) { ($no,$sub,$com,$p1,$p2,$p3,$p4) = split(/<>/); if ($in{'P1'} ne "99" && $in{'P1'} ne "$p1") { next; } if ($in{'P2'} ne "99" && $in{'P2'} ne "$p2") { next; } if ($in{'P3'} ne "99" && $in{'P3'} ne "$p3") { next; } if ($in{'P4'} ne "99" && $in{'P3'} ne "$p4") { next; } # キーワードマッチ $flag=1; foreach $key (@word) { if (index($_,$key) >= 0) { $flag=1; } else { $flag=0; last; } } if (!$flag) { next; } $i++; print "<td><b><a href=\"$script?mode=view&no=$no\">$sub</a></b></td>"; print "<td>$part1[$p1]</td><td>$part2[$p2]</td><td>$part3[$p3]</td><td>$part4[$p4]</td>"; print "<td><small>$com</small></td></tr>\n"; print "</table><P>\n"; } close(IN);

    • ベストアンサー
    • Perl
  • 文字の表示色を変えたい

    いつも、ありがとうございます。 下の記述で、<他社より安い場合は・・・>の文字を 青くしたいのですが、いろいろとやっても、 青文字になってくれません。 500 Internal Server Error になってしまいます。 どうやれば、青文字になりますか? **********記述文************************ print "<table>\n"; print "<tr>\n"; print "<td>\n"; print "<form action=\"$script\" method=\"POST\" target=\"_blank\">\n"; print "<input type=hidden name=mode value=note>\n"; print "<input type=hidden name=job value=blank>\n"; print "<input type=submit value=ご 利 用 方 法></form>\n"; print "</td><td>\n"; print "<form action=\"$home\" method=\"POST\" target=\"_self\">\n"; print "<input type=hidden name=mode value=_top>\n"; print "<input type=hidden name=job value=blank>\n"; print "<input type=submit value='ト ッ プ へ 戻 る'>\n"; print "</form></td></tr></table> <他社より安い場合は、ご相談ください。>

    • ベストアンサー
    • CGI
  • 掲示板のコメント欄にあらかじめ文字を入れたい

    掲示板の設置をしています。 掲示板のコメント欄の中に、あらかじめこちらが伺いたいことを表示しておきたいのですが、どのようにしたらできるのでしょうか? sub in_form { print "<table cellspacing=1 cellpadding=0>\n"; print "<form action=\"$script\" method=POST enctype=\"multipart/form-data\">\n"; print "<input type=hidden name=mode value=\"newwrt\">\n"; &getcook; if (!$mode) { $submit = '投稿する'; } else { print "<input type=hidden name=rno value=\"$in{'no'}\">\n"; $submit = '返信する'; } print "<tr><td>名前</td><td><input type=text size=30 name=name value=\"$name\" style=\"ime-mode:active;\"></td></tr>\n"; print "<tr><td>HP</td><td><input type=text size=50 name=hp value=\"http://$hp\"></td></tr>\n"; print "<tr><td>題名</td><td><input type=text size=50 name=sub style=\"ime-mode:active;\"></td></tr>\n"; print "<tr><td valign=top><br>内容</td><td><textarea cols=65 rows=8 name=com style=\"ime-mode:active;\"></textarea></td></tr>\n"; print "<tr><td>画像</td><td><input type=file size=60 name=img></td></tr>\n"; print "<tr><td>削除キー</td><td><input type=password size=10 maxlength=8 name=pwd value=\"$pwd\"> (英数8文字以内)</td></tr>\n"; print "<tr><td></td><td><input type=submit value=\"$submit\"></td></tr></table></form>\n"; } おそらくこの部分を変えるのかなぁと思うのですが・・・どうすればいいのかわかりません。どなたかアドバイスいただけるとうれしいです。 よろしくお願い申し上げます。

    • ベストアンサー
    • 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>&nbsp;</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
  • スケジュール・カレンダーを携帯から

    無料配布されているスケジュール・カレンダーのCGIを使い、スケジュール表をUPさせましたが、パソコンから見るといいのですが、 携帯から見ると、 ・先月や来月に移るのに、フォームのイメージタグを使い、GIFファイルをつかい、(hiddenで)今月の月であったり、年であったりの情報を送っています。 しかし、これを携帯でみると、「LAST」アイコンではなく、テキスト入力欄になっていて、先月や来月へ移ることができません。 どうしてなのかが、わからないです。 たぶん、このあたりを変えるといいのだろうと思うのですが、どうしたらいいのかわかりません。 ーーーーーーーーーーーーーーーーーーーーーーーーーー sub dsp { print "<table width=",$calw-40," cellspacing=2 cellpadding=0><tr><td width=100><font size=\"+1\"><b>$logyear年</b></font></td>\n"; $mon = $logmon - 1; if ($mon < 1) {$mon = 12; $year = $logyear - 1;} else {$year = $logyear;} if (2002 < $year) { print "<td align=right><form action=\"$script\" method=\"POST\">\n"; print "<input type=\"hidden\" name=\"mode\" value=\"$mode\">\n"; print "<input type=\"hidden\" name=\"pass\" value=\"$inpass\">\n"; print "<input type=\"hidden\" name=\"year\" value=\"$year\">\n"; print "<input type=\"hidden\" name=\"mon\" value=\"$mon\">\n"; print "<input type=\"image\" src=\"$last_icon\"></td></form>\n"; } print "<td width=100 align=center><font size=\"+2\"><b>$logmon月</b></font></td>\n"; $mon = $logmon + 1; if (12 < $mon) {$mon = 1; $year = $logyear + 1;} else {$year = $logyear;} print "<td><form action=\"$script\" method=\"POST\">\n"; print "<input type=hidden name=mode value=\"$mode\">\n"; print "<input type=hidden name=pass value=\"$inpass\">\n"; print "<input type=hidden name=year value=\"$year\">\n"; print "<input type=hidden name=mon value=\"$mon\">\n"; print "<input type=image src=\"$next_icon\"></td></form><td width=100></td></tr></table>\n"; } ーーーーーーーーーーーーーーーーーーーーーーーーーー お願いします。

    • ベストアンサー
    • CGI
  • フォームで確認画面を表示させるにはどうすればいいのでしょうか?

    質問をご覧下さりありがとうございます。 <form action="18add.php" method="POST" name="form1"> <table> <tr> <th>番号(半角数字)</th> <td><input type="text" name="number" value=""></td> </tr> <tr> <th>名前</th> <td><input type="text" name="name" value=""></td> </tr> <tr> <td><input type="hidden" name="mode" value="add"></td> <td><input type="submit" name="submit" value="追加"></td> </tr> </table> </form> htmlでこんなフォームを作り、phpで $table_body = ""; if( isset( $_POST['mode'] ) ){ $mode = $_POST['mode']; $number = $_POST['number']; $name =$_POST['name']; } else{ $mode = ""; $number = ""; $name = ""; } if( $mode == "add" ){ $table_body .= "<tr>"; $table_body .= "<td>"; $table_body .= $number; $table_body .= "</td>"; $table_body .= "<td>"; $table_body .= mb_convert_encoding( $name, "SJIS", "EUC-JP" ); $table_body .= "</td>"; $table_body .= "</tr>"; } で一度入力された情報を確認する画面を作りたいのですが うまくいきません。 初心者なのでわかりやすく説明をつけてくださると大変助かります。

    • 締切済み
    • PHP
  • ラジオボタンで入力し、その結果をCGIで表示するプログラム

    htmlで <html> <head> </head> <body> <form method="get" action="question.cgi"> <table width="50" height="" border="1" bordercolor="black" bgcolor="white" cellSpacing="0" cellpadding="5"> <tr><th>/</th><th>yes</th><th>no</th></tr> <tr><th>1</th><td><input type="radio" name="char1"></td> <td><input type="radio" name="char1"></td></tr><br> <tr><th>2</th><td><input type="radio" name="char2"></td> <td><input type="radio" name="char2"></td></tr><br> <tr><th>3</th><td><input type="radio" name="char3"></td> <td><input type="radio" name="char3"></td></tr><br> <tr><th>4</th><td><input type="radio" name="char4"></td> <td><input type="radio" name="char4"></td></tr><br> </table> <input type="button" value="送信" ><input type="reset" value="リセット"><br> </form> </body> </html> と書き、C言語でCGIを書き、ラジオボタンを押して送信ボタンを押すと 1:yes,2:no,3:no,4:yesなどと文字列で出力したいのです。 getメソッドがいいのかpostメソッドいいのかも教えていただければうれしく思います。 (この質問ではgetメソッドを使っていますが、あまり気にしないでください)

    • ベストアンサー
    • CGI
  • <FORM TYPE="subumit">でデータをCGIに飛ばして、画面には別のHTMLを表示する。

    #submitでデータを飛ばす(A.cgi)処理以外にもう一つウィンドウを開いて(B.html)中継をした上で(B.html)からリンクで(A.cgi)に飛ばせたいと思います。ちなみに質問No.994791も私の疑問に近いのかとも思い参照しましたが初心者でわかりません。 print "<td><form action=\"$script\" method=\"GET\">\n"; #認証後の投稿ページ画面へ(forum.cgiへパラメータを渡す/forum.cgi?id=$id&pw=$pw)へ飛ぶ print "<table align=\"center\"><tr><td>\n"; print "<tr><th><UL><LI>すでにパスワード取得済みの方はこちらからどうぞ</th>\n"; print "<tr><th>ログインID<th><input type=text name=id size=8></tr> \n"; print "<tr><th>パスワード<th><input type=password name=pw size=8></tr> \n"; print "<tr><th colspan=2><input type=submit value=' 認証する '></tr> \n"; #この辺に入れるのかな? #やりたい処理をまとめると<FORM TYPE="subumit">でデータをCGIに飛ばして、画面には別のHTMLを表示する。 #CGI入力されたデータを一個飛ばしてCGIで利用したいためです。 print "<td><input type=hidden\">\n"; print "</td></tr></table>\n"; print "<P><table align=center>\n"; print "<UL><LI> <a href=\"$postmail\">パスワードを新規取得の方</a> はこちら \n"; #認証の前処理:会員登録画面(postmail.html)へ飛ぶ#2004.12.6 print "<LI> <a href=\"$pwmake?mode=change\">パスワードを変更の方</a> はこちら \n"; print "</table></form>\n</body></html>\n"; exit;

    • 締切済み
    • CGI
  • チェックボックスを使用してのAND検索

    宜しくお願いします。 検索データベース2という、CGI-GARAGE さんのCGIを使って、データベースの検索プログラムを作ってみているのですが、初期の仕様でチェックボックスでの検索が、or検索になっています。 これを、AND検索できるように変えたいのですが、どなたかお力を貸していただけませんでしょうか? チェックボックスに関係ありそうな部分は2箇所あったのですが 補足が必要であれば言ってください。宜しくお願いします。 $print .= "<TD><input type=checkbox name=\"$count\" value=\"$sobicount\">$p[1]</TD>\n"; if($tcount >= 5 && ($tcount % 5) eq 0){ $print .= "</TR>\n"; ---------------------------------------------------- my $pp = $tcount - 1; $print .= "<TD><input type=checkbox name=\"$count\" value=\"$pp\">$p  </TD>\n"; if($tcount >= 5 && ($tcount % 5) eq 0){ $print .= "</TR>\n"; }

    • 締切済み
    • CGI
  • FORMメソッドでvalueがうまく渡されない

    Perlで下記のようにFORMメソッドを 色々なところで使っているのですが ↓のFORMメソッドだけVALUEが渡らないのです。 print "<FORM ACTION=\"$homeurl\" METHOD=$method>\n"; print "<TABLE BORDER=1>\n"; print "<TR>\n"; print "<TD>会員番号</TD>\n"; print "<TD><TT>会員番号-</TT><INPUT type=text name=mytonum value=\"$mynum\"></TD>\n"; print "</TR>\n"; print "<TR>\n"; print "<TD COLSPAN=2>\n"; print "<INPUT TYPE=SUBMIT VALUE=\" 基本情報 \">\n"; print "<INPUT TYPE=hidden NAME=mynum VALUE=\"$c_mynum\">\n"; #非表示。クッキー用 print "<INPUT TYPE=HIDDEN NAME=mycmd VALUE=write2>\n"; print "</TD>\n"; print "</TR>\n"; print "</TABLE>\n"; print "</FORM>\n"; それで改変したのが↓です。 こちらはボタンを押したらちゃんと値が渡りました。 ただ、予定した位置にテキストボックスが表示されず別の位置に表示されそれも困っています。 上の表記はどこが間違っているのでしょうか? print "<FORM ACTION=\"$homeurl\" METHOD=$method>\n"; print "<TABLE BORDER=1>\n"; print "<TR>\n"; print "<TD>編集先の会員番号</TD>\n"; # print "<TD><TT>会員番号-</TT><INPUT type=text name=mytonum value=\"$mynum\"></TD>\n"; #コメントにして・・・ print "</TR>\n"; print "<TR>\n"; print "<TD COLSPAN=2>\n"; print "<INPUT TYPE=SUBMIT VALUE=\" 基本情報 \">\n"; print "<INPUT TYPE=text NAME=mynum VALUE=\"$mynum\">\n"; #こちらtypeを変更→OK ~~以下上記同じ~~

専門家に質問してみよう