我正试图让头像在“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记录。对于每个后续记录,它一遍又一遍地重复相同的化身信息,我不知道为什么。每个后续记录中的所有其他信息都是正确的。答案 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库。