PHP显示表中的交替记录

时间:2014-01-09 14:43:37

标签: php mysql foreach

好的,所以,你们对我的上一期非常有帮助,所以,为什么不再试一次?

我有一个页面,我试图以交替的方式显示表格中的记录(左对齐右对齐)。虽然我知道预处理语句的重要性等等,但我需要在清理代码之前看到它正常工作(称之为我的OCD)。

我在显示任何记录时遇到问题。基本上,我在可滚动的foreach内运行div循环,希望它能获取每条记录并正确显示它们。

思想?

<div style="height:450px; overflow:auto;">
<?php 
//$gID = sprintf("%d", $_GET['gearID']);
$query = "SELECT * FROM GearTable";
$result = mysql_query($query);
$num_rows = mysql_num_rows($result);

/*trick the items into aligning left or right in alternating pattern*/
$x++; 
$align = ($x%2 == 0)? 'left': 'right';

//if rows exist
if ($num_rows > 0)
{
    foreach ($result as $row)
    {
        echo "
                <div style='margin-top:8px;'>
                    <img src='{$row['GearImgLoc']}' width='200' align='left' class='imgGear'>
                    <h2>{$row['GearName']}</h2>
                    <p class='textP'><b>Gear Manufacturer:</b> {$row['GearMFG']}</p>
                    <p class='textP'><b>Gear Description:</b> {$row['GearDesc']}</p>
                    <p><span class='posted'>Date Posted: {$row['DatePosted']} | Posted By: {$row['PostedBy']}</span></p>
                    <p><a href='gear.php?type=edit&id={$row['GearID']}'>Edit</a> | <a href='gear.php?type=delete&id={$row['GearID']}'>Discard</a> |  <a href='preview.php?gearID={$row['GearID']}'>Preview</a></p>
                </div>
            ";  
    }
}
else
{
    echo "No Records Available At This Time";
}
?>
</div>

2 个答案:

答案 0 :(得分:2)

您需要使用mysql_result()来使用结果对象。

例如:

$query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3";
$result = mysqli_query($link, $query);

/* numeric array */
$row = mysqli_fetch_array($result, MYSQLI_NUM);

取自PHP文档。

有关详细信息:http://www.php.net/manual/en/class.mysqli-result.php

仅仅是为了问题:

这是使用MySQL的方式(从PHP 5.5.0开始不推荐使用,因此我建议您尽快转移到MySQLi或PDO):

mysql_connect("localhost", "mysql_user", "mysql_password") or
    die("Could not connect: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    printf("ID: %s  Name: %s", $row[0], $row[1]);  
}

mysql_free_result($result);

答案 1 :(得分:0)

这样的事情会让你朝着正确的方向前进:

foreach ($result as $i => $row) {

     $class_name = ( $i % 2 == 0 ? 'left' : 'right' );