Передача переменной ID на модальную страницу для выполнения фильтра по дате путем включения этой страницы php - PullRequest
0 голосов
/ 22 мая 2018

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

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

Но когда дело доходит до фильтрации по дате, она не удалась.

<?php

   require_once 'dbconfig.php';
  if (isset($_REQUEST['id'],$_POST["From"], $_POST["to"])) {

     $result = '';
    $id = intval($_REQUEST['id'],$_POST["From"], $_POST["to"]);
    $query = "SELECT * FROM history WHERE ID=:id and date BETWEEN '".$_POST["From"]."' AND '".$_POST["to"]."'";
    // 
    $stmt = $DBcon->prepare( $query );
    $stmt->execute(array(':id'=>$id));
    $row=$stmt->fetch(PDO::FETCH_ASSOC);
    extract($row);


    $result .='
    <table class="table table-bordered">
    <tr>
    <th width="10%">Order Number</th>
    <th width="35%">Customer Number</th>
    <th width="40%">Purchased Item</th>
    <th width="10%">Purchased Date</th>
    </tr>';

        while($row = $stmt->fetch(PDO::FETCH_ASSOC))
        {
            $result .='
            <tr>
            <td>'.$row["ID"].'</td>
            <td>'.$row["location"].'</td>
            <td>'.$row["currentStatus"].'</td>
            <td>'.$row["date"].'</td>
            </tr>';
        }

    $result .='</table>';
    echo $result;
}?>

Но это работает так:

<?php

require_once 'dbconfig.php';

  if (isset($_REQUEST['id'])) {


    $id = intval($_REQUEST['id']);
    $query = "SELECT * FROM history WHERE ID=:id";
    $stmt = $DBcon->prepare( $query );
    $stmt->execute(array(':id'=>$id));
    $row=$stmt->fetch(PDO::FETCH_ASSOC);
    extract($row);

}

?>
<div id="purchase_order">
                                                <table class="table table-bordered">
                                                <tr>
                                                <th width="10%">ID</th>
                                                <th width="20%">Location</th>
                                                <th width="20%">Status</th>
                                                <th width="10%">Date</th>

                                                </tr>
                                                <?php
                                                // while($row= mysqli_fetch_array($sql))
                                                // {
                                                while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
                                                    ?>
                                                    <tr>
                                                    <td><?php echo $row["ID"]; ?></td>
                                                    <td><?php echo $row["location"]; ?></td>
                                                    <td><?php echo $row["currentStatus"]; ?></td>
                                                    <td><?php echo $row["date"]; ?></td>

                                                    </tr>


                                                    <?php
                                                }
                                                ?>

1 Ответ

0 голосов
/ 22 мая 2018

Мне кажется, проблема в том, что вы используете date в своем SQL.

<?php
require_once 'dbconfig.php';

// enable error reporting
error_reporting(E_ALL);
ini_set('display_errors', 1);

if (isset($_REQUEST['id'], $_POST['From'], $_POST['to'])) {
    $result = '';

    // intval() only has 2 arguments
    $id = intval($_REQUEST['id']);
    $from = $_POST['From'];
    $to = $_POST['to'];

    // more likely the problem: date is a reserved word in MySQL -- so wrap it in backquotes

    // also, use placeholders for From and To
    $query = "SELECT * FROM history WHERE ID = ? AND `date` BETWEEN ? AND ?";

    $stmt = $DBcon->prepare($query);
    $stmt->execute([$id, $from, $to])); // simplified
    $row = $stmt->fetch(PDO::FETCH_ASSOC);

    // unnecessary and dangerous
    //extract($row);

    $result .= '
        <table class="table table-bordered">
            <tr>
                <th width="10%">Order Number</th>
                <th width="35%">Customer Number</th>
                <th width="40%">Purchased Item</th>
                <th width="10%">Purchased Date</th>
            </tr>';

    // you already fetched the row - no need to do it again
    if ($row) {
        $result .= '
            <tr>
                <td>'.$row["ID"].'</td>
                <td>'.$row["location"].'</td>
                <td>'.$row["currentStatus"].'</td>
                <td>'.$row["date"].'</td>
            </tr>';
    }

    $result .= '</table>';
    echo $result;
}
?>

Полезные ссылки:

...