[英]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
位於哪個字段( user1
或user2
)。
注意:我強烈建議使用准備好的語句,而不是僅僅將 '$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.