【问题标题】:While loop within a while loop logically not working in PHP一个while循环中的while循环逻辑上在PHP中不起作用
【发布时间】:2012-12-24 13:26:39
【问题描述】:

我的 PHP 的另一个 while 循环中有这个 while 循环:

$selecty = mysql_query("SELECT * FROM followers WHERE userid='".$_SESSION['id']."'");

$rowsy = mysql_num_rows($selecty);

echo '<td>'. $table["username"]. '</td>';
echo '<td>';

while ($tables = mysql_fetch_assoc($selecty)) {
    if($tables['followerid']!=$table['id']) {
        echo '<a href="#" data-userid="'.$table['id'].'" class="follow">'.'</a>'; 
    } else {
        echo '<a href="#" data-userid="'.$table['id'].'" class="following">'.'</a>';
    }
}
echo '</td>';
echo "<tr>";

这更像是一个逻辑问题,以及嵌套的 while 循环是否是正确的方法。我想说的是,如果“用户关注者表”中的“followerid”与用户表中的“id”(来自上一个循环)不同 - 回显关注按钮,否则回显以下按钮.

这是工作文件,而我的关注者表中有数据,但如果我没有显示(因为没有行) - 我如何在我的 PHP 中实现它?那么,如果“关注者表”中没有任何行,则回显关注按钮?

【问题讨论】:

标签: php while-loop


【解决方案1】:

你可以尝试这样做

$selecty = mysql_query("SELECT * FROM followers WHERE userid='".$_SESSION['id']."'");

$rowsy = mysql_num_rows($selecty);

echo '<td>'. $table["username"]. '</td>';
echo '<td>';

while ($tables = mysql_fetch_assoc($selecty)) {
    if($tables['followerid']!=$table['id'] and $tables['followerid'] != '') {
        echo '<a href="#" data-userid="'.$table['id'].'" class="follow"></a>'; 
    } else if($tables['followerid'] =$table['id'] and $tables['followerid'] !='') {
        echo '<a href="#" data-userid="'.$table['id'].'" class="following"></a>';
    } else {
        echo what you like here when $tables['followerid'] = ''
    }
}

echo '</td>';
echo "<tr>";

编辑

      class="follow">'.'</a>'
                      ^------------you dont have to make point and single quotes here

   $selecty = mysql_query("SELECT * FROM followers WHERE    userid='".$_SESSION['id']."'");

 $rowsy = mysql_num_rows($selecty);
 echo '<table><tr>';
  echo '<td>'. $table["username"]. '</td></tr>';

 if ($tables['followerid'] !== ''){
 while ($tables = mysql_fetch_assoc($selecty)) {
 echo '<tr><td>';
if($tables['followerid']!=$table['id'] and $tables['followerid'] != '') {
    echo '<a href="#" data-userid="'.$table['id'].'" class="follow"></a></td></tr>'; 
} else if($tables['followerid'] =$table['id'] and $tables['followerid'] !='') {
    echo '<a href="#" data-userid="'.$table['id'].'" class="following"></a></td></tr>';
} else {
    echo "what you like here  </td></tr>";
}
}
}
else {

 echo "do your code here " ; 
}

echo "</table>";

【讨论】:

  • 按钮?你是什​​么意思?你有链接&lt;a&gt;你可以在else做他们
  • 抱歉 - 它仍然没有显示链接 - 它显示 username 但不显示以下
  • 这个变量$table是什么?
  • $table 来自上一个 while 循环从用户的 mysql 获取 'id'
  • 替换这个,看看链接是否出现&lt;a href="#" data-userid="'.$table['id'].'" class="follow"&gt;gggggggg&lt;/a&gt;在第一个链接和第二个链接中替换它
【解决方案2】:

在“追随者”循环的开头放置一个布尔值 (FALSE),这样如果它被越过,则使其为 TRUE。如果您超出循环并且它仍然是 FALSE,那么无论如何添加按钮。

$trip = FALSE;

while ($tables = mysql_fetch_assoc($selecty)) {
  if($tables['followerid']!=$table['id']) {
    echo '<a href="#" data-userid="'.$table['id'].'" class="follow">'.'</a>'; 
  } else {
    $trip = TRUE;
    echo '<a href="#" data-userid="'.$table['id'].'" class="following">'.'</a>';
  }
}

if( !$trip ) echo '<a href="#" data-userid="'.$_SESSION['id'].'" class="follow">'.'</a

【讨论】:

  • 这有点用......但如果用户没有关注某人,它会重复两次 - 所以 class="follow"
  • 或者如果一个用户关注了所有用户,它会同时显示关注类和关注类
  • 将 $trip 也添加到 if{} 子句中。
  • 添加第二种类型的 $trip - 或计数器。
  • 它与嵌套while循环有关,为什么它不起作用?
猜你喜欢
相关资源
最近更新 更多
热门标签