我怎样才能输出每行6个Sql数据

问题描述:

我的问题是,通过PHP输出的SQL数据显示在一个垂直单列中。我怎样才能输出每行6个Sql数据

我想要的是要显示的数据在6行的行中,然后创建一个新行,显示下一个6,等等。

代码:

<?php # DISPLAY COMPLETE PRODUCTS PAGE. 

# Access session. 
session_start() ; 

# Redirect if not logged in. 
if (!isset($_SESSION[ 'user_id' ])) { require ('login_tools.php') ; load() ; } 

# Set page title and display header section. 
$page_title = 'Shop' ; 
include ('includes/header.html') ; 

# Open database connection. 
require ('..\connect_db.php') ; 

# Retrieve items from 'shop' database table. 
$q = "SELECT * FROM shop" ; 
$r = mysqli_query($dbc, $q) ; 
if (mysqli_num_rows($r) > 0) 
{ 

    # Display body section. 
    echo '<UL> 
     <li><a href="shop_details.php?id=1">View Item</a></li> 
     <li><a href="shop_details.php?id=2">View Item</a></li>   
     <li><a href="shop_details.php?id=3">View Item</a></li> 
    </UL> 
    '; 


    #Displays every item in the store. 
    echo '<table><tr>'; 

$formatting = 0; 
    while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) 
    { 
     echo $formatting; 
     if ($formatting = 6){ 
     echo '<td><strong>' . $row['item_name'] .'</strong><br><span  style="font-size:smaller">'. 
$row['item_desc'] . '</span><br><img src='. $row['item_img'].' height=200px><br>$' . $row['item_price'] . 
'<br><a href="shop_details.php?id='.$row['item_id'].'">View Item</a></td></tr><tr>'; 
     $formatting = 0; 
    } 
    else 
    { 
     echo $formatting; 
     echo '<td><strong>' . $row['item_name'] .'</strong><br><span style="font-size:smaller">'. 
$row['item_desc'] . '</span><br><img src='. $row['item_img'].' height=200px><br>$' . $row['item_price'] . 
'<br><a href="shop_details.php?id='.$row['item_id'].'">View Item</a></td>'; 
     $formatting = $formatting + 1; 
    } 
} 


echo '</tr></table>'; 

    # Close database connection. 
    mysqli_close($dbc) ; 
} 
    # Or display message. 
else { echo '<p>There are currently no items in this shop.</p>' ; } 

    # Create navigation links. 
    echo '<p><a href="cart.php">View Cart</a> | <a href="forum.php">Forum</a> | <a href="home.php">Home</a> | <a href="goodbye.php">Logout</a></p>' ; 

    # Display footer section. 
    include ('includes/footer.html') ; 

    ?> 
+0

SELECT * FROM shop LIMIT 6 –

+0

这个'if($ formatting = 6)'不会做你期望的!您正在分配,而不是比较。应该是'=='或'===' – Jeff

+0

谢谢你的回应。它的工作原理,但只显示数据库的前6项,有没有办法创建另一行显示下一个6? –

尝试下面的代码,这将每六行之后创建新表。你可以相应地做出改变。

<?php # DISPLAY COMPLETE PRODUCTS PAGE. 

# Access session. 
session_start() ; 

# Redirect if not logged in. 
if (!isset($_SESSION[ 'user_id' ])) { require ('login_tools.php') ; load() ; } 

# Set page title and display header section. 
$page_title = 'Shop' ; 
include ('includes/header.html') ; 

# Open database connection. 
require ('..\connect_db.php') ; 

# Retrieve items from 'shop' database table. 
$q = "SELECT * FROM shop" ; 
$r = mysqli_query($dbc, $q) ; 
if (mysqli_num_rows($r) > 0) 
{ 



    # Display body section. 
    echo '<UL> 
     <li><a href="shop_details.php?id=1">View Item</a></li> 
     <li><a href="shop_details.php?id=2">View Item</a></li>   
     <li><a href="shop_details.php?id=3">View Item</a></li> 
    </UL> 
    '; 


    #Displays every item in the store. 
    echo '<table>'; 

$formatting = 0; 
    while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) 
    { 
     echo $formatting; 
    if ($formatting == 5){ 
    echo '</table><table><tr><td><strong>' . $row['item_name'] .'</strong><br><span  style="font-size:smaller">'. 
$row['item_desc'] . '</span><br><img src='. $row['item_img'].' height=200px><br>$' . $row['item_price'] . 
'<br><a href="shop_details.php?id='.$row['item_id'].'">View Item</a></td></tr>'; 
$formatting = 0; 
} 
else 
    { 
     echo $formatting; 
     echo '<tr><td><strong>' . $row['item_name'] .'</strong><br><span style="font-size:smaller">'. 
$row['item_desc'] . '</span><br><img src='. $row['item_img'].' height=200px><br>$' . $row['item_price'] . 
'<br><a href="shop_details.php?id='.$row['item_id'].'">View Item</a></td></tr>'; 
$formatting ++; 
} 
     } 


    echo '</table>'; 

     # Close database connection. 
    mysqli_close($dbc) ; 
    } 
    # Or display message. 
    else { echo '<p>There are currently no items in this shop.</p>' ; } 

    # Create navigation links. 
    echo '<p><a href="cart.php">View Cart</a> | <a href="forum.php">Forum</a> | <a href="home.php">Home</a> | <a href="goodbye.php">Logout</a></p>' ; 

    # Display footer section. 
    include ('includes/footer.html') ; 

    ?> 
+0

我试过了这段代码,它使数据出现在每列只有一个项目的列中。任何想法如何让它在每一行显示更多的项目? –