Показать ожидающие дни на столе - PullRequest
0 голосов
/ 16 мая 2018

Когда я перехожу на страницу индекса, я хочу, чтобы она показывала в таблице количество ожидающих дней с Обязательной даты до Текущей даты.Это мой index.php, и он выдает ошибку " Неустранимая ошибка: вызов функции-члена fetch_assoc () для логического значения в C: \ xampp \ htdocs \ Material \ index.php в строке 93 "

строка 93 -> while ($ row = $ result-> fetch_assoc ()) {

<?php

/* showing table */

                $sql = "SELECT * FROM main SET PendDays = CURRENT_DATE - RequiredDate ORDER BY ReqstDate DESC"
                    or die("Failed to query database" .mysqli_error());
                $result = $link->query($sql);    

                while ($row = $result->fetch_assoc()) {

                    print "<tr>"; 
                    print "<td >" . $row['ID'] . "</td>";
                    print "<td >" . $row['ReqstDate'] . "</td>";
                    print "<td ><a href=\"ReqOrdNum.php?ReqOrdNum={$row['ReqOrdNum']}\" target=\"_blank\">"  . $row['ReqOrdNum'] . "</a></td>";                    
                    print "<td ><a href=\"Location.php?Location={$row['Location']}\" target=\"_blank\">"  . $row['Location'] . "</a></td>";
                    print "<td ><a href=\"Description.php?Description={$row['Description']}\" target=\"_blank\">"  . $row['Description'] . "</a></td>"; 
                    print "<td >" . $row['Unit'] . "</td>";
                    print "<th >" . $row['Quantity'] . "</th>";
                    print "<th >" . $row['SupQty'] . "</th>";
                    print "<td >" . $row['RequiredDate'] . "</td>";
                    print "<td >" . $row['PendDays'] . "</td>";
                    print "<th >" . $row['BalanceQty'] . "</th>";
                    print "<th >" . $row['Unitprice'] . "</th>";
                    print "<th >" . $row['Totalamount'] . "</th>";
                    print "<td >" . $row['InvcNum'] . "</td>";
                    print "<td >" . $row['GRNNum'] . "</td>";
                    print "<td >" . $row['Remarks'] . "</td>";
                    print "<th ><a href=\"Status.php?Status={$row['Status']}\" target=\"_blank\">"  . $row['Status'] . "</a></th>";
                    print "</tr>"; 

                    }

?> 

Ответы [ 3 ]

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

Попробуйте,

$today = new DateTime();
$sql = "SELECT * FROM main ORDER BY ReqstDate DESC"
        or die("Failed to query database" .mysqli_error());

$result = $link->query($sql);    

while ($row = $result->fetch_assoc()) {
    $date2 = new DateTime($row['RequiredDate']);
    print "<tr>"; 
    print "<td >" . $row['ID'] . "</td>";
    print "<td >" . $row['ReqstDate'] . "</td>";
    print "<td ><a href=\"ReqOrdNum.php?ReqOrdNum={$row['ReqOrdNum']}\" target=\"_blank\">"  . $row['ReqOrdNum'] . "</a></td>";                    
    print "<td ><a href=\"Location.php?Location={$row['Location']}\" target=\"_blank\">"  . $row['Location'] . "</a></td>";
    print "<td ><a href=\"Description.php?Description={$row['Description']}\" target=\"_blank\">"  . $row['Description'] . "</a></td>"; 
    print "<td >" . $row['Unit'] . "</td>";
    print "<th >" . $row['Quantity'] . "</th>";
    print "<th >" . $row['SupQty'] . "</th>";
    print "<td >" . $row['RequiredDate'] . "</td>";
    print "<td >" . $date2->diff($today)->format("%a"); . "</td>";
    print "<th >" . $row['BalanceQty'] . "</th>";
    print "<th >" . $row['Unitprice'] . "</th>";
    print "<th >" . $row['Totalamount'] . "</th>";
    print "<td >" . $row['InvcNum'] . "</td>";
    print "<td >" . $row['GRNNum'] . "</td>";
    print "<td >" . $row['Remarks'] . "</td>";
    print "<th ><a href=\"Status.php?Status={$row['Status']}\" target=\"_blank\">"  . $row['Status'] . "</a></th>";
    print "</tr>"; 
}
0 голосов
/ 16 мая 2018

Итак, есть пара проблем: во-первых, в PHP-коде вы проверяете, эквивалентно ли "SELECT ... " истине (так оно и есть) с предложением or die..., которое на самом деле должно быть в операторе $link->query($sql). т.е.

$sql = "SELECT ... ";
$result = $link->query($sql) or die("Failed to query database" .mysqli_error());

Как только вы все сделаете правильно, вы увидите причину ошибки, которую вы видите, в том, что запрос не выполнен, и поэтому $result имеет значение false, а не набор результатов.

Это приводит к другой проблеме - вашему запросу. SET нет места в SELECT. Что вы, вероятно, хотите, это:

$sql = "SELECT *, DATEDIFF(CURDATE(), RequiredDate) AS PendDays FROM main ORDER BY ReqstDate DESC";

Итак, в итоге, измените

$sql = "SELECT * FROM main SET PendDays = CURRENT_DATE - RequiredDate ORDER BY ReqstDate DESC" or die("Failed to query database" .mysqli_error());
$result = $link->query($sql);    

к этому:

$sql = "SELECT *, DATEDIFF(CURDATE(), RequiredDate) AS PendDays FROM main ORDER BY ReqstDate DESC";
$result = $link->query($sql) or die("Failed to query database" .mysqli_error());
0 голосов
/ 16 мая 2018

В вашем запросе SQL есть ошибка.Вот почему следующее утверждение возвращает false:

$result = $link->query($sql); 

Я думаю, вам следует переделать это:

$sql = "SELECT * FROM main SET PendDays = CURRENT_DATE - RequiredDate ORDER BY ReqstDate DESC"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...