Загрузка всех данных по умолчанию, затем таблица фильтра с формой - PullRequest
0 голосов
/ 17 октября 2019

У меня есть страница, которая загружает счета для клиентов. Я добавил средство выбора даты для поиска по дате, но когда страница загружается, она не дает никаких данных, пока фильтр не будет применен к форме. Я хочу, чтобы страница сначала загружалась со всеми данными, а затем, если пользователь хочет фильтровать по дате, он может выбрать это.

 <form method='post' action='invoices.php' class='sdate'>



    <div class="sdate">

      <input type="text" name="sdate" placeholder="Start Date" >
    </div>


        <div class="sdate">
      <button type="submit" class="sdatebtn">Submit</button>
    </div>


    </form>

запрос к базе данных

                FROM imw_locations l
                INNER JOIN vzw_invoice i
                ON l.AddressCode=i.ItemCustomerFullName
                WHERE l.owner='" . $owner . " ' AND Txndate='".$sdate."'

Полные данные запроса

<head>


</head>

<?php

session_start();
if (!isset($_SESSION['loggedin'])) {
    header('Location: /index.php');
    exit();
}



?>
<?php 

include "config.php";
$owner = $_SESSION['role'];


$sdate = $_POST['sdate'];
$edate = $_POST['edate'];


?>
<?php include "../../assets/navbar.php" ?>
<div>
<?php echo $sdate;?>
<!----    Date Selections    ---->
 <form method='post' action='invoices.php' class='sdate'>



    <div class="sdate">

    <input type="text" name="sdate" placeholder="Start Date">
    </div>
    <div class="sdate">

    <input type="text" name="edate" placeholder="End Date" >
    </div>


        <div class="sdate">
      <button type="submit" class="sdatebtn">Submit</button>
    </div>


    </form>







<!---- This is the download form ---->
 <form method='post' action='../finance/export/download.php'>
  <input type='submit' value='Export' name='Export'>

  <table class="invoice">
  <thead>
    <tr>

<th>Reference Number</th>
<th>Memo</th>
<th>Trans. Date</th>
<th>Location</th>
<th>Item Amount</th>
<th>Quantity</th>
<th>Vendor</th>

    </tr>
    </thead>
<?php 

     $owner = $_SESSION['role'];
     $query = "SELECT l.AddressCode, 
                l.owner,
                l.City, 
                l.State, 
                l.Zip, 
                i.RefNumber,
                i.memo,
                i.Txndate,
                i.DueDate,
                i.ItemCustomerFullName,
                i.PO_number ,
                i.ItemAmount, 
                i.PO_number,
                i.preorder_,
                i.Quantity,
                i.Vendor,
                i.balance
                FROM imw_locations l
                INNER JOIN vzw_invoice i
                ON l.AddressCode=i.ItemCustomerFullName
                WHERE l.owner='" . $owner . " ' 
                AND Txndate='".$sdate."'


                ";
     $result = mysqli_query($con,$query);
     $user_arr = array();
     while($row = mysqli_fetch_array($result)){
      $ref = $row['RefNumber'];
      $memo = $row['memo'];
      $Txndate = $row['Txndate'];
      $duedate = $row['DueDate'];
      $ItemCustomerFullName = $row['City'];
      $PO_number = $row['PO_number'];
      $ItemAmount = $row['ItemAmount'];
      $preorder_ = $row['preorder_'];
      $Quantity = $row['Quantity'];
      $Vendor = $row['Vendor'];
      $balance = $row['balance'];

   ?>
      <tr>

       <td><?php echo $ref; ?></td>
       <td><?php echo $memo; ?></td>
       <td><?php echo $Txndate; ?></td>
       <td><?php echo $ItemCustomerFullName; ?></td>
       <td><?php echo $ItemAmount; ?></td>
       <td><?php echo $Quantity; ?></td>
       <td><?php echo $Vendor; ?></td>


      </tr>
   <?php
    }
   ?>
   </table>
   <?php 
    $serialize_user_arr = serialize($user_arr);
   ?>
  <textarea name='export_data' style='display: none;'><?php echo $serialize_user_arr; ?></textarea>
 </form>


</div>

1 Ответ

2 голосов
/ 17 октября 2019

Сложно ответить, так как код, который вы разместили, не совпадает с запросом, который вы упомянули выше.

Самое простое решение - установить переменную со строкой и добавить ее, еслидата установлена. Это простое решение, так как вы получаете больше условий, вы можете создать массив и затем сделать implode, но это можно добавить позже. Пример:

$whereClause = "WHERE l.owner = '{$owner}'";
if ( ! empty( $sdate) && $sdate ) {
    $whereClause .= " AND Txndate = '{$sdate}'";
}

Что касается вашего предложения BETWEEN, попробуйте поменять даты. Я предполагаю, что $edate - это дата окончания, а $sdate - это дата начала, а предложение между занимает первую дату.

Также, пожалуйста, прочитайте this . У вас есть четкие примеры дыр в безопасности, большие. Вы принимаете пользовательский ввод и непосредственно вводите его в запрос к БД. Это ОГРОМНАЯ дыра в безопасности, и входные данные должны быть проверены и очищены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...