我有一个奇怪的问题,将查询放入一个html表中,以便在php / mysql设置中显示。查询将始终产生比显示的结果多一个的结果。例如,如果返回了1组结果,则表中不会显示任何内容。如果有5,则仅显示4。我尝试使用预定义函数进行相同的查询,以根据查询生成表,并生成具有正确结果数的正确表。这是一个例子(对于缩进或缺乏的道歉):
$user_id = implode($_SESSION['user_id']);
$query = "SELECT name, address
FROM user
WHERE user_id = '$user_id'
ORDER BY date_added DESC";
$result = mysql_query($query) or die ("query failed: " . mysql_error());
echo "<table border='1' style=\"border-collapse: collapse;\">
<tr style=\"background-color: #000066; color: #FFFFFF;\">
<th>Name</th>
<th>Address</th>
</tr>";
$rowCt = 0; // Row counter
while($row = mysql_fetch_array($result))
{
if($rowCt++ % 2 == 0) $Style = "background-color: #00CCCC;";
else $Style = "background-color: #0099CC;";
echo "<tr style=\"$Style\">";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['address'] . "</td>";
echo "</tr>";
}
echo "</table>";
知道为什么会这样吗?任何帮助将不胜感激,它让我疯狂,需要弄清楚,然后才能继续前进!感谢。
修改的
我稍微修改了它以循环遍历行数,因为该数字是正确的,并且表现在是正确的大小,但最后的结果总是为空。有什么想法吗?
$rowCt = 0; // Row counter
$i = 0;
echo mysql_num_rows($result). ' number of rows';
$num = mysql_num_rows($result);
//while($row = mysql_fetch_array($result))
while ($i < $num)
{
$row = mysql_fetch_array($result);
if($rowCt++ % 2 == 0) $Style = "background-color: #00CCCC;";
else $Style = "background-color: #0099CC;";
echo "<tr style=\"$Style\">";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['address'] . "</td>";
echo "</tr>";
$i++;
}
echo "</table>";
由于
答案 0 :(得分:1)
试试这个.........
<style>
#s {
background-color: #000066;
color: #FFFFFF;
}
#s1 {
background-color: #0CC;
}
#s2 {
background-color: #09C;
}
</style>
<?php
$user_id = implode($_SESSION['user_id']);
$result = mysql_query("SELECT name, address FROM user WHERE user_id = '$user_id' ORDER BY date_added DESC", $your_connection) or die ("query failed: " . mysql_error());
?>
<table border="1" style="border-collapse:collapse;">
<tr id="s">
<th>Name</th>
<th>Address</th>
</tr>
<?php
$rowCt = 0; // Row counter
while($row = mysql_fetch_assoc($result))
{
if($rowCt++ % 2 == 0):
$Style = "s1";
else:
$Style = "s2";
endif;
?>
<tr id="<?php echo $Style; ?>">
<td><?php $row['name']; ?></td>
<td><?php $row['address']; ?></td>
</tr>
<?php } ?>
</table>
答案 1 :(得分:0)
您是否在页面上声明了DOCTYPE
?这是我唯一能想到的。您的代码看起来正确。
注意:如果未指定!DOCTYPE,则border-collapse属性可以 产生意想不到的结果。
http://www.w3schools.com/cssref/pr_tab_border-collapse.asp
此外,您是否已启用警告/错误?最后一行可能有一些错误,这就是它没有显示的原因。
答案 2 :(得分:0)
尝试使用mysql_fetch_assoc
代替mysql_fetch_array
答案 3 :(得分:0)
检查你的$ i和$ num in while循环。 我认为你的时间应该是:
while($i <= $num){
// Your code
}
答案 4 :(得分:0)
试试这个:
<?php
$user_id = $_SESSION['user_id'];
$query = mysql_query("SELECT * FROM `user` WHERE `user_id`='$user_id' ORDER BY `date_added` DESC")or die(mysql_error());
?>
<table border="1" style="border-collapse: collapse;">
<tr style="background-color: #000066; color: #FFFFFF;">
<th>Name</th>
<th>Address</th>
</tr>
<?
$colour2 = "transparent";
$colour1 = "#0099CC";
$row_count = 0;
while($row = mysql_fetch_array($query)){
$rowcolor = ($row_count % 2) ? $colour1 : $colour2;
?>
<tr style="background: <? echo $rowcolor; ?>;">
<td><? echo $row['name']; ?></td>
<td><? echo $row['address']; ?></td>
</tr>
<?
$row_count++;
}
?>
</table>
答案 5 :(得分:0)
你是否尝试过没有桌子的输出?即
echo $row['name']." - ".$row['address']."<br />";
如果是,结果相同,您是否已在phpMyAdmin中应用该查询以检查结果?可能是您的最后一条记录在数据库中为空,因此代码不显示任何内容。
答案 6 :(得分:0)
尝试使用for循环而不是while。
for($i=0;$i<=mysql_num_rows;$i++)
{
$row = mysql_fetch_array($query);
...
...
}
答案 7 :(得分:0)
也许是在计算
<th>Name</th>
<th>Address</th>
当行尝试时,将它们取出。