2017-11-28 12 views
0

私は問題があります。特定の日付範囲に存在し、参加しなかった場合はすべての人をチェックしたかったのです。 しかし、問題は私が私のコードは値がない場合、またはifとelseを使用していない場合の有効期限

かの一の以上の日付が==行に[日付]が、それはすべてのを表示しますされている中で何が起こっているのか、日付範囲内のすべての日付をチェックすることができないんだ IS CHECK

What happens on my code 
#*****************************************# 
Firstname  Day 1  Day 2 Day 3 
Alex   CHECK  CHECK CHECK 
Mori   ----  ----  ----- 
Sansha   CHECK  CHECK CHECK 
#*****************************************# 

そして、これは次のとおりです。ここ

What I wanted to happen 
1. Checks every date if the person attended or not 
2. Display results 

#*****************************************# 
Firstname  Day 1  Day 2 Day 3 
Alex   ----  CHECK CHECK 
Mori   ----  CHECK ----- 
Sansha   CHECK  CHECK ----- 
#*****************************************# 

が、これは非常にネイティブPHP

で、私のコードです
For table header of the table, where date is looping continuously according to date range from $_POST 
    //******************************************************// 

    $start_sub = new DateTime($_POST['start_date']); 
    $end_sub = new DateTime($_POST['end_date']); 

    $interval = $start_sub->diff($end_sub); 
    $result = $interval->days; 

    //*****************************************************// 

for ($x=0; $x <= $result; $x++) { 
    echo "<th>"; 
    echo date('y-m-d', strtotime($_POST['start_date'].'+'.$x.'days')); 
    echo "</th>"; 
} 

この1つは---出席または

for ($i=0; $i <= $result_from_date_interval; $i++) {#start of for loop 

     if ($row['date'] >= date('y-m-d', strtotime($_POST['start_date'].'+'.$i.'days'))) {#start of if condition 
      echo "<td> CHECK </td>"; 
     } 
     else 
     { 
      echo "<td> ---- </td>"; 
     }#end of if else condition 

    }#end of for loop 

Here is my database -- 
#**************************# 
count user_id first_name  date 
    1  a1  Sansha  2017-11-25 
    2  a2  Alex   2017-11-26 
    3  a3  Mori   2017-11-26 
    4  a1  Sansha  2017-11-26 
    5  a2  Alex   2017-11-27 
#**************************# 

私は最後に問題を抱えているなかった人の値をチェックした結果ですループ文。私はこの種のアプローチにあまり慣れていないので、もしあなたが私を助けることができたら、私は非常に感謝しています。

+0

DBテーブルのデータを教えてください。 ($ rowの内容) – Marcus

+0

@Marcus done editing –

+0

カラム 'date'のデータ型は? – Marcus

答えて

0

唯一の問題は、日付を比較していると思います。 $row['date']が同等またはそれ以上、あなたはCHECKを印刷している場合

ので
if($row['date'] >= date('y-m-d', strtotime($_POST['start_date'].'+'.$i.'days'))) 

: あなたはそれをこのように作ります。あなたはそれが

if($row['date'] == date('y-m-d', strtotime($_POST['start_date'].'+'.$i.'days'))) 

[EDIT]

変更するには、日付だけではなく、時間を比較すること

if(date('y-m-d', $row['date']) == date('y-m-d', strtotime($_POST['start_date'].'+'.$i.'days'))) 

と比較(魔女を動作するはずです==等しい)を使用する場合

+0

私が行うと、> == <正確な値を意味するので、すべてのレコードは "---"になります。 "Alex"という名前のデータベースの人物が2017-11-25に参加していないので、> == <**すべて "---" ** @Marcus –

+0

の結果を変更する必要があります。比較する。私は私の答えを更新します。 – Marcus

+0

これは機能します!ありがとう –

関連する問題