PHP 循环问题?

标签 php mysql

我有一个 php 脚本,它将循环直到显示用户输入数据库的所有技能、exp 和评级变量。

我想要的是以下代码仅在变量保存信息且不为空时才显示一次。我怎样才能做到这一点。我希望我解释得很好。

我希望首先显示此代码。

echo '<div id="con">';
echo '<h2 id="s">Skills</h2>';
echo '<h2 id="exp">Exp</h2>';
echo '<h2 id="r">Rating</h2>';

这是完整的代码。

<?php
$mysqli = new mysqli("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT * FROM skills WHERE user_id='3'");

if (!$dbc) {
    print mysqli_error();
}

echo '<div id="con">';
echo '<h2 id="s">Skills</h2>';
echo '<h2 id="exp">Exp</h2>';
echo '<h2 id="r">Rating</h2>';

while ($row = mysqli_fetch_assoc($dbc)) {
    if (!empty($row['skill']) || !empty($row['exp']) || !empty($row['rating'])) { 
        if (! empty($row['skill'])) {
                echo '<div class="s">';
                echo '<p>' , htmlspecialchars($row['skill']) , '</p>';
            }

        if (! empty($row['exp'])) {
                echo '<div class="s">';
                echo '<p>' , htmlspecialchars($row['exp']) , '</p>';
            }

        if (! empty($row['rating'])) {
                echo '<div class="s">';
                echo '<p>' , htmlspecialchars($row['rating']) , '</p>';
            }

    }
}

echo '</div>';
?>

最佳答案

您可以在循环后执行以下操作:

echo '<div id="con">';
echo '<h2 id="s">Skills</h2>';
echo '<h2 id="exp">Exp</h2>';
echo '<h2 id="r">Rating</h2>';

不要在循环中使用 echo ,而是使用 vars 来存储文本,然后检查 var 是否包含某些内容,然后 echo

更新: 会变成这样:

$skills = "";
$exps = "";
$ratings = "";
while ($row = mysqli_fetch_assoc($dbc)) {
        if (!empty($row['skill']) || !empty($row['exp']) || !empty($row['rating'])) { 
                if (! empty($row['skill'])) {
                                $skills .='<div class="s">';
                                $skills .= '<p>' , htmlspecialchars($row['skill']) , '</p>';
                        }

                if (! empty($row['exp'])) {
                                $exps .= '<div class="s">';
                                $exps .= '<p>' , htmlspecialchars($row['exp']) , '</p>';
                        }

                if (! empty($row['rating'])) {
                                $ratings .= '<div class="s">';
                                $ratings .= '<p>' , htmlspecialchars($row['rating']) , '</p>';
                        }

        }
}

echo '<div id="con">';
if($skills){
 echo '<h2 id="s">Skills</h2>';
 echo $skills;
}

if($exps){
  echo '<h2 id="exp">Exp</h2>';
  echo $exps;
}

if($ratings){
  echo '<h2 id="r">Rating</h2>';
  echo $ratings;
}
echo '</div>';

关于PHP 循环问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1602032/

相关文章:

MySQL 以日期时间间隔连接两个表

php - 将mysql时间戳转换为实际日期和时间?

PHP Silex 路由本地化

php - 用 MySQL 制作购物车表的更好方法?

php - 多个 PHP IF 语句;寻找一种方法来收紧我的代码

java - Int ID在MySQL中删除和添加条目时跳转数字

PHPMailer发送没有表单数据的邮件

mysql - 使用 limit 和 where 子句进行分页

MySQL:如何找到特定主键在其他表中用作外键的位置?

php - 如何在 CodeIgniter 数据映射器的 where_in 子句中获取嵌套选择?