繁体   English   中英

我如何将数据表用于 Php While 循环

[英]How can i use Datatables for Php While loop

如何在 PHP 的数据表中显示 Select 语句结果。 我使用以下代码显示 Mysql 表中的记录但不起作用。

我试过这个,但没有运气

选择语句

$sql = "SELECT demand.itemid,demand.qty, MIITEM.descr,MIITEM.descr,supplier.suplId,supplier.suplProdCode,supplier.itemId,MIILOC.qStk,MIILOC.qWIP,MIILOC.qRes, MIILOC.qOrd
FROM MIITEM
LEFT JOIN demand
ON MIITEM.itemId=demand.itemId
LEFT OUTER JOIN supplier
ON MIITEM.itemId = supplier.itemId
LEFT OUTER JOIN MIILOC
ON MIITEM.itemId = MIILOC.itemId
WHERE MIITEM.itemId=demand.itemId AND supplier.itemId=demand.itemId";

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

显示记录

echo"<table id='example' class='display' cellspacing='0' width='100%'>
    <thead>
      <tr style='background:#ccc;'>
<th STYLE='WIDTH:50px; padding:7px'>ID</th>
<th STYLE='WIDTH:250px; padding:7px'>Description</th>

<th STYLE='WIDTH:100px; padding:7px'>Supplier#</th>
<th STYLE='WIDTH:200px; padding:7px'>Supplier </th>
<th STYLE='WIDTH:100px; padding:7px'>ON WO</th>
<th STYLE='WIDTH:100px; padding:7px'>Stock</th>
<th STYLE='WIDTH:100px; padding:7px'>WIP</th>
<th STYLE='WIDTH:100px; padding:7px'>Reserve</th>
<th STYLE='WIDTH:100px; padding:7px'>On Order</th>

</tr>   </thead></table>";
if ($result->num_rows > 0) {

    while($row = $result->fetch_assoc()) {
      echo"<table id='example' class='display' cellspacing='0' width='100%'><tbody>
<tr>
 <th STYLE='WIDTH:50px; padding:7px'>"; echo$row["itemid"];echo"</th>
 <th STYLE='WIDTH:250px; padding:7px'>"; echo$row["descr"];echo"</th>
 <th STYLE='WIDTH:100px; padding:7px'>"; echo$row["suplId"];echo"</th>
 <th STYLE='WIDTH:200px; padding:7px'>"; echo$row["suplProdCode"];echo"    </th>";
echo"<th STYLE='WIDTH:100px; padding:7px'>";echo$row["qty"];echo"</th>";
echo"<th STYLE='WIDTH:100px; padding:7px'>";echo$row["qStk"];echo"</th>";
echo"<th STYLE='WIDTH:100px; padding:7px'>";echo$row["qWIP"];echo"</th>";

echo"<th STYLE='WIDTH:100px; padding:7px'>";echo$row["qRes"];echo"</th>";

echo"<th STYLE='WIDTH:100px; padding:7px'>";echo$row["qOrd"];echo"</th>";


echo"</tr></tbody></table>";

这是来自CDN的 Javascript 代码和 CSS 文件,但没有任何变化。

<script type="text/javascript" src="//code.jquery.com/jquery-1.12.3.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/select/1.2.0/js/dataTables.select.min.js"></script>


  <script type="text/javascript">
$(document).ready(function() {
    $('#example').DataTable( {
        select: true
    } );
} );

  </script>

您的标记非常奇怪,看起来您正在为每个$row插入具有相同 ID 的重复表。 有没有任何东西进入用户界面? 使用在线 HTML 有效性检查器检查页面的来源和标记的有效性总是值得的。 根据我对您的需求的了解,我创建了这个片段

if ($result->num_rows > 0) {
    echo "
        <style>
            th, td {
                width: 100px;
                padding: 7px;
            }
            .fifty {
                width: 50px;
            }
            .twohundred {
                width: 200px;
            }
            .twohundredfifty {
                width: 250px;
            }
        </style>
        <table id='example' class='display' cellspacing='0' width='100%'>
            <thead>
                <tr style='background:#ccc;'>
                    <th class='fifty'>ID</th>
                    <th class='twohundredfifty'>Description</th>
                    <th>Supplier#</th>
                    <th class='twohundred'>Supplier </th>
                    <th>ON WO</th>
                    <th>Stock</th>
                    <th>WIP</th>
                    <th>Reserve</th>
                    <th>On Order</th>
                </tr>   
            </thead>
            <tbody>
    ";
    while($row = $result->fetch_assoc()) {
        echo "<tr>";
        echo "    <td class='fifty'>".$row["itemid"]."</td>";
        echo "    <td class='twohundredfifty'>".$row["descr"]."</td>";
        echo "    <td>".$row["suplId"]."</td>";
        echo "    <td class='twohundred'>".$row["suplProdCode"]."</td>";
        echo "    <td>".$row["qty"]."</td>";
        echo "    <td>".$row["qStk"]."</td>";
        echo "    <td>".$row["qWIP"]."</td>";
        echo "    <td>".$row["qRes"]."</td>";
        echo "    <td>".$row["qOrd"]."</td>";
        echo "</tr>";
    }
    echo "
            </tbody>
        </table>
    ";
}

使用缩进检查您的代码总是一个非常好的主意,这样您就可以确保标记的流程是正确的。

希望有帮助。

请试试这个代码

<?php
//you dont need where condition Left join already filter data over all of your tables demand,supplier, MIILOC
$sql = "SELECT demand.itemid,demand.qty, MIITEM.descr,MIITEM.descr,supplier.suplId,supplier.suplProdCode,supplier.itemId,MIILOC.qStk,MIILOC.qWIP,MIILOC.qRes, MIILOC.qOrd
FROM MIITEM
LEFT JOIN demand
ON MIITEM.itemId=demand.itemId
LEFT OUTER JOIN supplier
ON MIITEM.itemId = supplier.itemId
LEFT OUTER JOIN MIILOC
ON MIITEM.itemId = MIILOC.itemId";

$result = $conn->query($sql);
if (!$result) {
 printf("Errormessage: %s\n", $mysqli->error);
 die;
}

$table = "<table id='example' class='display' cellspacing='0' width='100%'>
<thead>
  <tr style='background:#ccc;'>
    <th STYLE='WIDTH:50px; padding:7px'>ID</th>
    <th STYLE='WIDTH:250px; padding:7px'>Description</th>

    <th STYLE='WIDTH:100px; padding:7px'>Supplier#</th>
    <th STYLE='WIDTH:200px; padding:7px'>Supplier </th>
    <th STYLE='WIDTH:100px; padding:7px'>ON WO</th>
    <th STYLE='WIDTH:100px; padding:7px'>Stock</th>
    <th STYLE='WIDTH:100px; padding:7px'>WIP</th>
    <th STYLE='WIDTH:100px; padding:7px'>Reserve</th>
    <th STYLE='WIDTH:100px; padding:7px'>On Order</th>
</tr>   </thead>";

if ($result->num_rows > 0) {
    $table .= "<tbody>";
    while($row = $result->fetch_assoc()) {
      $table .= "
      <tr>
        <th STYLE='WIDTH:50px; padding:7px'>{$row["itemid"]}</th>
        <th STYLE='WIDTH:250px; padding:7px'>{$row["descr"]}</th>
        <th STYLE='WIDTH:100px; padding:7px'>{$row["suplId"]}</th>
        <th STYLE='WIDTH:200px; padding:7px'>{$row["suplProdCode"]}</th>
        <th STYLE='WIDTH:100px; padding:7px'>{$row["qty"]}</th>
        <th STYLE='WIDTH:100px; padding:7px'>{$row["qStk"]}</th>
        <th STYLE='WIDTH:100px; padding:7px'>{$row["qWIP"]}</th>
        <th STYLE='WIDTH:100px; padding:7px'>{$row["qRes"]}</th>
        <th STYLE='WIDTH:100px; padding:7px'>{$row["qOrd"]}</th>
    </tr>";
}
$table .= "</tbody>"
}
$table .= "</table>";

echo $table;

?>
<script type="text/javascript" src="//code.jquery.com/jquery-1.12.3.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/select/1.2.0/js/dataTables.select.min.js"></script>


<script type="text/javascript">
    $(document).ready(function() {
        $('#example').DataTable( {
            select: true
        } );
    } );

</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM