2012-01-13 4 views
0

Может ли кто-нибудь сказать мне, почему следующий бит кода получает только все изображения в запросе, за исключением последнего?Запрос не получает все mysql_fetch_assocs

$userquery = mysql_query("SELECT * FROM acceptedfriends WHERE profilename='$profilename' ORDER BY RAND() LIMIT 4"); 
    while ($userrun = mysql_fetch_assoc($userquery)) 
    { 
     $users = $userrun['username']; 
     $imagequery = mysql_query("SELECT * FROM users2 WHERE username='$users'"); 
     while ($imagefetch = mysql_fetch_assoc($imagequery)) 
     { 
      $location = $imagefetch['imagelocation']; 
      $image = "<img src='$location' width='60' height='40'>"; 
      if ($profilename==$username) 
      { 
       echo '<div id="hovercolor2" style="width:294px; float:left;"><table><tr> <td>'.$image.'</td><td><div style="margin-bottom:5px;"><a href="http://www.pearlsquirrel.com/'.$users.'" target="_blank">'.$users.'</a></div><div><a href="http://www.pearlsquirrel.com/conversation.php/'.$users.'" style="text-decoration:underline;" target="_blank"><div style="font-size:.7em";>Click to enter a conversation.</div></a></div></td></tr></table></div><div id="hrdiv3" style="float:left; width:298px;"></div>'; 
      } 
      else 
      { 
       echo '<div id="hovercolor2" style="width:294px; float:left;"><table><tr><td>'.$image.'</td><td><a href="http://www.pearlsquirrel.com/'.$users.'" target="_blank">'.$users.'</a></td></tr></table></div><div id="hrdiv3" style="float:left; width:298px;"></div>'; 
      } 
     } 
    } 

Этот

$image = "<img src='$location' width='60' height='40'>"; 

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

упрощенный код с той же ошибкой

$userquery = mysql_query("SELECT * FROM acceptedfriends WHERE  profilename='$profilename' ORDER BY id DESC LIMIT 6"); 
    while ($userrun = mysql_fetch_assoc($userquery)) 
    { 
     $users = $userrun['username']; 
     $location = $userrun['imagelocation']; 
     $image = "<img src='$location' style='width:60px; height:40px;'>"; 
     if ($profilename==$username) 
     { 
      echo '<div id="hovercolor2" style="width:294px; float:left;"><table><tr><td>'.$image.'</td><td><div style="margin-bottom:5px;"><a href="http://www.pearlsquirrel.com/'.$users.'" target="_blank">'.$users.'</a></div><div><a href="http://www.pearlsquirrel.com/conversation.php/'.$pageusers.'" style="text-decoration:underline;" target="_blank"><div style="font-size:.7em";>Click to enter a conversation.</div></a></div></td></tr></table></div><div id="hrdiv3" style="float:left; width:298px;"></div>'; 
     } 
     else 
     { 
      echo '<div id="hovercolor2" style="width:294px; float:left;"><table><tr><td>'.$image.'</td><td><a href="http://www.pearlsquirrel.com/'.$users.'" target="_blank">'.$users.'</a></td></tr></table></div><div id="hrdiv3" style="float:left; width:298px;"></div>'; 
     } 
    } 
+0

Вы не видите последнее изображение? используйте mysql_num_rows(), чтобы получить количество строк, оттуда мы можем продолжить исследование. – Chibuzo

+0

, так что вы получаете только 3 изображения? и by by '$ image =" ";' действительно должно быть '$ image =" ";' :) – davogotland

ответ

3

Что происходит, когда вы запускаете print_r (mysql_fetch_assoc ($ userquery)); на обоих выборках? Вы видите данные в массиве? Я предполагаю, что вы делаете LIMIT 4 специально? Обычно я не запускать цикл, а внутри другого, вы можете попробовать это вместо:

$userquery = mysql_query("SELECT * FROM acceptedfriends WHERE profilename='$profilename' ORDER BY RAND() LIMIT 4"); 

while ($userrun = mysql_fetch_assoc($userquery)) { 
    $userArray[] = $userrun; 
} 

print_r($userArray); 
echo '<br /><br />'; 

foreach ($userArray as $userValue) { 
    $users = $userValue['username']; 
    $imagequery = mysql_query('SELECT * FROM users2 WHERE username="'.$users.'"'); 
    while ($imagefetch = mysql_fetch_assoc($imagequery)) { 
     //echo out variables from the above select to make sure you're getting them 
     $location = $imagefetch['imagelocation']; 
     $image = "<img src='$location' width='60' height='40' />"; 
     if ($profilename==$username) { 
      echo '<div id="hovercolor2" style="width:294px; float:left;"><table><tr> <td>'.$image.'</td><td><div style="margin-bottom:5px;"><a href="http://www.pearlsquirrel.com/'.$users.'" target="_blank">'.$users.'</a></div><div><a href="http://www.pearlsquirrel.com/conversation.php/'.$users.'" style="text-decoration:underline;" target="_blank"><div style="font-size:.7em";>Click to enter a conversation.</div></a></div></td></tr></table></div><div id="hrdiv3" style="float:left; width:298px;"></div>'; 
     } else { 
      echo '<div id="hovercolor2" style="width:294px; float:left;"><table><tr><td>'.$image.'</td><td><a href="http://www.pearlsquirrel.com/'.$users.'" target="_blank">'.$users.'</a></td></tr></table></div><div id="hrdiv3" style="float:left; width:298px;"></div>'; 
     } 
    } 
} 

Убедитесь, отлаживать, проверяя, что ваши ценности существуют при запросе сценария. Надеюсь, это поможет.

+0

Я бы тоже не запускал вложенные циклы, он просто просил проблемы. – Neilos

+0

Да, вложенные петли всегда плохие, ваша проблема, вероятно, такова: http://www.php.net/manual/en/control-structures.while.php#52733 –

+0

Я принял во внимание то, что вы, ребята, говорили и Я немного упростил свой код, но у меня все еще такая же проблема. Не могли бы вы снова взглянуть на меня? Я опубликую его наверху. – Eggo

0

Ошибка была не с этим фрагментом кода, а с более ранним div на странице, где я забыл закончить.

Смежные вопросы