【问题标题】:how to show hide html table row based on php condition如何根据php条件显示隐藏html表格行
【发布时间】:2016-03-03 08:09:02
【问题描述】:

我想使用 php 根据获取的 mysql 列的状态值显示/隐藏表行。

工作代码:这部分工作正常

while($row = mysql_fetch_array($sql))  
{
$name[] = $row['name'];
$title[] = $row['title'];
$prize[] = $row['prize'];
$status[] = $row['status'];  // this  will save values as enabled or disabled
$points[] = $row['points'];

}


<?php 

      while($row = mysql_fetch_array($sql))  

{

     echo "<tr> ";
     echo "<td>" .$row[name] . "</td>";
    echo "<td>" .$row[points] . "</td>";
        }
     echo "</tr> " ;
?>

问题:我需要解决这个问题

我无法显示上面给出的表格,因为更多的值将从其他表格中获取,并显示到表格行中。我正在显示这样的表格。

<tr ><td><?php echo "$title[0]";?></td><td>complete <?php echo "$task[0]";?> </td><td></td></tr>
<tr ><td><?php echo "$title[1]";?></td><td>complete <?php echo "$task[1]";?> </td><td></td></tr>

问题:

请指导我如何隐藏或显示行,如问题中所定义 部分,使用的值

$status[] = $row['status'];

,将启用或禁用

【问题讨论】:

  • 这样:if($row['status'] == 1) { display } else { not display }
  • 在 while (fetch) 循环中检查您的条件,如果条件匹配,则显示(回显)您的内容。如果没有,那么就跳过那部分......!
  • 我知道这很简单,请阅读问题部分,我需要在问题的问题部分显示值

标签: php mysql sql


【解决方案1】:

像这样

 while($row = mysql_fetch_array($sql))  
{
   if($row['status']=="enabled")
  {
   echo "<tr> ";
   echo "<td>" .$row[name] . "</td>";
   echo "<td>" .$row[points] . "</td>";
   echo "</tr> " ;
  }
}

对于其他行,您可以这样做

<?php if($status[0] == "enabled") { ?>
    <tr ><td><?php echo "$title[0]";?></td><td>complete <?php echo "$task[0]";?> </td><td></td></tr>
<?php } ?>

编辑

如果你所有的数组都具有相同的大小,你可以尝试这样的循环

<?php for($i=0;$i<sizeof($title);$i++) {
if($status[$i]=="enabled"){
?>
<tr ><td><?php echo $title[$i];?></td><td>complete <?php echo $task[$i];?> </td><td></td></tr>
<?php  }
} ?>

【讨论】:

  • 如果您逐行显示,是的。如果你找到一个解决方案来用毛圈展示它们,那就更容易了。
  • 这就是我要找的,所有行顶部的简单一个条件,它应该可以解决问题,你能建议使用 ($[status[i] == "enabled " ) ,类似于使用 for 循环,所以我只需要将这个条件设置一次,它应该可以工作......我会接受当前的解决方案,因为它会部分解决问题。
  • 我现在测试一下,你能解释一下吗,,,($i=0;$i
  • 如果所有数组的大小都相同,那么您可以采用 1 的大小并一个接一个地循环。它适用于所有其他数组,我们只需要一个参考大小。
【解决方案2】:

这对你有用,只是一个例子,我认为你也需要使用&lt;table&gt;

<?php 
echo "<table border='1'>";
while($row = mysql_fetch_array($sql))  
{
  if($row['status'] == 1){
    echo "<tr>";
      echo "<td>" .$row['name'] . "</td>";
      echo "<td>" .$row['points'] . "</td>";
    echo "</tr>";
  }  
}
echo "</table>";
?>

旁注:

停止使用 mysql_* 在 PHP 7 中弃用并关闭的扩展,使用 mysqli_*PDO

【讨论】:

    【解决方案3】:
    <?php 
    while($row = mysql_fetch_array($sql))  
    {
        if($row['status']=='enabled') {
            echo "<tr> ";
            echo "<td>" .$row[name] . "</td>";
            echo "<td>" .$row[points] . "</td>";    
            echo "</tr> " ;
        }
    }
    ?>
    

    如果$row['status']=='enabled' 为假,它将进入下一个循环。

    【讨论】:

    • 请查看编辑编辑:似乎我在你的问题中仍然遗漏了一些东西。想弄清楚它是什么?
    • 这很简单,请参阅问题部分,我需要添加更多的值,
    • 我们三个人回答了几乎相同的答案,所以我想可以安全地假设问题出在您的问题上。请考虑更新您的问题,您可能会第一次得到您正在寻找的内容。
    • 我已经编辑了这个问题,我想一开始我没有很好地澄清这个问题。
    【解决方案4】:

    你可以使用这样的东西:

    <?php while($row = mysql_fetch_array($sql)): ?>
        <?php if($row['status'] == 'enabled'):?>
            <tr>
                <td><?php echo $row['name']; ?></td>
                <td><?php echo $row['points']; ?></td>
            </tr>
        <?php else: ?>
            <?php continue; ?>
        <?php endif; ?>
    <?php endwhile; ?>
    

    或者:

    <?php
        while($row = mysql_fetch_array($sql)){
            if($row['status'] == 'enabled'){
                echo '<tr><td>' . $row[name] . '</td><td>' . $row[points] . '</td></tr>';
            }
        }
    ?>
    

    【讨论】:

    • 我需要添加一些从其他表中获取的更多值,这就是为什么我这样使用它。否则这将是一个直截了当的。
    • 所以你要求一个包含更多表之间的内部连接的 sql 查询来返回所有需要的值?如果是这种情况,那么我们需要您的数据库结构作为表和行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多