php while mysql_fetch_array внутри пока - PullRequest
0 голосов
/ 21 октября 2011

У меня есть эта часть кода, и я не могу понять, почему второй цикл внутри первого не работает. Я запрашиваю две таблицы, и я поместил эхо во вторую таблицу, чтобы увидеть, если это эхо, но это не так. спасибо заранее

while($row = mysql_fetch_array($result))
{
 echo "<li class=\"s01\"><a class=\"s03\" href=" . $row['link'] . "><span>". $row['onomaselidas'] ."</span></a>\n";
 echo "<ul class=\"pn2\">\n";
 $idd[]=$row['idwebsiteprimary'];
   while($row2 = mysql_fetch_array($result2))
   {
    echo "test";
   if($idd[$url]==$row2['idwebsite'])
    {
    echo "<li class=\"s01\"><a href=\"a\"><span>". $row2['name'] ."</span></a></li>\n";
    }
   }
 echo "</ul>\n";
}

1 Ответ

0 голосов
/ 21 октября 2011

После первой итерации первого цикла внутренний указатель второго набора результатов находится в конце, поэтому второй цикл не будет выполнен, поскольку mysql_fetch_array() немедленно вернет false.Если вы хотите сделать это точно так же, как указано выше - второй набор результатов не зависит от первого - вам нужно будет сделать следующее:

// First, get the results of set 2 into an array
$resultset2 = array();
while ($row = mysql_fetch_assoc($result2)) $resultset2[] = $row;

while ($row = mysql_fetch_assoc($result)) { // Do your thang
  echo "<li class=\"s01\"><a class=\"s03\" href=" . $row['link'] . "><span>".$row['onomaselidas'] ."</span></a>\n";
  echo "<ul class=\"pn2\">\n";
  $idd[] = $row['idwebsiteprimary'];
  foreach ($resultset2 as $row2) { // Foreach sets it's pointer to the beginning every time, so this should work
    echo "test";
    if ($idd[$url]==$row2['idwebsite']) {
      echo "<li class=\"s01\"><a href=\"a\"><span>". $row2['name'] ."</span></a></li>\n";
    }
  }
  echo "</ul>\n";
}

В качестве альтернативы вы можете сбросить внутренний указатель $result2 на каждомитерация первого цикла путем вызова mysql_data_seek($result2, 0); следующим образом:

while ($row = mysql_fetch_array($result)) {
  echo "<li class=\"s01\"><a class=\"s03\" href=" . $row['link'] . "><span>". $row['onomaselidas'] ."</span></a>\n";
  echo "<ul class=\"pn2\">\n";
  $idd[] = $row['idwebsiteprimary'];
  mysql_data_seek($result2, 0);
  while ($row2 = mysql_fetch_array($result2)) {
    echo "test";
    if($idd[$url]==$row2['idwebsite']) {
      echo "<li class=\"s01\"><a href=\"a\"><span>". $row2['name'] ."</span></a></li>\n";
    }
  }
  echo "</ul>\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...