Re: [心得] 關於時間日期加減的方法

看板PHP作者 (肯先生)時間17年前 (2009/02/01 03:34), 編輯推噓2(206)
留言8則, 2人參與, 最新討論串11/11 (看更多)
※ 引述《idcomputer (順)》之銘言: : ※ 引述《KC73 (肯先生)》之銘言: : : 在下不是高手也不大, 所以就不用那麼客氣了。 : : 針對問題回答的話, 大概會長這個樣子, 參考看看~ : : (這個檔案叫做 t.php) : : <?php : : if (!empty($_POST)) { : : unset($sql); : : foreach($_POST['c'] as $d1) { : : $d2 = explode(",",$d1); 注意 , 的位置 : 這邊是指先將字串分割 : 分割出來應該是 : 2009-02-09#1 : 2009-02-16#1 : 2009-02-23#1 : 2009-03-02#1 : 2009-03-09#1 因為 "...,2009-03-02#1,2009-03-09#1,", 所以這邊會有個 null。 可以在 $d2 = ... 下一行, 加一個 var_dump($d2); 看看。 : 2009-02-09#2 : 2009-02-16#2 : 2009-02-23#2 : 2009-03-02#2 : 2009-03-09#2 : 的陣列 : : foreach($d2 as $d3) { : : if (!empty($d3)) { : : $d4 = explode("#",$d3); : 此部分是只說將字串在進行分割為前後兩半嗎?!?! : $d4[0]指的是前段 : $d4[1]指的是後段 : 所以就會將其分為 : EX : 2009-03-09-1 是的, 然後前段的日期, 再交給 PHP 的 strtotime() 讀一遍, 確定它是日期, 後面的整數, 交給 int 去處理, 確定會是一個數字。 : 不過有一點想再請教您的是 : 如果兩個核取方塊都勾選的情況下送出的話 : INSERT INTO class (c) : VALUES : ('2009-02-09-1'),('2009-02-16-1'),('2009-02-23-1'), : ('2009-03-02-1'),('2009-03-09-1'), : ('1970-01-01-0') : ^^^^^^^^^^^^^^^^ : 第二個核取方塊的日期卻有了些錯誤 : 而後面應該接的尾數本來是2也變成0了 喔~ 那應該是割到一個空字串。 echo date("Y-m-d",strtotime("")); 會顯示 1970-01-01。 echo (int) ""; 會顯示 0。 : 想請教您問題是出在哪邊呢!? : 非常感謝您讓我又學到了不少~~~感恩^^~~ : : $sql[] = "('".date("Y-m-d",strtotime($d4[0])). : : "-".(int) $d4[1]."')"; 可以加一個檢查, 如果割出來 $d4[0] 或 $d4[1] 是空的, 就跳過去。 可是之前已經有個 if (!empty($d3)) 檢查了, 為何還有空字串會跑來? 試著自己 debug 看看吧! 可以在之前加個 var_dump($d3), 看看傳給那 個 if 判斷的到底是什麼東西. 不過話說回來, 這個檢查還是必要的, 看一下傳過來的日期和節是不是 合理的。 不要信任 $_POST、$_GET、$_REQUEST 傳過來的東西, 要把風險控制在 可以忍受的範圍之內。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.134.24

02/01 09:49, , 1F
剛剛檢查了一下~~只勾選第一個的話是OK的,日期無誤
02/01 09:49, 1F

02/01 09:49, , 2F
但勾選第二個的時候,var_dump($d2);顯示的是
02/01 09:49, 2F

02/01 09:49, , 3F
array(1) { [0]=> string(3) "1-2" }
02/01 09:49, 3F

02/01 09:50, , 4F
var_dump($d3);顯示的是string(3) "1-2"
02/01 09:50, 4F

02/01 09:52, , 5F
在有勾選的情況下,前面的時間怎麼會變成 1 ORZ哭~~
02/01 09:52, 5F

02/01 10:08, , 6F
非常抱歉~~是我自己搞錯了~~it works~~
02/01 10:08, 6F

02/01 10:09, , 7F
因為勾選錯核取方塊才會有這樣的問題發生,抱歉勒
02/01 10:09, 7F

02/01 19:02, , 8F
嗯~ 恭喜你囉!
02/01 19:02, 8F
文章代碼(AID): #19XAUuae (PHP)
討論串 (同標題文章)
文章代碼(AID): #19XAUuae (PHP)