情景:学生被分配到基于部门的公司。每家公司都有不同的空缺数目。A公司的空缺号是4。分配给学生的公司是由管理部门从下拉列表中选出的。
问题:一旦一名学生被分配到A公司,如果该公司的空缺是4,那么如何减去1。也就是说,一旦学生被分配,它应该显示为3。
<?php
$result3 = mysqli_query($con, "SELECT job_title, no_of_vacancy FROM job_details WHERE jobscope = 'Information Technology' ORDER BY `job_title` ASC;");
?>
<table cellspacing='0'>
<tr>
<th>Company Name</th>
<th>Vacancy</th>
</tr>
<?php
while ($row3 = mysqli_fetch_assoc($result3)) {
echo "<tr>";
echo "<td bgColor=white>" . $row3['job_title'] . "</td>";
echo "<td bgColor=white>" . $row3['no_of_vacancy'] . "</td>";
echo "</tr>";
}
?>
</table>
<?php
$result5 = mysqli_query($con, "SELECT company FROM student_details WHERE jobscope1 = 'Information Technology';");
$row5 = mysqli_fetch_assoc($result5);
$assigned = $row5['company'];
if(isset($_POST['ddl']))
{
foreach($_POST['ddl'] as $index => $val2 )
{
$result4 = mysqli_query($con, "UPDATE `job_details` SET `no_of_vacancy`= `no_of_vacancy` - 1
WHERE `job_title` = '" . $val2 . "';");
}
}
}
?>建议编辑后:
在提交下拉选项之前
Company Name |Vacancy
__________________________________
Commonwealth Pte Ltd | 3
Delloitte | 1
Oak 3 Films Pte Ltd | 3
Promedia Directories | 2提交下拉选项后
例如
我选择2名学生分配给联邦,1名学生被分配到德勤,2名学生被分配到橡树,1名学生被分配到Promedia。
所以正确的表格应该显示
Company Name |Vacancy
__________________________________
Commonwealth Pte Ltd | 1
Delloitte | 0
Oak 3 Films Pte Ltd | 1
Promedia Directories | 1然而,这表明
Company Name |Vacancy
__________________________________
Commonwealth Pte Ltd | 1
Delloitte | 0
Oak 3 Films Pte Ltd | 3
Promedia Directories | 2怎么啦??只有顶部的两排受到影响。为什么第三排和最后一排也没有受到影响?
发布于 2014-02-05 07:45:22
尝试移除字段名周围的背面(`)。
所以,
UPDATE `job_details`
SET `no_of_vacancy`= `no_of_vacancy` - 1
WHERE `jobscope` = 'Information Technology'
AND `job_title` = '" . $assigned . "';变成:
UPDATE job_details
SET no_of_vacancy= no_of_vacancy - 1
WHERE jobscope = 'Information Technology'
AND job_title = '" . $assigned . "';这样,mysql就知道您是在引用一个字段(no_of_vacancy),并从其当前值中减去1。
Backticks允许您引用与保留的mysql单词相同的字段名。例如,一个名为where的表。
https://stackoverflow.com/questions/21571081
复制相似问题