Re: [心得] 關於時間日期加減的方法
※ 引述《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
02/01 09:49, 1F
→
02/01 09:49, , 2F
02/01 09:49, 2F
→
02/01 09:49, , 3F
02/01 09:49, 3F
→
02/01 09:50, , 4F
02/01 09:50, 4F
→
02/01 09:52, , 5F
02/01 09:52, 5F
推
02/01 10:08, , 6F
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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 11 之 11 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章