「option」をソートしたい!

このQ&Aのポイント
  • CGIのアイコン選択の「option」をソートで名前順にしたい
  • 質問者は調べてもわからず、解決策を求めている
  • 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
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
  • kumoz
  • ベストアンサー率64% (120/185)
回答No.3

日本語文字列のソートには、厄介な問題があります。漢字には読み方がいろいろありますが、そのうちの1つの読みでコード化されているからです。例を挙げてみます。 上 (Shift_JIS: 8FE4, EUC-JP: BEE5) 下 (Shift_JIS: 89BA, EUC-JP: B2BC) 「上」は「ジョウ」の読みで、「下」は「カ」の読みでコード化されています。そのため、「上」と「下」をソートすると、常に「下」が先にくることになります。「ウエ」と「シタ」でソートしたいと思っても、そうはならないのです。 EUC-JP でコードを書かれているなら、ソート順を書いたハッシュなどを利用する方法があります。 %order = ('アイコン' => 1, 'イコンア' => 2, 'コンアイ' => 3, '管理者専用' => 4); foreach (sort { $order{$icn_nam[$a]} <=> $order{$icn_nam[$b]} } 0 .. $#icn_nam) { Shift_JIS ではいろいろと問題が発生するのでお勧めできません。なお、UTF-8 についてはよくわからないので、悪しからず...。

monica_panda
質問者

お礼

どうもありがとうございました;結局断念することにしました。ご回答頂いたのに申し訳ないです(≧x≦;

monica_panda
質問者

補足

ご返答ありがとうございます! BBSがShift_JISなので、難しそうですね…; アイコンは、訪問者さんが自分でアップして使えるようなタイプなので、自分のアイコンを見つけるのが難しく、ソートしたかったのです。 なので、「ソート順を書く」というのは難しく、何か方法があればっと、思ったのですが…。 諦めた方が良いでしょうか?

その他の回答 (2)

  • kumoz
  • ベストアンサー率64% (120/185)
回答No.2

> foreach(0 .. $#icn_img) { 上の行を次のように変更してみてください。もしかすると、うまくいくかも? foreach (sort { $icn_nam[$a] cmp $icn_nam[$b] } 0 .. $#icn_nam) {

monica_panda
質問者

補足

ありがとうございます! 書きこんで頂いた通り、ペーストさせて頂いたのですが、ソート出来ていないようです。 せっかくお答え頂いたのに申し訳ございません。 他に考えられる点は御座いますでしょうか?もし、お時間有りましたら、ご返答頂けますと助かります!

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.1

>調べてもわからないので CGIとなっているが、記述されている言語は何ですが? そこがわかっていないでは。 CGIと表現されるときは通常、そのOSのシェルか、Perl またはその両方。 しかし、PHPにも見える。なんでしょう。

monica_panda
質問者

お礼

どうもありがとうございました;結局断念することにしました。ご回答頂いたのに申し訳ないです(≧x≦;

monica_panda
質問者

補足

ご返答ありがとうございます!言葉足らずで申し訳ないです。 おそらく、Perlだと思います。 シェルかどうかはわからなかったので、URLを貼らせて頂きました。 現在配布元のサイトが無くなっているので、改造版のスクリプトですが; SADO GAME CAFE CGI ダウンロードページ【携帯Ver. Narration BBS】 <http://sado.or.tv/dl_cgi/001.htm> 見当違いでしたらゴメンナサイ。 ご返答、どうぞ宜しくお願いします。

関連するQ&A

  • 掲示板のコメント欄にあらかじめ文字を入れたい

    掲示板の設置をしています。 掲示板のコメント欄の中に、あらかじめこちらが伺いたいことを表示しておきたいのですが、どのようにしたらできるのでしょうか? 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
  • スケジュール・カレンダーを携帯から

    無料配布されているスケジュール・カレンダーの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
  • 文字の表示色を変えたい

    いつも、ありがとうございます。 下の記述で、<他社より安い場合は・・・>の文字を 青くしたいのですが、いろいろとやっても、 青文字になってくれません。 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
  • 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 ~~以下上記同じ~~

  • 掲示板スパム対策(改造)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
  • 日付取得のJavascriptの動作不良に関して

    教えて下さい。 下記のソースの中にある日付をテキストへ表示するJavascriptがどうしても動き ません。 phpとの兼ね合いがあるのかもしれませんが、どこが悪いのか掴めず。。。 日付のJavascript は http://www.kanaya440.com/contents/js/calendar/index.html よりダウンロードしてきてあり、ソース内に記述してあります。 恥ずかしながら、どこに不具合があるのかをご指摘頂ければ幸いです。 よろしくお願いします。 《ソース》 <?php $hiduke = "'mm/dd'"; ?> <HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> ********* ここにダウンロードしたカレンダーJavascript を貼る </SCRIPT> <TITLE>行動予定登録</TITLE> <META Http-Equiv="Content-Type" Content="text/html;charset=shift-jis"> </HEAD> <BODY> <CENTER> <FORM ACTION="zkoudou_update2.php" METHOD="POST"> <INPUT TYPE="hidden" NAME="item" VALUE="2"> <TABLE BORDER=1 WIDTH="70%" CELLPADDING="10" CELLSPACING="0"> <TR> <TD ALIGN="center"> <TABLE BORDER="0" WIDTH="100%"> <TD WIDTH="20%"> <FONT SIZE="2"> </FONT> </TD> <TD WIDTH="60%" ALIGN="center"> <B><U>行動予定登録</U></B> </TD> <TD WIDTH="20%" ALIGN="right"> <FONT SIZE="2">戻 る</A></FONT> </TD> </TABLE> <FONT COLOR="#FF0000"><B></B></FONT><BR> <?php print("<TABLE BORDER=0 CELLPADDING='5'>\n"); print("<TR>\n"); print("<TD NOWRAP WIDTH='20%'><FONT SIZE='2'><B>【名前】</B></FONT></TD>\n"); print("<TD WIDTH='60%'></TD>\n"); print("<TD WIDTH='20%'>\n"); print("</TD>\n"); print("</TR>\n"); print("<TR>\n"); print("<TD NOWRAP WIDTH='20%'><FONT SIZE='2'><B>【内線NO】</B></FONT></TD>\n"); print("<TD WIDTH='70%'></TD>\n"); print("<TD WIDTH='10%'>\n"); print("</TD>\n"); print("</TR>\n"); print("<TR>\n"); print("<TD NOWRAP><FONT SIZE='3'><B>【行  先】</B></FONT></TD>\n"); print("<TD NOWRAP SIZE='30'>\n"); print("</TD>\n"); print("</TR>\n"); print("<TR>\n"); print("<TD NOWRAP><FONT SIZE='3'><B>【戻り時間】</B></FONT></TD>\n"); print("<TD>\n"); *********** このJavascripit が動かない。。。。 print("<input type='text' name='p1' id='p1' size='30' maxlength='10'> <input name='Calendar' type='button' value='日付セット' onClick='wrtCalendar(event,this.form.p1,$hiduke)'>\n"); print("</TD>\n"); print("</TR>\n"); print("<TR>\n"); print("<TD>\n"); print("</TD>\n"); print("<TD><FONT SIZE='2'> ※ 戻り時間はダブルクリック\n"); print("</FONT></TD>\n"); print("</TR>\n"); print("</TABLE>\n"); print("<INPUT TYPE='submit' NAME='exec' VALUE='登録する'>\n"); print("<INPUT TYPE='hidden' NAME='no' VALUE='$out_no'>\n"); print("<INPUT TYPE='hidden' NAME='busyo' VALUE='$out_busyo'>\n"); ?> </TD> </TR> </FORM> </TABLE> <FONT SIZE=2><I> Copyright (C) 2001-2004 All right reserved by CGI KON </I></FONT> </CENTER> </BODY> </HTML>

  • 同じname属性をまとめ未記入の項目を削除する方法

    現在メールフォームを作成しており、アドバイスを受けながら一歩ずつ前進している者ですが今回も行き詰ってしまいました。度々の質問で心苦しいですが何卒宜しくお願いします。 言葉での説明が難しいので以下のアドレスに【ブラウザ入力画面】と【確認画面】のイメージを掲載しました。 http://homepage2.nifty.com/nippon/qe/qes.html htmlソースは以下の通りで同じ「msg」などname属性の物が存在します。 <h1>フォーム</h1> <FORM action="abc.cgi" method="POST"><INPUT type="hidden" name="location" value = "http://abc.com"> <INPUT type="hidden" name="subject" value="【フォームメール】"> <TABLE border="0" cellpadding="3"> <TBODY> <TR> <TD bgcolor="#ffeadf">メッセージ1:</TD> <TD><INPUT size="50" type="text" name="msg"></TD> </TR> <TR> <TD bgcolor="#ffeadf">メッセージ2:</TD> <TD><INPUT size="50" type="text" name="msg"></TD> </TR> <TR> <TD bgcolor="#ffeadf">質問:</TD> <TD><INPUT size="50" type="text" name="qes"></TD> </TR> <TR> <TD bgcolor="#ffeadf">名前:</TD> <TD><INPUT size="50" type="text" name="Name"></TD> </TR> <TR> <TD bgcolor="#ffeadf">メールアドレス:</TD> <TD><INPUT size="50" type="text" name="Email"></TD> </TR> </TBODY> </TABLE> <BR> <INPUT TYPE="submit" VALUE="確認"> <INPUT TYPE="reset" VALUE="リセット"><BR> </BODY> </HTML> name属性が同じ場合は改行ぜずに1つにまとめvalue属性の値をカンマで区切って1行で表示させたいと思っております。 また、ブラウザ側で入力が無かった項目は表示させないようにしたいと思っております。 いろいろとIF関数を試してみましたがうまく表示しません(;;) 現在以下のプログラムで全ての項目と値が1行づつ表示されています、どのように変更すれば良いでしょうか? $count = @DATA_N; foreach (0..$count-1) { if ($DATA_V[$_] =~ /\n/) { &jis("$DATA_N[$_] =\n$DATA_V[$_]\n"); print OUT "$msg\n"; } else { &jis("$DATA_N[$_] =$DATA_V[$_]"); print OUT "$msg\n"; } } push(@DATA_N,$name); push(@DATA_V,$value); なにとぞ宜しくお願いいたしますm(_ _)m

    • 締切済み
    • CGI
  • 楽天アフィの検索窓(form)の左右中央化

    こんにちは。 ホームページを製作しているものです。楽天ブックスの検索窓を設置しようと考えています。それが下記です。 <form method=get action="http://pt.afl.rakuten.co.jp/c/秘密にさせて下さい/"><input type=hidden name=sv value=6><input type="hidden" name="sid" value="213310"> <input type="hidden" name="su" value="rakutenbooks"> <input type="hidden" name="sn" value="楽天ブックス"> <input type="hidden" name="cord" value="s"><table width=150 border=0 cellspacing=0 cellpadding=1 bgcolor=#107400><tr><td align=center><table cellspacing=0 cellpadding=3 border=0 width=100% bgcolor=#FFFFFF><tr> <td bgcolor=#107400 align=center><b><font size=2 color=#FFFFFF>楽天ブックスで探す</font></b></td> </tr><tr bgcolor=#fffcdd><td nowrap align=center><input type=text size=14 name=sitem value=></td></tr><tr bgcolor=#fffcdd><td align=center><input type=submit value=商品検索 name=submit></td></tr><tr><td nowrap align=center><img src=https://image.books.rakuten.co.jp/books/img/bookimg/_h1529_bookslogo.gif width=145 height=27 border=0 alt=楽天ブックス></td></tr></table></td></tr></table><input type="hidden" name="scid" value="af_ich_link_search"></form> この<form>を<center>タグではなくCSSで左右中央化がどうCSSで指定しても出来ませんでした。 CSSファイルで下記を記述し<form>を挟んでも不可でした。 .cent { margin-left:auto; margin-right:auto; text-align:center; } お分かりの方、どなたかご教示願えないでしょうか? 何卒よろしくお願い申し上げます。

    • ベストアンサー
    • CSS
  • CGIのforeach文

    CGIを作成していてforeach文のところを通ってくれません。原因が不明なのですが下記でおかしいことなどがあったらおしえてください。 お願いします。 $entrycgi = "./touhyou.cgi"; $Location = '../images'; $imgVote = $Location."/click.gif"; $votefile = "./database/vtbl.dat"; sub vote_form{ print "<FORM ACTION=\"$entrycgi\" METHOD=\"post\" NAME=\"Form\">\n"; print "<INPUT TYPE=\"hidden\" NAME=\"proc\" VALUE='entry'>\n"; print "<INPUT TYPE=\"hidden\" NAME=\"Action\">\n"; print "<TABLE><TR><TD><IMG SRC=\"$Location."/top.gif\"></TD></TR></TABLE>\n"; open(FILE, "+<$votefile"); @output = <FILE>; close(FILE); print "<TABLE><TR>\n"; $i = 1; @output_sort = sort { $b <=> $a } @output; foreach $output_sort(@output_sort){ ($COUNT, $NM, $FILENM, $NO) = split(/\,/, $output_sort); $filename = $Location.$FILENM; print "<IMG SRC='$filename' HEIGHT=100 WIDTH=100></TD>\n"; if ($i == 5) { last; } else { print "<TD width=\"50\"></TD>\n"; $i++; } } print "</TR></TABLE>\n"; }

    • ベストアンサー
    • CGI
  • 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">&nbsp;&nbsp;&nbsp;name <input type="text" size="20" name="name" value="" maxlength="20"> &nbsp;&nbsp;&nbsp;Email <input type="text" size="20" name="email" value=""> &nbsp;&nbsp;</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・・・が順番にそれぞれ入っています。

専門家に質問してみよう