簡體   English   中英

在“ do”內處理“ if”語句

[英]Processing an “if” statement within a “do”

我正在嘗試讓化身在“ do”循環內返回。 該化身從/user/username/avatar.jpg中提取並鏈接到用戶個人資料,除非化身字段為null,在該字段中,它返回一個默認的化身,該默認化身鏈接到用戶個人資料。

我的代碼在搜索時返回了適當的配置文件。 但是,在循環期間返回並顯示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(這是我表中用於返回的FIRST記錄的文件中“化身”字段中的文件名)正顯示在EACH記錄中。 對於每條后續記錄,它會一遍又一遍地重復相同的頭像信息,但我不確定為什么。 每個后續記錄中的所有其他信息都是正確的。

我個人有這樣的事情(我假設您正在使用數據庫中的列設置$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 -loop的先前形式中,您在第一次填充$row_Recordset1的元素之前對其進行引用。 現在,while語句位於實際循環之前

$avatar===Null的以前條件現在以否定方式使用,並且需要從該變量中提取化身之前,存在比''長的字符串。

在我的版本中,我沒有包括style屬性,而是定義了類avatar因為格式設置最好通過CSS部分中的適當style指令完成。 但這肯定是一個品味問題。 ;-)

我認為您需要移動內部指針,因為如果我記得很好,mysql_fetch_assoc不會移動指針。

使用mysql數據查找: 這里

順便說一句,您應該轉到mysqli或pdo。 不建議使用Mysql庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM