将sql结果排序为3列表的最简单方法是什么?

时间:2015-09-23 03:33:01

标签: php html-table

我将包含我的整个“shopping.php”页面代码,以便您知道我来自哪里。

<!DOCTYPE html>
<html>
<head><title>Shopping Page</title>
<style type="text/css">
</style>
<script type="text/javascript">
</script>
</head>
<body> 
    <form name="form1">
    <?php
    if (isset($_GET['cat'])) $cat=$_GET['cat'];
    else $cat = "fx";
    echo $cat;

    //1. Make a connection to the database
    $dbconn = mysqli_connect("localhost","root","","mydatabase1") 
      or die(mysqli_connect_error());
    $sql = "select productid,name,imagefile "
    ."from products "
    ."where categoryid='$cat'";
   echo $sql;


    //2. Run a query against the database
    $result = mysqli_query($dbconn,$sql) 
    or die(mysqli_error($dbconn));

...这就是我希望将结果作为3列表返回的部分:

//3. Return the results
while ($row = mysqli_fetch_row($result))
{
    echo "<a href='order.php?prod=$row[0]'>$row[1]</a><br>";
    echo "<img src='images/products/$row[2]' "
    ."height=200px width =175px><br>";
}

 //4. Release the resources
 mysqli_free_result($result);

//5. Close the connection
mysqli_close($dbconn);
?>
</form>
</body>
</html>

现在我得到了结果,但它只是垂直列出。我尝试了几种不同的方式,但我猜我的小便是最好的。任何帮助将不胜感激。感谢。

2 个答案:

答案 0 :(得分:0)

我看到的只是一个双列表,但你应该制作一个HTML表。 (<br>标签使其垂直)

$count = 0;
echo "<table><tr><th>Name</th><th>Image</th></tr>";
while ($row = mysqli_fetch_row($result))
{
     if($count % 3 == 0){
         echo "<tr>";  //every third image make a new row
     }
     echo "<td><a href='order.php?prod=$row[0]'>$row[1]</a>";
     echo "<img src='images/products/$row[2]' "
     ."height=200px width =175px></td>";
     if($count % 3 == 2){
         echo "</tr>";  //every third image end the row
     }
     $count++;
}
echo "</table>";

同时

如果您使用mysqli或使用PDO,请参阅此参考,因为您应该绑定参数。 How can I prevent SQL injection in PHP?

回复您的评论

添加了一个计数,该计数在每个第三个图像中添加表格行标记。 %是模数运算符,它为你提供除法余数。

答案 1 :(得分:0)

你可以通过多种方式实现这一目标。根据我的说法,使用表是更好的解决方案。但是如果你想要最简单的方法,那就是使用div。使用answered in your other question制作列。使用以下样式:

<style>
.column3 {
    -webkit-column-count: 3; /* Chrome, Safari, Opera */
    -moz-column-count: 3; /* Firefox */
    column-count: 3;
}
</style>

并使用此div

包装您的结果
<div class="column3">
//Your Result
</div>