我正在创建的原型软件使用MVC框架。
我正在尝试将allowed
表中的entrylog
字段更改为“Y”(是)或“N”(否),具体取决于与驱动程序关联的卡是否已获得授权或不。
涉及的四个表是card
,driver
,state
和entrylog
表。还有一个card_driver
表,它将卡与驱动程序相关联。
CREATE TABLE IF NOT EXISTS `card` (
`id` int(11) NOT NULL auto_increment,
`startdate` date NOT NULL,
`enddate` date NOT NULL,
`state_id` int(11) NOT NULL,
`referred_as` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE IF NOT EXISTS `driver` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(40) default NULL,
`supplier_id` int(11) NOT NULL,
`referred_as` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE IF NOT EXISTS `card_driver` (
`card_id` int(11) NOT NULL,
`driver_id` int(11) NOT NULL
);
CREATE TABLE IF NOT EXISTS `state` (
`id` int(11) NOT NULL auto_increment,
`referred_as` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE IF NOT EXISTS `entrylog` (
`id` int(11) NOT NULL auto_increment,
`vehicle_id` int(11) NOT NULL,
`driver_id` int(11) NOT NULL,
`venue_id` int(11) NOT NULL,
`supplier_id` int(11) NOT NULL,
`deliverydate` date NOT NULL,
`allowed` binary(1) NOT NULL default 'N',
PRIMARY KEY (`id`)
);
在驱动程序表中,我目前有代码检查所选驱动程序关联卡的授权。我想将这个类似的代码应用于条目日志,这样当使用表单输入交付时,它会自动确定“允许”字段。检查驱动程序表中驱动程序授权的代码如下:
if ($name == driver) {
?>
<? include('common.php') ?>
<?php
if(isset($_POST['check']))
{
$conn = mysql_connect($server, $db_user, $db_pass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$id = $_POST['id'];
$sql ="SELECT *
FROM driver AS d
INNER
JOIN card_driver AS cd
ON cd.driver_id = d.id
INNER
JOIN card AS c
ON c.id = cd.card_id
WHERE d.ID = $id";
mysql_select_db('damp');
$result = mysql_query( $sql, $conn );
$row = mysql_fetch_assoc($result);
switch($row['state_id'])
{
case "1":
echo "<strong><font color=\"green\">Authorisation Granted!</font></strong>";
break;
case "2":
echo "<strong><font color=\"red\">Your card has expired and authorisation is denied</font></strong>";
break;
case "3":
echo "<strong><font color=\"red\">Your card has been cancelled and authorisation is denied</font></strong>";
break;
default:
echo "<strong><font color=\"red\">The Card ID does not exist</font></strong>";
}
感谢您的帮助或建议您给我。
编辑:来自controller_create.php的代码
if ($class_obj == "entrylog")
{
$id = $_POST['id'];
$driverid = MyActiveRecord::FindById('driver',$this_obj->driver_id);
$query = mysql_query("SUPDATE entrylog el
INNER JOIN driver AS d ON d.driver_id = el.driver_id
INNER JOIN card_driver AS cd ON cd.driver_id = d.id
INNER JOIN card AS c ON c.id = cd.card_id
SET el.allowed = CASE WHEN c.state_id = 1
THEN 'Y'
ELSE 'N'
END
WHERE el.ID = $entryLogId");
mysql_select_db('damp');
}
答案 0 :(得分:0)
不完全清楚你在问什么,但以下内容可能有所帮助:
UPDATE entrylog el
INNER JOIN driver AS d ON d.id = el.driver_id
INNER JOIN card_driver AS cd ON cd.driver_id = d.id
INNER JOIN card AS c ON c.id = cd.card_id
SET el.allowed = CASE WHEN c.state_id = 1
THEN 'Y'
ELSE 'N'
END
WHERE el.ID = $entryLogId
根据您最近的评论,听起来这个值应该计算为INSERT
的一部分,而不是UPDATE
之后。