• ベストアンサー

わかりません・・・

<select name="hour"> <option value="" selected>-- <?php for($i=0;$i<24;$i++){      if(strlen($i) == 1){        if($hour == $i){ ?>          <option value="'0'.<?=$i?>" selected>0<?=$i?> <?php     }else{  ?>          <option value="'0'.<?=$i?>">0<?=$i?> <?php     }        }else{        if($hour == $i){   ?>          <option value="<?=$i?>" selected><?=$i?> <?php     }else{   ?>          <option value="<?=$i?>"><?=$i?> <?php     }       }     }  ?> </select>時 ------------------------------------------------------- 上記のようなスクリプトを作成しました。 リストボックスの時間について、 一桁なら0を付加(1→01)しています。 今、変数$hourに(00~23)までの値が入っていれば、 リストボックスには、$hourの値を等しいものを表示、 $hourに値が入っていなければ、デフォルト表示の”--”を 表示したいと考えています。 上記のスクリプトを動かしてみると、 $hourに値があるときは正常に動作します(リストボックスの値を $hourの値と等しいものを表示)が、 $hourに値がないときになぜか”00”を表示してしまいます。 本当は”--”を表示したいのですが・・・ なにかおかしいですか?

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

  • ベストアンサー
  • the845t
  • ベストアンサー率33% (246/743)
回答No.1

if($hour == $i){ ?>          <option value="'0'.<?=$i?>" selected>0<?=$i?> <?php     } この部分でしょう。 文字列が一桁で、さらに$hourが0の時は00をselectedとなっています。 ですので、 ここのif文を if(($i)&&($hour == $i)) とするとか。 if(($i>0)&&$hour == $i)) の方が良いのかな。

653
質問者

お礼

返信ありがとうございました。 できました。 $hourの値がない場合、0と判断されてしまうのですか・・・・ $hourの値がないとき念のため、表示させたのですが、 なにも表示されなかったので、 問題ないと思いこんでしまいました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • mirurin
  • ベストアンサー率43% (48/111)
回答No.3

if($hour == $i){ これは数値として比較してますよね? 変数$hourに値がない場合、数値に変換されて「0」となっているんじゃないでしょうか。

653
質問者

お礼

いつも返信ありがとうございます。 数値比較してますね・・・ >変数$hourに値がない場合、数値に変換されて「0」となっているんじゃないでし>ょうか。 どうもそのようですね。 アドバイス&回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • the845t
  • ベストアンサー率33% (246/743)
回答No.2

#1です。 下側の方、はじまりのカッコ一つ忘れてました。 if(($i>0)&&($hour == $i))

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 生年月日・年月日のフォームが表示されない

    お世話になります。 下記のタグでは、表示されません。 サーバーの問題なのか、タグの問題かわかりませんので、 まず、タグを見て頂けませんか? よろしくお願いします。 ------------------------------------------------ <td width="30%">生年月日</td> <td width="70%"><script type="text/javascript"> document.write("<select name=\\"296643_year\\">"); for(i=1900;i<2010;i++){ if(i==1950){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); } }document.write("</select>"); document.write(" 年 "); document.write("<select name=\\"296643_month\\">"); for(i=1;i<13;i++){ if(i==1){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); }} document.write("</select>"); document.write(" 月 "); document.write("<select name=\\"296643_day\\">"); for(i=1;i<32;i++){ if(i==1){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); }}document.write("</select>"); document.write(" 日 "); </script> <br><font size="1"></font></td> </tr> <tr> ---------------------------------------------------------------- <td width="30%">電話の場合の日時</td> <td width="70%"> <script type="text/javascript"> document.write("<select name=\\"296652_year\\">"); for(i=2009;i<=2010;i++){ if(i==2009){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); } } document.write("</select>"); document.write(" 年 "); document.write("<select name=\\"296652_month\\">"); for(i=1;i<13;i++){ if(i==4){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); } } document.write("</select>"); document.write(" 月 "); document.write("<select name=\\"296652_day\\">"); for(i=1;i<32;i++){ if(i==23){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); }} document.write("</select>"); document.write(" 日 "); document.write("<select name=\\"296652_hour\\">"); for(i=0;i<24;i++){ if(i==0){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); } } document.write("</select>"); document.write(" 時 "); document.write("<select name=\\"296652_minute\\">"); for(i=0;i<60;i=i+5){ if(i==0){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); }} document.write("</select>"); document.write(" 分 "); </script><br><font size="1"></font></td> </tr> <tr>

    • ベストアンサー
    • HTML
  • リストボックスから選択できないのはどうして!?

    実はJAVASCRIPTでリストボックス(select1)から会社名を選択するとその下のテキストボックス(link)に そのURLがでるものを作っていたのですが、なぜかリストボックスが選択できない状態になってしまいます。 下のがそのコードなのですが、どなたかわかるかたいらっしゃいませんか? どうぞよろしくお願いいたします。 <SCRIPT type="text/javascript"> <!-- function aaa() { var a; if((f.select1.value) ="A社") {url = "http://www.a***.co.jp" }; else if((f.select1.value) ="B社") {url =" http://www.b***.co.jp" }; else if((f.select1.value) ="C社") {url = "http://www.c***.co.jp" }; else{url = "URLはありません"}; (f.link.value) = url; return } //--> </script> <select onchange = "aaa()" name="select1"> <option value="A社" selected>A社</option> <option value="B社">B社</option> <option value="C社">C社</option>      <option value="D社">D社</option> </select> <input type="text" name="link">

  • 表示の仕方を教えてください!

    最初から鹿児島県が表示されるようにするには if ($ken == "") { echo "<option value=\"\" selected>----</option>"; } else { echo "<option value=\"\">----</option>"; } の-----部分はどうarray文から取り込めばいいのですか?? よろしくお願いします。 現在は下記のようになってます。 ----todoufuken.php------------------------ <?php $todofuken = array( 1 => array("hokkaido","北海道"), 2 => array("tokyo","東京都"), 3 => array("kagoshima","鹿児島県") ); ?> ------------------------------------------- ----ken_select.php------------------------- <?php include('todoufuken.php'); ?> <SELECT size=1 name=ken> <?php if ($ken == "") { echo "<option value=\"\" selected>----</option>"; } else { echo "<option value=\"\">----</option>"; } while ( list(,$p_todofuken) = each( $todofuken ) ) { list(,$p_kenname) = $p_todofuken; if ($p_kenname == $ken) { echo "<option selected>$p_kenname</option>"; } else { echo "<option>$p_kenname</option>"; } } ?> </SELECT>

    • ベストアンサー
    • PHP
  • 日付のセレクトボックスで0付きの日付にしたい

    ネットで探した式を張り付ける位しかできない超初心者です。 以下のような当日表示の日付のセレクトボックス を探してペーストしたのですが1や2を01、02と表示しません。 これをどうやって直せば01,02,03,04,05と0付きの表示のセレクトボックスに 直せるでしょうか? どうぞよろしくお願いいたします。 <? $time = time(); $year = date("Y", $time); $month = date("n", $time); $day = date("j", $time); print("<select name=\"ayear\">"); //年は修正してください for( $i = 2010; $i <= 2020; $i++ ){ if( $i == $year ){ print("<option value=\"$i\" selected>$i</option>"); }else{ print("<option value=\"$i\">$i</option>"); } } print("</select>年"); print("<select name=\"amonth\">"); for( $j = 1; $j <= 12; $j++ ){ if( $j == $month ){ print("<option value=\"$j\" selected>$j</option>"); }else{ print("<option value=\"$j\">$j</option>"); } } print("</select>月"); print("<select name=\"aday\">"); for( $k = 1; $k <=31 ; $k++ ){ if( $k == $day ){ print("<option value=\"$k\" selected>$k</option>"); }else{ print("<option value=\"$k\">$k</option>"); } } print("</select>日"); ?>

    • ベストアンサー
    • PHP
  • <SELECT>への読込

    セレクトボックスを選択してDBに保存したデータを、 再びセレクトボックスに読み込む方法を考えています。 (案1).optionタグの中に、データが一致したらselectedを付加するIF文を作る。 <select name="ramen"> <option value="1" <% If vbtmp="1" Then %>selected<% End If %> >醤油</option> <option value="2" <% If vbtmp="2" Then %>selected<% End If %> >味噌</option> <option value="3" <% If vbtmp="3" Then %>selected<% End If %> >塩</option> </select> (案2).bodyタグのonLoad(JavaScript)を経由する。 <script language="JavaScript"> function Yomikomi() { document.fm.ramen.value = "<%=vbtmp%>"; } </script> 上記の案がありますが、実際に扱うセレクトボックスの量が多い為、出来る限りシンプルな作りを目指しております。 もっと良い方法がありましたらご教授願います。

  • リストボックスの内容追加と削除

    質問QNo.172288を参考にプログラムを作成しました。 そこで下記のような処理をしたいのですがどのように処理をしていいのか解りません。 Bというリストボックスの値を「追加」ボタンを押すとAのリストボックスに追加するときにBのリストボックスより選択した値は削除(非表示)あるいはAのリストボックスに既に存在する同じ値はAリストボックスには追加しない。(重複チェックみたいな感じです) それと、Aというリストボックスの値を「戻す」ボタンを押すと選択されている値をAのリストボックスより削除し、Bのリストボックスに表示させる JavaScriotでは難しいいですか。ご教授いただけないでしょうか 宜しくお願いします <form name=frm method=post action=/beta/index.php> <td align=right> <select name=A size=8 multiple> <option value=""></option> </select> </td> <td align=center> <input type=button value="← 追加" onClick="addItem();"> <p> <input type=button value="戻す →" onClick="delItem();"> <td align=left> <select name=B size=8 multiple> <option>AAAAA</option> <option>BBBBB</option> <option>CCCCC</option> </select> </td> function addItem() { A = document.frm.A; B = document.frm.B; for (var i=0; i<B.options.length; i++) { if (B.options[i].selected) { A[A.options.length] = new Option(B.options[i].text,B.options[i].value); } } } function delItem() { B = document.frm.A; A = document.frm.B; for (var i=0; i<B.options.length; i++) { if (B.options[i].selected) { A[A.options.length] = new Option(B.options[i].text,B.options[i].value); } } }

  • PHP

    HTML文ですが、これをPHPでループで回して無駄なコーディングを直したい。 どうしたらいいですか? <select name="nhour"> <option value="0" <?php if($nhour == '0') echo"selected"; ?>>0</option> <option value="1" <?php if($nhour == '1') echo"selected"; ?>>1</option> <option value="2" <?php if($nhour == '2') echo"selected"; ?>>2</option> <option value="3" <?php if($nhour == '3') echo"selected"; ?>>3</option> <option value="4" <?php if($nhour == '4') echo"selected"; ?>>4</option> <option value="5" <?php if($nhour == '5') echo"selected"; ?>>5</option> </select>

    • ベストアンサー
    • PHP
  • HTMLのSELECTタグの使い方、JSPのセッション格納について

    HTMLのSELECTタグの使い方、JSPのセッション格納について Jspで開発をしております。IE7以上です。 同一画面内でボックスで選択した値をそのままセッションに格納したいのです。 Javascriptで制御したいのですが、なにかいい方法をご存知ですか? <script type="text/javascript"> function test(obj) { with(obj) { form.text1.value = options[selectedIndex].value; } } </script> <SELECT NAME="select1" onchanged="test(this)"> <OPTION VALUE=1>First <OPTION VALUE=2 selected>Second <OPTION VALUE=3touya">Theard </SELECT> またselectedでは初期の表示のみ選べて値の初期値はscript側で設定するのでしょうか? これだとボックスに変化があれば値が取得できるみたいです。 できればボックスをいじらなければ初期表示の値をセッションに格納。 ボックスをいじれば選択した値をセッションに格納。

  • PHP セレクトボックスの値 GET渡し

    PHP初心者です。 大急ぎで対応を要求されていますので皆様のお力添えをよろしくおねがいします。 画面に検索キーとしてのセレクトボックスがあります。 ボタンではなくリンクのonClickで選択された値をGETで渡したいのです。 どのように記述したらよいか教えてください。 検索キーのリストボックス(2012を選択した状態です) <select name="search_orderyear"> <option value="2005" label="2005">2005</option> <option value="2006" label="2006">2006</option> <option value="2007" label="2007">2007</option> <option value="2008" label="2008">2008</option> <option value="2009" label="2009">2009</option> <option value="2010" label="2010">2010</option> <option value="2011" label="2011">2011</option> <option selected="selected" value="2012" label="2012">2012</option> </select> 渡す値をセットしている箇所(xxxは外部function名です) onClick="xxx('pdf.php?orderyear=<!--{$search_ordermonth.value}-->',・・以下省略 としてみましたが、値はわたりませんでした。 上記説明で不足部分があればご指摘ください。 よろしくおねがいいたします。 PHP 5.2.9

    • ベストアンサー
    • PHP
  • phpでの住所の処理について

    初めまして。 まだまだphpを初めて間もないのですが、勉強がてらphpで登録内容の変更フォームを作っています。 ただ、どうしても住所関連の部分で上手く処理が出来ずに悩んでいまして、 よろしければお知恵を拝借できないでしょうか? ↓ココから実際のコード----------------------------------------------------------------- <select name="usaddress" id="usaddress" > <option value="">お住まいの都道府県を選択してください</option> <? for ($i=01;$i<53;$i++) { if(substr($i + 100 , 1 , 2) == $usaddress){ echo '<option value="' . substr($i + 100 , 1 , 2) . '" selected="selected">' . $selectprefecture_set[substr($i + 100 , 1 , 2)] . '</option>' . "\n"; }else{ echo '<option value="' . substr($i + 100 , 1 , 2) . '">' . $selectprefecture_set[substr($i + 100 , 1 , 2)] . '</option>' . "\n"; } } ?> </select> ↑ココまで実際のコード----------------------------------------------------------------- $usaddressには登録者の都道府県コードが入っています。 DBから呼び出して当該ユーザーの都道府県コードが入ってきます。 $selectprefecture_setには、連想配列で都道府県名を突っ込んでいます。 コレを登録内容の変更フォームに組み込むと、 セレクトボックスの中身は表示されるんですが、 DBから取ってきた値がデフォルト値で表示されないのです・・・。 DBからはキチンと値を持ってきているのは確認できていますし、 正直どこが悪いのかすらわかっていません・・・。 宜しくお願い致します。

    • 締切済み
    • PHP