[請益] 請問下拉式選單預設為當月的迴圈寫法?

看板PHP作者 (阿湯)時間9年前 (2014/08/04 18:41), 編輯推噓3(3013)
留言16則, 5人參與, 最新討論串1/3 (看更多)
我想要寫一個下拉式選單,是1~12月的下拉式選單,但是預設是當月 於是寫了以下的程式碼 <?php $j= date('m');?> <select name="month"> <option value=<?php if((int)$j==1) echo '1 selected';?>>1</option> <option value=<?php if((int)$j==2) echo '2 selected';?>>2</option> <option value=<?php if((int)$j==3) echo '3 selected';?>>3</option> <option value=<?php if((int)$j==4) echo '4 selected';?>>4</option> <option value=<?php if((int)$j==5) echo '5 selected';?>>5</option> <option value=<?php if((int)$j==6) echo '6 selected';?>>6</option> <option value=<?php if((int)$j==7) echo '7 selected';?>>7</option> <option value=<?php if((int)$j==8) echo '8 selected';?>>8</option> <option value=<?php if((int)$j==9) echo '9 selected';?>>9</option> <option value=<?php if((int)$j==10) echo '10 selected';?>>10</option> <option value=<?php if((int)$j==11) echo '11 selected';?>>11</option> <option value=<?php if((int)$j==12) echo '12 selected';?>>12</option> </select> 月 程式碼執行結果有符合需求,但是我覺得太長,想要用迴圈改寫,於是改成 <?php $j= date('m');?> <select name="month"> <?php for($i=1;$i<=12;$i++){?> <option value=<?php if((int)$j==(int)$i) echo $i.'selected';?>> <?php echo $i;?></option><?php }?></select> 月 結果預設不是選擇當月,而是由"1月"為預設,請問各位高手出了甚麼問題嗎? 該如何改呢? 感激不盡.... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.232.186.92 ※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1407148901.A.DD5.html

08/04 18:47, , 1F
前面 value 的部分 應該就有問題了
08/04 18:47, 1F

08/04 18:50, , 2F
$i <> $j 的時候 value 會是空值
08/04 18:50, 2F

08/04 19:26, , 3F
'selected'前面多一個空白變 ' selected'
08/04 19:26, 3F

08/04 20:44, , 4F
謝謝你們.....但我有一個疑問
08/04 20:44, 4F

08/04 20:44, , 5F
就是我不用迴圈的那個寫法
08/04 20:44, 5F

08/04 20:46, , 6F
當$i不等於$j時, value也會是空值
08/04 20:46, 6F

08/04 20:46, , 7F
但執行結果卻是如我想要的
08/04 20:46, 7F

08/04 20:47, , 8F
高手前輩們,是否覺得奇怪呢?
08/04 20:47, 8F

08/04 20:54, , 9F
你 value 要判斷成立 value 才會有值
08/04 20:54, 9F

08/04 20:55, , 10F
有迴圈跟沒迴圈的程式 都要判段成立 才會有值.....
08/04 20:55, 10F

08/04 21:42, , 11F
不用迴圈的寫法是value=,但空值應該是value=''才對
08/04 21:42, 11F

08/04 21:43, , 12F
所以你只要在if的判斷加上else echo '';就可以了吧
08/04 21:43, 12F

08/04 22:06, , 13F
因為瀏覽器有防呆 所以有時語法錯誤還是能正常顯示
08/04 22:06, 13F

08/04 22:17, , 14F
(int)是多餘的,一個都不需要。
08/04 22:17, 14F

08/04 22:30, , 15F
謝謝cf1064,其實您第一次回答就已經講出我這個程式真
08/04 22:30, 15F

08/04 22:30, , 16F
正的問題
08/04 22:30, 16F
文章代碼(AID): #1JtsDbtL (PHP)
討論串 (同標題文章)
文章代碼(AID): #1JtsDbtL (PHP)