处理一个“;如果“;在“;做”;


Processing an "if" statement within a "do"

我正试图让化身在"do"循环中返回。化身从/user/username/avatar.jpg中提取并链接到用户简档,除非化身字段为空,在该字段中它返回链接到用户简档的默认化身。

我的代码在搜索时返回适当的配置文件。然而,当在循环期间返回并显示3个简档时,只有第一个简档显示化身。另外两个只显示"alt image标签"(即用户名)作为个人资料的链接。除了返回的第一条记录外,图像不会出现在任何记录上。

如有任何帮助,我们将不胜感激。这是有问题的代码:

<?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)); ?>

编辑后添加:

好的。。。这很奇怪。我在重复字段中重复$avatar。显然,每个记录都会显示头像结果757655830.jpg,这是我表中第一条返回记录的"头像"字段中的文件名。它为每个后续记录一遍又一遍地重复相同的化身信息,我不知道为什么。每个后续记录中的所有其他信息都是正确的。

我个人会有这样的东西(我假设你正在用数据库中的一列设置$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

我试着把整个过程缩短一点。也许以下是有用的:

<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部分中的适当样式指令来完成。但这肯定是一个品味问题

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

使用mysql数据搜索:此处

顺便说一句,你应该转到mysqli或pdo。Mysql库已弃用。

相关文章: