处理“do”中的“if”语句

时间:2013-08-14 13:55:53

标签: php mysql if-statement do-while

我正试图让头像在“do”循环中返回。头像来自/user/username/avatar.jpg并链接到用户个人资料,除非头像字段为空,其中它返回链接到用户个人资料的默认头像。

我的代码在搜索时返回相应的配置文件。但是,当循环期间返回并显示3个配置文件时,只有第一个显示头像。另外两个仅显示“alt图像标记”(即用户名)作为配置文件的链接。除了返回的第一条记录外,图像不会出现在任何图像上。

任何帮助都将深表感谢。以下是有问题的代码:

<?php do { ?>
<p><?php if($avatar == NULL)
{
echo '<a href="profile.php?u='.$row_Recordset1['username'].'"><img src="images/avatardefault.jpg" alt="'.$row_Recordset1['username'].'"></a>';
}
else if($avatar != NULL)
{
echo '<a href="profile.php?u='.$row_Recordset1['username'].'"><img src="user/'.$row_Recordset1['username'].'/'.$avatar.'" alt="'.$row_Recordset1['username'].'" style="width:100px; height:100px; margin:10px;"></a>';
} ?>
<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>

编辑添加:

好的......这很奇怪。我在重复场中回应了美元。显然,头像结果757655830.jpg,这是我的表中“avatar”字段中返回的FIRST记录的文件名,显示为EACH记录。对于每个后续记录,它一遍又一遍地重复相同的化身信息,我不知道为什么。每个后续记录中的所有其他信息都是正确的。

3 个答案:

答案 0 :(得分:1)

我个人有这样的事情(我假设您使用数据库中的列设置$avatar,这是我的代码所基于的:

$Recordset1 = mysql_query("QUERY");

while ($Row_Recordset1 = mysql_fetch_assoc($Recordset1)){
    if ($Row_Recordset1['Avatar'] === null){            
        echo '<a href="profile.php?u='.$row_Recordset1['username'].'"><img src="images/avatardefault.jpg" alt="'.$row_Recordset1['username'].'"></a>';
    }elseif ($Row_Recordset1['Avatar'] !== null) {
        echo '<a href="profile.php?u='.$row_Recordset1['username'].'"><img src="user/'.$row_Recordset1['username'].'/'.$avatar.'" alt="'.$row_Recordset1['username'].'" style="width:100px; height:100px; margin:10px;"></a>';
    }

}

如果我假设不正确,请随时纠正我


另一方面,您不应该将mysql_*函数用于新代码。这些函数已经过折旧,将在未来的PHP版本中删除,请查看MySQLi或PDO以获取更新,更安全的API

答案 1 :(得分:0)

我试图缩短整个事情。也许以下内容很有帮助:

<p>
<?php
while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)) {
  $av=$row_Recordset1['avatar'];
  $usrn=$row_Recordset1['username'];
  echo "<a href='profile.php?u=$usrn'><img class='avatar' src='"
       .($av>''?"user/$usr/$av":"images/avatardefault.jpg")."' alt='$usrn'></a>";
} ?>  </p>

while - 循环的上一种形式中,您在第一次填充之前引用了$row_Recordset1 - 数组的元素。现在,while语句来自之前实际循环。

在从该变量中提取头像之前,$avatar===Null的前一个条件现在以否定方式使用并且需要比''更长的字符串。

在我的版本中,我没有包含style属性,而是定义了类avatar,因为格式化应该最好通过CSS部分中的相应样式指令来完成。但这肯定是品味的问题。 ; - )

答案 2 :(得分:-1)

我认为你需要移动内部指针,因为如果我记得很清楚,mysql_fetch_assoc不会移动指针。

使用mysql数据搜索:here

顺便说一句,你应该转移到mysqli或pdo。不推荐使用Mysql库。