我是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);
?>
答案 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>";
}
但是,我觉得这很难理解。