2013-10-21 5 views
0

Я работаю над WPF, где у меня есть два датпикера, когда я пытаюсь получить информацию о диапазоне дат, он отображает только одну запись на всех датах (одна и та же запись отображается несколько раз, например: дата выбранный с 01/10/2013 - 3/10/2013), где у меня есть 3 разных записи в каждый день, но мой вывод - это первая запись, отображаемая 3 раза с теми же датами и временем.извлекать данные на основе диапазона дат, используя mysql, php

function cpWhitelistStats() { 
    $startDate = $_POST['startDate']; 
    $startDateTime = "$startDate 00:00:00"; 
    $endDate = $_POST['endDate']; 
    $endDateTime = "$endDate 23:59:59"; 
    $cpId = $_POST['id']; 
    $cpName = etCommonCpNameById($cpId); 

    print "<h2 style=\"text-align: center;\">Permitted Vehicle Summary</h2>"; 
    print "<h2 style=\"text-align: center;\">for $cpName</h2>"; 
    $tmpDate = explode("/", $startDate); 
    $startYear = $tmpDate[2]; 
    $startMonth= $tmpDate[1]; 
    $startDay = $tmpDate[0]; 
    $tmpDate = explode("/", $endDate); 
    $endYear = $tmpDate[2]; 
    $endMonth= $tmpDate[1]; 
    $endDay = $tmpDate[0]; 

    $startDateTime = "$startYear-$startMonth-$startDay 00:00:00"; 
    $endDateTime = "$endYear-$endMonth-$endDay 23:59:59"; 

    $custId = $_SESSION['customerID']; 
    $realCustomerId = $_SESSION['realCustomerId']; 

    $maxVal = 0; 

    if ($custId != "") { 
     $conn = &newEtConn($custId); 
     // Get the whitelist plates 
     $staticWhitelistArray = etCommonMkWhitelist($conn, $cpId); 
     array_shift($staticWhitelistArray); 

     $startLoopDate = strtotime($startDateTime); 
     $endLoopDate = strtotime($endDateTime); 
     $oneDay = 60 * 60 * 24; 

     // Get the entries 
     $plateList = array_keys($staticWhitelistArray); 
     $plate_lookup = implode('","', $plateList); 
     $sql = "SELECT plate, entry_datetime, exit_datetime FROM stats WHERE plate IN (\"$plate_lookup\") AND entry_datetime > \"$startDateTime\" AND entry_datetime < \"$endDateTime\" AND carpark_id=\"$cpId\" "; 
     $result = $conn->Execute($sql); 
     if (!$result) { 
      print $conn->ErrorMsg(); 
      exit; 
     } 
     $rows = $result->fields; 
     if ($rows != "") { 
      unset($myArray); 
      foreach($result as $values) { 
       $plate = $values['plate']; 
       $new_platelist[] = $plate; 
       $inDateTime = $values['entry_datetime']; 
       $outDateTime = $values['exit_datetime']; 
       $tmp = explode(' ', $inDateTime); 
       $inDate = $tmp[0]; 
       $in_ts = strtotime($inDateTime); 
       $out_ts = strtotime($outDateTime); 
       $duration = $out_ts - $in_ts; 
       $dur_array = intToDateArray($duration); 
       $dur_string = ''; 
       if ($dur_array['days'] > 0) { 
        $dur_string .= $dur_array['days'] . ' days '; 
       } 
       if ($dur_array['hours'] > 0) { 
        $dur_string .= $dur_array['hours'] . ' hours '; 
       } 
       if ($dur_array['mins'] > 0) { 
        $dur_string .= $dur_array['mins'] . ' minutes '; 
       } 
       if ($dur_array['secs'] > 0) { 
        $dur_string .= $dur_array['secs'] . ' secs '; 
       } 
       $myArray[$plate][] = array($inDateTime, $outDateTime, $inDate, $dur_string); 
      } 
     } 

     while ($startLoopDate < $endLoopDate) { 
      $dayString = strftime("%a, %d %B %Y", $startLoopDate); 
      $dayCheck = strftime("%Y-%m-%d", $startLoopDate); 

      print "<h2>$dayString</h2>"; 
      print "<table width=\"100%\">"; 
      print " <tr>"; 
      print " <th>VRM</th>"; 
      print " <th>Permit Group</th>"; 
      print " <th>Entry Time</th>"; 
      print " <th>Exit Time</th>"; 
      print " <th>Duration</th>"; 
      print " </tr>"; 
      foreach($new_platelist as $wlPlate) { 
       if ($myArray[$wlPlate][0][2] == $dayCheck) { 
       print "<tr>"; 
       print "<td>$wlPlate</td>"; 
       if (isset($myArray[$wlPlate])) { 
        print "<td>".$staticWhitelistArray[$wlPlate]['groupname']."</td>"; 
        print "<td>".$myArray[$wlPlate][0][0]."</td>"; 
        print "<td>".$myArray[$wlPlate][0][1]."</td>"; 
        print "<td>".$myArray[$wlPlate][0][3]."</td>"; 
       } 
       else { 
        print "<td>Vehicle Not Seen</td>"; 
        print "<td>Vehicle Not Seen</td>"; 
        print "<td>Vehicle Not Seen</td>"; 
       } 
       print "</tr>"; 
       } 
      } 
      print "</table>"; 
      $startLoopDate = $startLoopDate + $oneDay; 
     } 
    } 
} 
+0

Вы можете распечатать свою переменную $ sql после ее сборки? Затем попробуйте запустить его в phpmyadmin или эквивалентном, и посмотрите, возникает ли ваша проблема из запроса или вашего php-кода. – mokk

+0

его исходящий из моего кода, но я не могу найти его в порядке, но в нем есть что-то сбой ... Я пытался использовать разные варианты, но все равно не повезло. – preethi

+0

Какой у вас тип даты? Дата, временная метка, varchar, datetime? –

ответ

0

Вы можете повторить этот запрос, чтобы мы могли увидеть, что на самом деле отправляется ...

$sql = " 
SELECT plate 
    , entry_datetime 
    , exit_datetime 
    FROM stats 
WHERE plate IN ('$plate_lookup') 
    AND entry_datetime BETWEEN '$startDateTime' AND '$endDateTime' 
    AND carpark_id= '$cpId'; 
    "; 

(Это не ответ, но я хотел бы использовать дополнительные параметры форматирования)

+0

извлекает данные с нужных дат. но что-то не так с моей функцией. – preethi

+0

есть кто может помочь мне с этим .. – preethi

Смежные вопросы