如何安排此代码,以便我可以从每个表行的数据库中获取不同的条目

时间:2014-07-07 06:05:00

标签: php mysql sql for-loop html-table

我希望每个表行显示每个不同的数据库记录,但是我无法为每个行和列检索不同的记录。请给我一些建议,我可以粘贴而不是阻止,因此它会为每一行和每列提供不同的结果。

<?php
  $dbhost = 'localhost';
  $dbuser = 'root';
  $dbpass = '';
  $rec_limit = 10;
  $scriptname=$_SERVER['PHP_SELF'];

  $conn = mysql_connect($dbhost, $dbuser, $dbpass);
  if(! $conn )
  {
     die('Could not connect: ' . mysql_error());
  }
  mysql_select_db('online_shopping');   // include your code to connect to DB.

 $tbl_name="mobile_db";     //your table name
 $start = 0;
 $limit = 5; 
 $sql = "SELECT id,company,model,price,availability,image FROM $tbl_name LIMIT $start,  $limit";
 $result = mysql_query($sql);
 while($row = mysql_fetch_array($result))
                        {
                            $company=$row['company'];
                            $model=$row['model'];
                            $available=$row['availability'];
                            $price=$row['price'];

                        }
 echo "<table border='2'>";
 $j = 0;
 for($j = 0; $j<5; $j++)
 {
  echo "<tr>";
  for($i = 0; $i<3; $i++)
  {
    echo "<td>";
    echo "<table border='2'>";
        echo "<tr>";
            echo "<td><img src='abc.jpg' height='250' width='250'/></td>";
        echo "</tr>";
        echo "<tr>";
            echo "<td>";
                echo "<table border='2'>";
                    echo "<tr>";
                    echo "<td><b>Brand : </b></td>";
                    echo '<td>'.$company.'</td>';
                    echo "</tr>";
                    echo "<tr>";
                    echo "<td><b>Model : </b></td>";
                    echo '<td>'.$model.'</td>';
                    echo "</tr>";
                    echo "<tr>";
                    echo "<td><b>Availability : </b></td>";
                    echo '<td>'.$available.'</td>';
                    echo "</tr>";
                    echo "<tr>";
                    echo "<td><b>Price : </b></td>";
                    echo '<td>'.$price.'</td>';
                    echo "</tr>";
                echo "</table>";
            echo "</td>";
        echo "</tr>";
    echo "</table>";
    echo "</td>";
    }
   echo "</tr>";
   }
  echo "</table>";
  ?>

3 个答案:

答案 0 :(得分:1)

在你的while循环中,你总是重写相同的变量,循环后你只保存了最后一条记录。

在循环中,您必须将记录保存到数组中。

在您的代码中,您有嵌套表,但在第一个中,只有一行和一个表单元格包含另一个表。我只使用嵌套表。

<?php

...
$result = mysql_query($sql);
$data = array();

while($row = mysql_fetch_array($result)) {
    $data[] = $row;
}

if (count($data) > 0) {
    echo '<table>';
    foreach ($data as $row) {
        echo '<tr>';
            echo '<td>Brand: ' . $row['company'];
            echo '<td>Model: ' . $row['model'];
            echo '<td>Availability: ' . $row['availability'];
            echo '<td>Price: ' . $row['price'];
    }
    echo '</table>';
} else {
    echo 'no records';
}

?>

答案 1 :(得分:1)

不确定我是否完全理解你想要完成的事情,但试试这个。

<?php
  $dbhost = 'localhost';
  $dbuser = 'root';
  $dbpass = '';
  $rec_limit = 10;
  $scriptname=$_SERVER['PHP_SELF'];

  $conn = mysql_connect($dbhost, $dbuser, $dbpass);
  if(! $conn )
  {
     die('Could not connect: ' . mysql_error());
  }
  mysql_select_db('online_shopping');   // include your code to connect to DB.

 $tbl_name="mobile_db";     //your table name
 $start = 0;
 $limit = 5; 
 $sql = "SELECT id,company,model,price,availability,image FROM $tbl_name LIMIT $start,  $limit";
 $result = mysql_query($sql);

  echo "<table border='2'>";
  while($row = mysql_fetch_array($result))
                        {
                            echo "<tr>";
                            echo  "<td>".$row['company']."</td>";
                            echo  "<td>".$row['model']."</td>";
                            echo  "<td>".$row['availability']."</td>";
                            echo  "<td>".$row['price']."</td>";
                            echo "</tr>";

                        }
  echo "</table>";
?>

答案 2 :(得分:1)

您需要将表格行移动到取道循环中,或将行存储在数组中。我简化了表格以使示例更清晰:

$result = mysql_query($sql);
if (!$result) {
  /* Error */
}

echo '<table>';

while ($row = mysql_fetch_array($result)) {
  echo '<tr><td><img src="', htmlspecialchars ($row['image']), '">';
  echo '<tr><td><table>';
  echo '  <tr><th>Brand<td>',        htmlspecialchars ($row['company']);
  echo '  <tr><th>Model<td>',        htmlspecialchars ($row['model']);
  echo '  <tr><th>Availability<td>', htmlspecialchars ($row['availability']);
  echo '  <tr><th>Price<td>',        htmlspecialchars ($row['price']);
  echo '  </table>';
}

echo "</table>\n";

关于代码的一些注释:

  • 测试mysql_query()的返回值。查询可能会失败。
  • 使用htmlspecialchars()转义输出。
  • 您应该使用<th>元素作为标题并设置样式,而不是使用内联<b>元素。
  • 我添加了$row['image']的输出,这可能无法达到你想要的效果。
  • 并且使用已弃用的mysql扩展名。请改用PDOmysqli