繁体   English   中英

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

[英]How can I arrange this code so I can get different entry from database for each table row

我希望数据库的每个不同记录都显示在每个表行上,但是我无法为每个行和列检索不同的记录。 请给我建议,我可以在哪里粘贴而不是while块,这样对于每一行和每一列它都会给出不同的结果。

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

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

?>

不确定我是否完全理解您要完成的任务,请尝试执行此操作。

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

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

$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

暂无
暂无

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

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