3

PHPで「知っているかもしれない人」スクリプトを作成しました。users(user_id, name, surname, email, profile)と table friends(friends_id, user_one, user_two) の2 つのテーブルがあります。友達の友達である人を選択するために、次のスクリプトを使用します。

<?php

$friends_of_friends = mysql_query(" SELECT u.*
    FROM (SELECT DISTINCT user_one as user_id
    FROM friends
    WHERE user_two IN (SELECT user_one as user_id
        FROM friends
        WHERE user_two = '$session_user_id'
        UNION DISTINCT
        SELECT user_two
        FROM friends
        WHERE user_one = '$session_user_id'
               )
    UNION DISTINCT
    SELECT DISTINCT user_two
    FROM friends
    WHERE user_one IN (SELECT user_one as user_id
              FROM friends
              WHERE user_two = '$session_user_id'
              UNION DISTINCT
              SELECT user_two
              FROM friends
              WHERE user_one = '$session_user_id'
               )
         ) f
         JOIN users u
         ON u.user_id = f.user_id  ORDER BY `surname` ASC ");


while ($run_friends= mysql_fetch_assoc($friends_of_friends)) {
$friend_friend_id = $run_friends['user_id'];


    // friends of my friends that are not my friends
    $check_friend_query = mysql_query("  SELECT friends_id from friends WHERE  (user_one='$session_user_id' AND user_two='$friend_friend_id') OR (user_one='$friend_friend_id' AND user_two='$session_user_id')  ");

        if(mysql_num_rows($check_friend_query) != 1){ 

           $not_friends = mysql_query("SELECT `user_id`, `name`, `surname`, `email`, `profile` FROM `users` WHERE (`user_id`='$friend_friend_id' and `user_id`!='$session_user_id')   ");

           while ($run_not_friends= mysql_fetch_assoc($not_friends)) {                                                  
            $not_friend_id = $run_not_friends['user_id'];
           }

        }//end if

 }//end while

?>

私のコードは正常に動作します。唯一の問題は、このスクリプトを使用して必要なすべての人を取得した後、その数を数えることができないことです。利用した:

$num_of_people=mysql_num_rows($not_friends);
echo"$num_of_people";

私は常に1を取得しています。この人数をどのように数えることができますか(私の友達ではない私の友達の友達)。

4

3 に答える 3

0

シャンカール・ダモダランはこれを正しく使う

$i=0;
while ($run_friends= mysql_fetch_assoc($friends_of_friends)) {
$friend_friend_id = $run_friends['user_id'];


    // friends of my friends that are not my friends
    $check_friend_query = mysql_query("  SELECT friends_id from friends WHERE  (user_one='$session_user_id' AND user_two='$friend_friend_id') OR (user_one='$friend_friend_id' AND user_two='$session_user_id')  ");

        if(mysql_num_rows($check_friend_query) != 1){ 

           $not_friends = mysql_query("SELECT `user_id`, `name`, `surname`, `email`, `profile` FROM `users` WHERE (`user_id`='$friend_friend_id' and `user_id`!='$session_user_id')   ");

           if(mysql_num_rows($not_friends)) i++;
        }//end if

 }//end while

echo $i;
于 2013-09-12T11:30:53.020 に答える
0

$num_of_people=mysql_num_rows($not_friends); echo"$num_of_people";

あなたはそれを間違って印刷しています。それは変数ではなく文字列です。

  • この方法を試してください。

    echo $num_of_people;

于 2013-09-12T11:21:14.793 に答える