2011-02-02 5 views
0

私は、PHP生成テーブルに表示されるユーザーの仲間をソーシャルネットワーキングサイトにしたいと思っています。これらのサムネイルの下にpalのサムネイルやその他の情報を表示してサムネイルをクリックすると、そのユーザーのプロフィールに移動します。whileループの配列値から正しいuser_idリンクを表示する際の問題

マイコード:

<?php 
//code for displaying all your pals 
$query_pal_array = "SELECT pal_array FROM users WHERE user_id='$user_id'"; 
$pal_array_result = mysql_query($query_pal_array, $connections) or die(mysql_error()); 
$row_pal_array = mysql_fetch_assoc($pal_array_result); 

$pal_array = $row_pal_array['pal_array']; 

$palList = ""; 
if($pal_array !="") 
{ 
    $palArray = explode(",",$pal_array); 
    $palCount = count($palArray); 
} 
else 
{ 
    $palCount = "0"; 
} 
//get pal avatars 
$query_pal_info = "SELECT users.user_id, user_first_name, user_last_name, username, picture_thumb_url, avatar FROM users LEFT JOIN picture ON 
users.user_id = picture.user_id 
AND picture.avatar=1 WHERE users.user_id IN ($pal_array)"; 
$pal_info = mysql_query($query_pal_info , $connections) or die(mysql_error()); 
$totalRows_pal_info = mysql_num_rows($pal_info); 
echo $pal_array; 

echo "\n<table>"; 
$j = 5; 
while ($row_pal_info = mysql_fetch_assoc($pal_info)) 
{ 
    if($j==5) echo "\n\t<tr>"; 
    $thumbnail_user = $row_pal_info['picture_thumb_url'] != '' ? $row_pal_info['picture_thumb_url'] : '../Style/Images/default_avatar.png'; 
    echo "<td width='100' height='100' align='center' valign='middle'><a href = 'user_view.php?user_id2=$pal_array'> 
    <img src='/NNL/User_Images/$thumbnail_user' border='0'/></a></td>\n"; 
    $j--; 
    if($j==0) { 
     echo "\n\t</tr>\n\t<tr>"; 
     $j = 5; 
    } 
} 
if($j!=5) echo "\n\t\t<td colspan=\"$j\"></td>\n\t</tr>"; 
echo "\n</table>"; 
?> 
<table width="500" border="0"> 
    <tr> 
     <td height="20"><div class="heading_text_18"><?php echo $row_user_info ['username']; ?>'s&nbsp;pals <?php echo $palCount ?></div> </td> 
    </tr> 
    <tr> 
     <td class="interactionLinksDiv" align="right" style="border:none;"><a href="#" onclick="return false" 
     onmousedown="javascript: toggleInteractContainers('pal_requests');">Pal Requests</a></td> 
    </tr> 
    <tr> 
     <td height="5"></td> 
    </tr> 
</table> 

私は、配列$ pal_arrayに格納された値をUSER_IDています。これらはpal user_id番号です。サムネイルが表示されると、それらはすべて配列内の最後のuser_idにリンクします。私は間違って何をしています。私はちょうどPHPを学ぶ。

+0

'user_idの値が配列$ pal_arrayに格納されています。 '< - これ。あなたは間違っているのですか? –

+0

ok、それを修正する方法はありますか?私が$ pal_arrayをエコーすると、94,92すなわちuser_id 94と92が得られます.2つのサムネイルは両方ともユーザ94のプロフィールにリンクしています。 –

+0

フィールドではなくテーブルに格納します。 –

答えて

0

Col. Shrapnelと記載されている最初のエラーは、リレーショナルモデルを使用せずに配列を擬似文字列として格納し、Palエンティティを別のuser_userテーブルに格納することです。

2番目のエラーは、WHERE users.user_id IN ($pal_array)のように文字列内の配列を使用することです。最初にコンマで埋め込む必要があります。

echo "<td width='100' height='100' align='center' valign='middle'><a href = 'user_view.php?user_id2=$pal_array'> 
<img src='/NNL/User_Images/$thumbnail_user' border='0'/></a></td>\n"; 

しかし、この:

そして第三に、エラーは、あなたがこれを使用することができないということです

echo "<td width='100' height='100' align='center' valign='middle'><a href = 'user_view.php?user_id2={$row_pal_info['user_id']}'> 
<img src='/NNL/User_Images/$thumbnail_user' border='0'/></a></td>\n"; 

この方法は、IDは、whileループそれぞれにおいて異なるであろう。

+0

ありがとうございます。最初のエラーでは、user_id、usernameなどのテーブルユーザーと、MySQl DBにカンマで区切られたpalのuser_idを格納するpal_arrayという別のフィールドがあります。この情報を取得する正しい方法は何ですか?私は本当にそれを取得していないと思います。私は2番目のエラーを理解しています。あなたの3番目の解決策を試して、それがどうなるか教えてください。私は本当に感謝します –

+0

あなたはこの答えでエラー#1の詳細を得ることができます:http://stackoverflow.com/questions/4874305/problem-with-showing-correct-user-id-link-from-array-values-in -while-loop/4876551#4876551 – Coquevas

1

私は推測していた場合、あなたはサムネイルリンクのURLは、このような何か読みたい:彼らはすべての変数$ pal_arrayの値を使用している、

"user_view.php?user_id2=92" 
"user_view.php?user_id2=93" 
"user_view.php?user_id2=94" 
"user_view.php?user_id2=95" 

が、私が言うことができるものとし、これは、私の知る限り、あなたのURLの一つ一つになるだろう。この

"92,93,94,95" 

のようなルックスを言うことができるように次のようになります。

"user_view.php?user_id2=92,93,94,95" 

修正: すぐに問題を解決するには、そのリストをexplode()してリスト全体ではなく個別に使用する必要があります。ただし、データベースを正しく設定することが重要です。

解決策: あなたの仲間のリストを、ユーザーのフィールドではなく、別のテーブルに保存します。各ユーザーには多くの仲間がいます。それぞれの仲間は、自分のユーザーIDを持つ別のユーザーです。あなたが必要とするのは、あるユーザIDを別のユーザIDに関連付けることだけです。あなたの2つの表は、次のようになります。この設定で

Table: User 
    user_id int; 
    username varchar; 
    email varchar; 
    thumbnail_url varchar; 

Table: User_pals 
    pal_1 int; //user_id of the first user 
    pal_2 int; //user_id of pal of first user 
    pals_confirmed bool; //False or 0 until both friends are in agreement 

、テーブルUser_pals(友情が確認されているかどうかを示すために余分な列で)一緒に2人のユーザーを結合だけで大きな2列のリストです。友人の与えられたユーザーのリストを取得するには、単にこのようなクエリのいくつかになります。

"SELECT pal_2 FROM User_pals WHERE pal_1 = $user_id"; 
"SELECT pal_1 FROM User_pals WHERE pal_2 = $user_id"; 

これはあなたのユーザーの仲間だったuser_idsの素敵なリストを与えるだろう。 (これよりもうまく設計されたテーブル構造があり、1つのクエリしか必要としませんが、あなたはそのアイデアを得ています)。

これはうまくいけば、これは正しい軌道に乗るのに役立ちます。詳細はat w3schools.です。リレーショナル・データベースの構造とデザインのためにグーグル・グーグルを訪れるだけでなく、非常に便利です。

+0

ありがとうJurassic_C。あなたの回答や他の人から、私は自分のデータベースを再構成しなければならない理由がわかります。 –

関連する問題