2014-12-26 2 views
-2

Я попытался сделать поисковую систему, чтобы искать между двумя датами $ dateFrom до $ dateTo.
Вот то, что я попробовал .:PHP - Поиск не работает

Index.php:

<?php 
    require_once 'Connection.simple.php'; 
    $tutorialTitle = "Using Ajax to search a Record with PHP, MySQL and jQuery (Look and Feel by Bootstrap)"; 

    $conn = dbConnect(); 
?> 
<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="UTF-8" /> 
     <title><?php echo $tutorialTitle;?></title> 
     <meta http-equiv="X-UA-Compatible" content="IE=9" /> 
     <meta name="copyright" content="BEHSTANT SOFTWARE | Datasoft Engineering 2013"/> 
     <meta name="author" content="Reedyseth"/> 
     <meta name="email" content="ibarragan at behstant dot com"/> 
     <meta name="description" content="<?php echo $tutorialTitle;?>" /> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
     <link rel=stylesheet href="css/style01.css"> 
     <!-- Bootstrap --> 
     <link href="css/bootstrap.min.css" rel="stylesheet"> 
    </head> 
    <body> 
     <div class="wrapper"> 
      <div class="page-header "> 

       <div class="panel panel-default"> 

       </div> 
      </div> 

      <div class="mainContent"> 
       <form class="form-horizontal" role="form" method="get"> 
        <div class="form-group"> 
         <label class="col-sm-2 control-label" for="minimum date">employee_id</label> 
         <div class="input-group col-sm-9"> 
          <input id="DateFrom" name="DateFrom" type="date" class="form-control" placeholder="Type the name" /> 
          <input id="DateTo" name="DateTo" type="date" class="form-control" placeholder="Type the name" /> 
          <span class="input-group-btn"> 
            <button type="button" class="btn btn-default btnSearch"> 
             <span class="glyphicon glyphicon-search"> Search</span> 
            </button> 
          </span> 
         </div> 
        </div> 
       </form> 
       <div class="col-sm-2"></div> 
       <div class="col-sm-8"> 
       <!-- This table is where the data is display. --> 
        <table id="resultTable" class="table table-striped table-hover"> 

         <tbody></tbody> 
        </table> 
       </div> 
      </div> 
     </div> 
    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> 
    <script src="js/jquery-1.10.2.js"></script> 
    <!-- Include all compiled plugins (below), or include individual files as needed --> 
    <script src="js/bootstrap.min.js"></script> 
    <script type="text/javascript"> 
     jQuery(document).ready(function($) { 
      $('.btnSearch').click(function(){ 
       makeAjaxRequest(); 
      }); 

      $('form').submit(function(e){ 
       e.preventDefault(); 
       makeAjaxRequest(); 
       return false; 
      }); 

      function makeAjaxRequest() { 
       $.ajax({ 
        url: 'search.php', 
        type: 'get', 
        DateFrom: {DateFrom: $('input#DateFrom').val()}, 
        DateTo: {DateTo: $('input#DateTo').val()}, 
        success: function(response) { 
         $('table#resultTable tbody').html(response); 
        } 
       }); 
      } 
     }); 
    </script> 
    </body> 
</html> 

search.php:

<?php 

    require_once 'Connection.simple.php'; 
    $conn = dbConnect(); 
    $OK = true; 
    if (isset($_GET['DateFrom']) && isset($_GET['DateTo'])) {  
    $dateFrom = $_GET['DateFrom']; 
    $dateTo = $_GET['DateTo']; 


    $sql = "SELECT * FROM attendance WHERE date >= '". $dateFrom ."' AND date <= '". $dateto ."' "; 
    } 
    if(empty($rows)) { 
     echo "<tr>"; 
      echo "<td colspan='4'>There were not records</td>"; 
     echo "</tr>"; 
    } 

    else { 
     foreach ($rows as $row) { 
      echo "<tr>"; 
       echo "<td>".$row['emp_id']."</td>"; 
       echo "<td>".$row['Date']."</td>"; 
       echo "<td>".$row['day']."</td>"; 
       echo "<td>".$row['time_in']."</td>"; 
       echo "<td>".$row['time_out']."</td>"; 
       echo "<td>".$row['worked']."</td>"; 
       echo "<td>".$row['overtime']."</td>"; 
       echo "<td>".$row['less_hours']."</td>"; 
       echo "<td>".$row['transport_in']."</td>"; 
       echo "<td>".$row['Transport_out']."</td>"; 


      echo "</tr>"; 
     } 
    } 

?> 

EDIT 1:

$sql = "SELECT * FROM attendance WHERE date >= '". $dateFrom ."' AND date <= '". $dateto ."' "; 
     // we have to tell the PDO that we are going to send values to the query 
     $stmt = $conn->prepare($sql); 
     // Now we execute the query passing an array toe execute(); 
     $results = $stmt->execute(array($dateFrom, $dateTo)); 
     // Extract the values from $result 
     $rows = $stmt->fetchAll(); 
     $error = $stmt->errorInfo(); 

*** *** Я добавил, что для выполнения запроса, но до сих пор нет т рабочее ******

<?php 
function dbConnect(){ 
    $conn = null; 
    $host = 'localhost'; 
    $db = 'payroll'; 
    $user = 'root'; 
    $pwd = ''; 
    try { 
     $conn = new PDO('mysql:host='.$host.';dbname='.$db, $user, $pwd); 
     //echo 'Connected succesfully.<br>'; 
    } 
    catch (PDOException $e) { 
     echo '<p>Cannot connect to database !!</p>'; 
     echo '<p>'.$e.'</p>'; 
     exit; 
    } 
    return $conn; 
} 

?> 

******* Это мой код для DBConnection *******

Мое имя базы данных заработной платы и таблица посещаемости.

+0

Вы больше шансов получить помощь, если вы сообщите нам, что конкретно вы ожидаете этот код, чтобы сделать и что это на самом деле. –

+0

Какая ошибка вы получаете? –

+0

Код служит для точного посещений дат. Я ожидаю, что у меня будет 2 текстовых поля (ввода) с одной даты на другую, и когда запрос будет выполнен, таблица получает все столбцы в базе данных между этой датой – akki2401

ответ

0
  1. Необходимо указать параметры внутри кода SQL.
  2. Пожалуйста, используйте правильный регистр для имен колонок. Вы пишете «less_hours», в то время как в вашей базе данных этот столбец называется «Less_Hours». И это дало уведомление: «Неопределенный индекс: less_hours».
  3. Я установил выходной код внутри 1-го if, иначе $rows всегда будет не определен в первый раз.

Этот код работает для меня:

if (isset($_GET['DateFrom']) && isset($_GET['DateTo'])) { 
    $dateFrom = $_GET['DateFrom']; 
    $dateTo = $_GET['DateTo']; 


    $sql = "SELECT * FROM attendance WHERE 
      date >= :date_from AND date <= :date_to "; 

    $stmt = $conn->prepare($sql); 
    // Now we execute the query passing an array toe execute(); 
    $results = $stmt->execute(
         array('date_from' => $dateFrom, 'date_to' => $dateTo)); 
    // Extract the values from $result 
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 

    if(empty($rows)) { 
     echo "<tr>"; 
     echo "<td colspan='4'>There were not records</td>"; 
     echo "</tr>"; 
    } 

    else { 
     foreach ($rows as $row) { 

      echo "<tr>"; 
      echo "<td>".$row['emp_id']."</td>"; 
      echo "<td>".$row['Date']."</td>"; 
      echo "<td>".$row['Day']."</td>"; 
      echo "<td>".$row['Time_In']."</td>"; 
      echo "<td>".$row['Time_Out']."</td>"; 
      echo "<td>".$row['Worked']."</td>"; 
      echo "<td>".$row['Overtime']."</td>"; 
      echo "<td>".$row['Less_Hours']."</td>"; 
      echo "<td>".$row['Transport_In']."</td>"; 
      echo "<td>".$row['Transport_Out']."</td>"; 

      echo "</tr>"; 
     } 
    } 
} 
+0

Сэр Он все еще не работает. Я заменил все, кроме: ** require_once 'Connection.simple.PHP '; $ conn = dbConnect(); $ OK = true; ** – akki2401

+0

@ akki2401 Постарайтесь скорректировать даты: $ dateFrom = '2014-01-01', $ dateTo = '2014-12-31' – user4035

+0

Нет, не работает – akki2401

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