当IF不满足时显示消息

时间:2013-06-11 18:33:25

标签: php arrays echo

我是PHP的新手,我正在创建一个页面,其中包含按类别分隔的职位发布。我想留言“对不起,这个部门目前没有空缺职位。”如果数据库中没有与该类别匹配的作业,则显示在该类别下。 表中的每一行都会分配一些类别,因此我编写的代码会检查该值并将相关信息放入div中。 IE - 零售工作进入Div id =“零售”。批发工作进入div id =“批发”

我编写了以下代码,但它不起作用。

表格中有jobcat零售的作业,但在第一条记录下面显示3条抱歉消息,在“作业详情”类的div之外

表中的下一个类别中没有作业,使用此代码,“对不起”消息重复5次。

任何人都可以帮助我实现我想要做的事吗?我没有发现任何类似的问题,其中回声重复这样,但我可能没有使用正确的搜索术语。

下面的代码在我的页面上重复了4次,其中包含了jobcat的不同类别。

         <div id="retail"><h2>Retail</h2>
           <?php do { 
                 if ($row_info['jobcat'] == 'Retail'){
                     echo "<div class='job-post'>"; 
                     echo "<p><span class='header'>Position: </span>".$row_info['jobtitle'] . "</p>";
                     echo "<p><span class='header'>Location: </span>".$row_info['joblocation'] . "</p>";
                     echo "<p class='view-job'>View Details</p> <div class='job-details'>".nl2br($row_info['jobdesc']) ." <a href='job-application.php?id=".$row_info['id']."'>Apply</a></div>"; 
                     echo "</div>";
                    }  else{
                        echo "<p>Sorry, there are currently no openings in this division.</p>";
                        }
                  } while ($row_info = mysql_fetch_assoc($info));
                     mysql_data_seek($info, 0);
                    $row_info = mysql_fetch_assoc($info);
                    ?>
         </div>

我尝试根据下面的答案进行修改,以检查值而不是空,这也不起作用 - 肯定是我的不良实现,但无论如何都要显示。使用此代码,第一个类别会输入正确的数据,但即使表中存在匹配项,所有其他类别的“抱歉”消息也会显示:

           <?php 
               if ($row_info['jobcat'] == 'Retail')
               {
                  while ($row_info = mysql_fetch_assoc($info)) {
                     echo "<div class='job-post'>"; 
                                     echo "<p><span class='header'>Position: </span>".$row_info['jobtitle'] . "</p>";
                                     echo "<p><span class='header'>Location: </span>".$row_info['joblocation'] . "</p>";
                                     echo "<p class='view-job'>View Details</p> <div class='job-details'>".nl2br($row_info['jobdesc']) ."<a href='job-application.php?id=".$row_info['id']."'>Apply</a></div>"; 
                                     echo "</div>";
                  }

               }
               else
               {
                  echo "Sorry, there are no open positions at this time.";
               }
               mysql_data_seek($info, 0);
                $row_info = mysql_fetch_assoc($info);
            ?>

3 个答案:

答案 0 :(得分:1)

您不需要对其中一个使用do / while循环,其次,每次循环迭代都会显示错误消息。首先检查数据,然后如果它不为空则循环遍历

<?php 
   if (!empty($info))
   {
      while ($row_info = mysql_fetch_assoc($info)) {
         // display data
      }

   }
   else
   {
      // error message here
   }
?>

您还应该使用mysqli_,而不是mysql_函数,因为它们已被弃用。我还强烈建议您阅读PHP书籍编程的介绍。

答案 1 :(得分:0)

如果出现错误条件,则设置一个标志,然后在循环后输出错误(不在其中)。

<?php
    $flag = false;

    do {
        if ($row_info['jobcat'] == 'Wholesale') {
            echo "<div class='job-post'>"; 
            echo "<p><span class='header'>Position: </span>".$row_info['jobtitle'] . "</p>";
            echo "<p><span class='header'>Location: </span>".$row_info['joblocation'] . "</p>";
            echo "<p class='view-job'>View Details</p> <div class='job-details'>".nl2br($row_info['jobdesc']) ."<a href='job-application.php?id=".$row_info['id']."'>Apply</a></div>"; 
            echo "</div>";
        } else{
            $flag = true;
        }
    } while ($row_info = mysql_fetch_assoc($info)); 

    mysql_data_seek($info, 0);
    $row_info = mysql_fetch_assoc($info);

    if ($flag) {
        echo "<p>Sorry, there are currently no openings in this division.</p>"
    }
?>

答案 2 :(得分:0)

#assume there are no openings until we know otherwise
$openings_available = false;

while ($row_info = mysql_fetch_assoc($info)) {
    if ($row_info['jobcat'] == 'Wholesale') {
        #echo statements here

        $openings_available = true;    #now we know there's at least one opening
    }
}

if (!$openings_available) {
    echo "<p>Sorry, there are currently no openings in this division.</p>";
}

或者,如果您不想在每次$openings_available时重新设置jobcat,则可以执行以下操作:

#assume there ARE openings until we encounter a row without a 'jobcat'
$openings_available = true;

while ($row_info = mysql_fetch_assoc($info)) {
    if ($row_info['jobcat'] == 'Wholesale') {
        #echo statements here
    } else {
        $openings_available = false;
    }
}

if (!$openings_available) {
    echo "<p>Sorry, there are currently no openings in this division.</p>";
}
但是,我觉得这很难理解。