简体   繁体   English

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

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

How can i show Select statement results in the Data-table in PHP.如何在 PHP 的数据表中显示 Select 语句结果。 I have used the following code to display record from Mysql table but not working.我使用以下代码显示 Mysql 表中的记录但不起作用。

I have tried this but no luck我试过这个,但没有运气

Select Statement选择语句

$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);

Displaying Records显示记录

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>";

Here is the Javascript code and the CSS file from CDN but nothing is changing.这是来自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>

Your markup was very odd, it looked like you were inserting duplicate tables, with the same ID, for each $row .您的标记非常奇怪,看起来您正在为每个$row插入具有相同 ID 的重复表。 Did anything go into the UI at all?有没有任何东西进入用户界面? It's always worthwhile to check both the source of the page and also the validity of the markup using an online HTML Validity checker.使用在线 HTML 有效性检查器检查页面的来源和标记的有效性总是值得的。 From what I understand of your needs I've created this snippet :根据我对您的需求的了解,我创建了这个片段

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>
    ";
}

It's also always a really good idea to check your code using indents so that you can ensure that the flow of the markup is correct.使用缩进检查您的代码总是一个非常好的主意,这样您就可以确保标记的流程是正确的。

Hope that helps.希望有帮助。

Please try this code请试试这个代码

<?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