查询从mysql返回到php表不在顶部

时间:2017-07-31 19:36:00

标签: php mysql

我非常擅长使用PHP并尝试使用MySQL数据库中的数据填充表格,但显示的结果遍布整个表格,并且不在表格顶部的相关列中。< / p>

附件是我需要数据的屏幕截图。

Screenshot

这是代码。

感谢任何帮助。

<?php
$server = mysql_connect("xxxx", "xxxx", "xxxxx"); 
  $db = mysql_select_db("xxxxxx", $server); 
  $query = mysql_query("SELECT * FROM stores"); 

?>  


<html>
<head>
<title>Stores Tracker Dashboard</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<p align="center"><font face="Arial"><strong>Stores Tracker Dashboard</strong></font></p>

<table align="center" border="1" width="90%">
<tr>
    <td align="center"><font face="Arial"><strong>Not Started</strong></font></td>
    <td align="center"><font face="Arial"><strong>In Transit</strong></font></td>
    <td align="center"><font face="Arial"><strong>Awaiting Build</strong></font></td>
    <td align="center"><font face="Arial"><strong>Being Built</strong></font></td>
    <td align="center"><font face="Arial"><strong>On Return</strong></font></td>
    <td align="center"><font face="Arial"><strong>Received Back</strong></font></td>
</tr>


<?php

        while ($row = mysql_fetch_array($query)) {?>

<tr>
        <td align="center"><font face="Arial"><?php if ($row['status'] == "Not Started") { echo $row['ticket'], '&nbsp; (', $row['site'], ')'; }?></font></td>
    <td align="center"><font face="Arial"><?php if ($row['status'] == "In Transit") { echo $row['ticket'], '&nbsp; (', $row['site'], ')'; }?></font></td>
    <td align="center"><font face="Arial"><?php if ($row['status'] == "Awaiting Build") { echo $row['ticket'], '&nbsp; (', $row['site'], ')'; }?></font></td>
    <td align="center"><font face="Arial"><?php if ($row['status'] == "Being Built") { echo $row['ticket'], '&nbsp; (', $row['site'], ')'; }?></font></td>
    <td align="center"><font face="Arial"><?php if ($row['status'] == "On Return from CFC2") { echo $row['ticket'], '&nbsp; (', $row['site'], ')'; }?></font></td>
    <td align="center"><font face="Arial"><?php if ($row['status'] == "Received") { echo $row['ticket'], '&nbsp; (', $row['site'], ')'; }?></font></td>
</tr>
<?php  } ?>

2 个答案:

答案 0 :(得分:0)

mysql查询中的每一行(是的,应该替换为PDO等,但与问题没有直接关系)报告一个stores记录的状态。该表旨在报告每行上的几个值 - 每种状态类型之一。有几种方法可以做到这一点。一种方法是为不同的状态代码填充一组数组,然后在完成后打印出数组作为HTML表。像这样:

$notstarted = array();
$intransit = array();
$awaiting = array();
$built = array();
$cfc2 = array();
$received = array();

// Get all the data into the arrays
while ($row = mysql_fetch_array($query)) {
   $data = $row['ticket'] . '&nbsp; (' . $row['site'] . ')';
   if ($row['status'] == "Not Started") { $notstarted[] = $data; };
   if ($row['status'] == "In Transit") { $intransit[] = $data; };
   if ($row['status'] == "Awaiting Build") { $awaiting[] = $data; };
   if ($row['status'] == "Being Built") { $built[] = $data; };
   if ($row['status'] == "On Return from CFC2") { $cfc2[] = $data; };
   if ($row['status'] == "Received") { echo $received[] = $data; };
   };

// Loop through all the arrays at once. # of rows will be max of size of all arrays
for ($i = 0; $i < max(count($notstarted),count($intransit),count($awaiting),count($built),count($cfc2),count($received)); $i++) {
   print "<tr>";
   print "<td align="center"><font face="Arial">";
   if (count($notstarted) > $i) { print $notstarted[$i]; };
   print "</font></td>";
   print "<td align="center"><font face="Arial">";
   if (count($intransit) > $i) { print $intransit[$i]; };
   print "</font></td>";
   print "<td align="center"><font face="Arial">";
   if (count($awaiting) > $i) { print $awaiting[$i]; };
   print "</font></td>";
   print "<td align="center"><font face="Arial">";
   if (count($built) > $i) { print $built[$i]; };
   print "</font></td>";
   print "<td align="center"><font face="Arial">";
   if (count($cfc2) > $i) { print $cfc2[$i]; };
   print "</font></td>";
   print "<td align="center"><font face="Arial">";
   if (count($received) > $i) { print $received[$i]; };
   print "</font></td>";
   print "</tr>";
   };

答案 1 :(得分:0)

这个使用PDO。 请花点时间了解那里发生的事情!

<?php
  $host = "set_hostname_here";
  $daba = "set_database_here";
  $user = "set_loginname_here";
  $pass = "set_password_here";

  $notstarted = array();
  $intransit = array();
  $awaiting = array();
  $built = array();
  $cfc2 = array();
  $received = array();

  try {    
    //open the PDO-connection to a MySQL-host
    $DBH = new PDO("mysql:host=$host;dbname=$daba", $user, $pass);

    //error mode set to EXCEPTION (ERRMODE_SILENT or ERRMODE_WARNING are also possible)
    $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

    //execute the query
    $STH = $DBH->query('SELECT status, ticket, site FROM stores');

    //set default fetch mode to FETCH_ASSOC (if you want to try FETCH_OBJ)
    $STH->setFetchMode(PDO::FETCH_ASSOC);
  }
  catch(PDOException $e) {
    echo $e->getMessage();
  }

  //go through all results and assign them to the related arrays
  while($row = $STH->fetch()) {
    $data = $row['ticket'] . '&nbsp; (' . $row['site'] . ')';
    if ($row['status'] == "Not Started") { $notstarted[] = $data; }
    if ($row['status'] == "In Transit") { $intransit[] = $data; }
    if ($row['status'] == "Awaiting Build") { $awaiting[] = $data; }
    if ($row['status'] == "Being Built") { $built[] = $data; }
    if ($row['status'] == "On Return from CFC2") { $cfc2[] = $data; }
    if ($row['status'] == "Received") { $received[] = $data; }
  }

  //close the connection
  $DBH = null;
?>

<html>
  <head>
    <title>Stores Tracker Dashboard</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  </head>

  <body>
    <p align="center"><font face="Arial"><strong>Stores Tracker Dashboard</strong></font></p>

    <table align="center" border="1" width="90%">
      <tr>
        <td align="center"><font face="Arial"><strong>Not Started</strong></font></td>
        <td align="center"><font face="Arial"><strong>In Transit</strong></font></td>
        <td align="center"><font face="Arial"><strong>Awaiting Build</strong></font></td>
        <td align="center"><font face="Arial"><strong>Being Built</strong></font></td>
        <td align="center"><font face="Arial"><strong>On Return</strong></font></td>
        <td align="center"><font face="Arial"><strong>Received Back</strong></font></td>
      </tr>

      <?php
        for ($i = 0; $i < max(count($notstarted),count($intransit),count($awaiting),count($built),count($cfc2),count($received)); $i++) {
          echo "<tr>";
          echo "<td align=\"center\"><font face=\"Arial\">";
          if (count($notstarted) > $i) echo $notstarted[$i];
          echo "</font></td>";
          echo "<td align=\"center\"><font face=\"Arial\">";
          if (count($intransit) > $i) echo $intransit[$i];
          echo "</font></td>";
          echo "<td align=\"center\"><font face=\"Arial\">";
          if (count($awaiting) > $i) echo $awaiting[$i];
          echo "</font></td>";
          echo "<td align=\"center\"><font face=\"Arial\">";
          if (count($built) > $i) echo $built[$i];
          echo "</font></td>";
          echo "<td align=\"center\"><font face=\"Arial\">";
          if (count($cfc2) > $i) echo $cfc2[$i];
          echo "</font></td>";
          echo "<td align=\"center\"><font face=\"Arial\">";
          if (count($received) > $i) echo $received[$i];
          echo "</font></td>";
          echo "</tr>";
        }
      ?>
    </table
  </body>
</html>

我使用了manassehkatz的答案的例子。 大多数与PDO连接相关的代码几乎都是从tadman给出的链接中复制/粘贴的......

祝你的项目好运。