использование вложенных запросов во вложенных циклах foreach - PullRequest
1 голос
/ 02 апреля 2011

Ладно, после того, как я в течение примерно 2 часов стучу головой о стену, мне нужна помощь.У меня есть запрос, который тянет «комментарии» на основе пользователей «последователей».Подписчики имеют уникальный идентификатор, и, скажем, для простоты использования их идентификаторы равны 4 и 5. Запрос возвращает всех подписчиков, поэтому может быть гораздо больше, чем две строки.Этот запрос создает foreach, который я хочу сказать каждому исполнителю, выполняющему этот запрос.Затем этот запрос должен создать fetch_assoc (), чтобы данные могли быть вызваны позже на странице.То, как у меня сейчас есть код, показывает только сообщения от подписчика 4, а не 5. Я пытался использовать счетчики для добавления имен переменных, чтобы они не перезаписывались каждый раз, но это не помогает.Большое спасибо!

$sqlb ="SELECT myfriend_ID FROM friends WHERE my_id = '$myuid'";
$resultb = mysql_query($sqlb,$db);
$numa = mysql_num_rows($resultb);
if($numa)
{
    while(($follower = mysql_fetch_assoc($resultb))) {
        $followers[] = $follower;
    }
}
$i=0;
foreach($followers as $follower)
{
    $i++;
    $fnub = $follower['myfollower_ID'];//this will print 4 and 5
    $fnum = $fnub;

    $sql = "SELECT * FROM usr, feed, course WHERE usr.usr_id = '$fnum' AND 
             feed.usr_id = '$fnum' AND course.usr_id = '$fnum' ORDER BY Feed_ID desc";
    $result = mysql_query($sql,$db);
    $num.$fnum = mysql_num_rows($result);
    if($num.$fnum)
    {
        while(($feed = mysql_fetch_assoc($result))) {
            $feeds[] = $feed;
        }
        foreach($feeds as $feed)
        {
            echo $feed['comment'];
        }
    }
}

Ответы [ 2 ]

1 голос
/ 02 апреля 2011
$sqlb ="SELECT myfriend_ID FROM friends WHERE my_id = '$myuid'";
$resultb = mysql_query($sqlb,$db);
$follower = array();

if(mysql_num_rows($resultb))
{
   while(($follower = mysql_fetch_assoc($resultb))) {
      $fnum = $follower['myfriend_ID'];//what is the column name
      $sql = "SELECT * FROM usr, feed, course WHERE usr.usr_id = '$fnum' AND feed.usr_id = '$fnum' AND course.usr_id = '$fnum' ORDER BY Feed_ID desc";
      $result = mysql_query($sql,$db);
      if( mysql_num_rows($result))
      {
         while(($feed = mysql_fetch_assoc($result))) {
           echo $feed['comment'];
       }
    }
}

И вы должны объединить эти два запроса в один. Но я не слишком хорош в SQL. Возможно, кто-то другой может помочь.

0 голосов
/ 02 апреля 2011

Вы присваиваете $ i, затем увеличиваете $ i в пределах foreach, но вы никогда не используете $ i для чего-либо еще, я не уверен, что этот счетчик должен делать.Я не уверен, почему вы присваиваете вторую переменную значению $ fnub, почему бы просто не использовать $ fnub каждый раз?Позже вы используете (что мы можем только предположить, что это) пустую переменную $ num и добавляете к ней $ fnum - я не уверен, почему - или даже почему вы должны назначить что-либо для строк num, просто используйте функцию внутри ifпоскольку это выглядит как единственный экземпляр, который вы используете $ num. $ fnum.

Вы можете полностью вывести свой последний foreach и переместить содержимое этого цикла за некоторое время до него, так как они оба перебираютте же данные, просто присвойте значения, затем выведите $ feed ['comment'] прямо там, затем он переместит указатель и сам приготовит следующее значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...