簡體   English   中英

從用戶表中獲取朋友的個人資料圖片

[英]Get friends profile picture(s) from user table

我有2張桌子:

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

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

現在我想在我的個人資料頁面上建立一個我有頭像的朋友列表。 我自己嘗試了大約 4 個小時,但我不明白...... :(

順便說一句:這是我得到的錯誤!

注意:第 26 行 /home/reduaqi158/domains/reduankurtaj.eu/public_html/snapfriends/vrienden.php 中的數組到字符串轉換

這就是我現在所擁有的:

<?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","amando"]

有人可以幫助我請:)

您最初的方法非常令人困惑。

代碼中的幾乎所有內容都可以由單個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'

通過此查詢,您可以選擇與您的 $username 為好友的所有用戶。 您需要union因為您不知道您的$username位於哪個字段( user1user2 )。

注意:我強烈建議使用准備好的語句,而不是僅僅將 '$var' 放在SQL查詢中以防止 SQL 注入。

執行此查詢后,您可以通過以下方式解析結果並顯示頭像:

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

我希望你有這個想法。

在您的 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 中的 .)

暫無
暫無

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

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