首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理"do“中的"if”语句

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

Stack Overflow用户
提问于 2013-08-14 21:55:53
回答 3查看 120关注 0票数 0

我正在尝试让头像在"do“循环中返回。头像从/user/username/avatar.jpg中提取并链接到用户配置文件,除非头像字段为空,否则它将返回链接到用户配置文件的默认头像。

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

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

代码语言:javascript
复制
<?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,也就是“头像”字段中的文件名,正在为每条记录显示。它一遍又一遍地为每一条后续记录重复相同的头像信息,我不知道为什么。每个后续记录中的所有其他信息都是正确的。

EN

回答 3

Stack Overflow用户

发布于 2013-08-14 22:00:22

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

代码语言:javascript
复制
$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中查找新的、更安全的应用程序接口

票数 1
EN

Stack Overflow用户

发布于 2013-08-14 22:17:45

我试着把整个过程缩短一点。也许下面的内容会有帮助:

代码语言:javascript
复制
<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-loop表单中,您引用的是首次填充之前的$row_Recordset1-array的元素。现在,while语句出现在实际循环之前。

以前的条件$avatar===Null现在以一种否定的方式使用,并且需要一个比'‘长的字符串才能存在,然后才能从该变量中提取化身。

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

票数 0
EN

Stack Overflow用户

发布于 2013-08-14 22:03:24

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

使用mysql data seek:here

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18233741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档