0

我试图让化身在“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)); ?>

编辑添加:

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

4

3 回答 3

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

于 2013-08-14T14:00:22.097 回答
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>

在您以前的 -loop 形式中,您在第一次填充 -array 之前while引用它的元素。$row_Recordset1现在 while 语句出现实际循环之前。

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

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

于 2013-08-14T14:17:44.730 回答
-1

我认为您需要移动内部指针,因为如果我没记错的话,mysql_fetch_assoc 不会移动指针。

使用mysql数据查找:这里

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

于 2013-08-14T14:03:24.290 回答