2016-03-11 53 views
1

我有2個表的:獲得來自用戶表的朋友的個人資料圖片(S)

用戶(ID,用戶名,電子郵件,頭像等);

好友(id,user1,user2,status);

現在我想在我的個人資料頁面上建立我的朋友與那裏頭像的列表。我想對樣4個小時的自己,但我不明白這一點... :(

BTW:這是一個錯誤,我得到

!注意:數組字符串轉換在/ home在線/reduaqi158/domains/reduankurtaj.eu/public_html/snapfriends/vrienden.php 26

這就是我現在所擁有的:

<?php 

    error_reporting(E_ALL); 
    session_start(); 
    $username = $_SESSION['username']; 
    $status = 2; 

    include "includes/conn.php"; 

    $vrienden=mysqli_query($server,"SELECT * FROM vrienden WHERE status='$status' && vriend1='$username' || vriend2='$username' "); 

    $vriend_list = array(); 
     while($row = mysqli_fetch_array($vrienden)) 
     { 
      if ($row['vriend1'] == $username) { 
       $vriend_list[] = $row['vriend2']; 
      } 
      else { 
       $vriend_list[] = $row['vriend1']; 
      } 
     } 

     echo json_encode($vriend_list); 


    $foto=mysqli_query($server,"SELECT prof_pic FROM users WHERE username='$vriend_list['vriend1''vriend2']' "); 
     while($row2 = mysqli_fetch_array($foto)) { 

      echo "<img class='img-rounded' src=assets/profiel/".$row2['prof_pic']." alt='Card image cap'>"; 
     } 

?> 

json_encode輸出:

[「JA」,「阿曼多」]

有人誰可以幫我請:)

回答

1

您最初的做法是非常混亂。

幾乎在您的代碼中的所有內容都可以用單個SQL查詢替代。

您可以使用JOIN得到與他們的化身你所有的朋友一氣呵成:

SELECT u.username as username, u.avatar as avatar,.... <== all columns which you need 
    FROM `friends_table` f <== your friends table 
    JOIN `users_table` u <== your users table 
     ON (f.user1 = u.id) <== notice that i join on user1 column 
    WHERE u.username = '$username' && f.status = '$status' 
UNION 
SELECT u.username as username, u.avatar as avatar,.... <== same columns 
    FROM `friends_table` f <== your friends table 
    JOIN `users_table` u <== your users table 
     ON (f.user2 = u.id) <== notice that i join on user2 column 
    WHERE u.username = '$username' && f.status = '$status' 

通過這個查詢,你選擇誰是你的用戶名$友誼的所有用戶。您需要union,因爲您不知道您的$username所在的字段(user1user2)。

注意:我強烈建議使用預處理語句,而不是僅在SQL查詢中放置'$ var'以防止SQL注入。

執行這個查詢,你可以分析這樣的結果,並顯示化身後:

while($row = mysqli_fetch_array($vrienden, MYSQLI_ASSOC)) 
{ 
    echo "<img class='img-rounded' src=assets/profiel/".$row['avatar']." alt='Card image cap'>"; 
} 

我希望你有這個想法。

+0

我已經改變了一些表名等,但現在我得到一個空白頁:( –

+0

@ReduanKurtaj爲了讓我提供工作解決方案,你需要發佈你的實際數據庫模式:)另外,看看你的錯誤日誌,看看爲什麼你有空白頁面。 – akasummer

0

在while語句必須聲明爲數組的值。像數組[0] =值。以便您知道數組位置0具有一定的值。就像我在下面做的那樣。不知道它是否是這樣的PHP,但在.net中必須聲明一個數組中的值的位置。

while($row = mysqli_fetch_array($vrienden)) 
    { 
     if ($row['vriend1'] == $username) { 
      $vriend_list[0] = $row['vriend2']; 
     } 
     else { 
      $vriend_list[1] = $row['vriend1']; 
     } 
    } 

及以下

$foto=mysqli_query($server,"SELECT prof_pic FROM users WHERE username='$vriend_list['vriend1''vriend2']' "); 

它不應該是$ vriend_list [ 'vriend1']。 $ vriend_list [ 'vriend2']」

你必須使用一個連接字符(在PHP)

+0

在'php'中,您可以通過'$ array [] = $ value'將一個值推送到數組中,所以它不像'.net'。連接也沒有意義。 – akasummer

相關問題