仅在数据库中不存在时更新表单值

时间:2012-04-13 10:29:26

标签: php

假设我有一个这样的表格 -

<form method="post" action="process.php">    
   Mark Up Name <input type="text" name="mark_up_name">
   Minimum Rate <input type="text" name="mark_up_min">
   Maximum Rate <input type="text" name="mark_up_max">
   <input type="submit" value="Save Mark Up">
</form>

将有许多标记,当用户编辑特定标记并单击“保存标记”时,将进行背景检查以查看是否已在数据库中标记该名称。如果有,则会向用户显示已使用该名称标记并且存在的消息。如果没有,请继续更新。

很高兴来到这里。但是,当用户尝试更新其他值(如最小速率或最大速率)时,保持标记值相同,消息仍显示为标记存在。由于数据库检查返回true。

我想知道我需要在这里应用什么逻辑才能解决这个问题。

我试过

if (CheckIfMarkUpExists($_POST['mark_up_name']))
{
   //Dont Update. Show Message MarkUp Exists
}
else
{
   //Update. Show Message MarkUp Saved
}

2 个答案:

答案 0 :(得分:0)

function CheckIfMarkUpExists($form){
    global $db;
    $st = $db->prepare("SELECT * FROM user WHERE form=?" );
    $st->bindParam(1, $form);
    $st->execute();
    if($st->rowCount() ==1){ return true;
}   else{ return false;
}
} 

if(CheckIfMarkUpExists($_POST['form'])){
    $errors[] = 'MarkUp Exists';
    }

if(empty($errors)){ 

$_POST['form'] 

}

答案 1 :(得分:0)

您的评论具有误导性,Dont Update应该更新 和更新应该是新的 为什么不在提交时更新所有内容

if (CheckIfMarkUpExists($_POST['mark_up_name']))
{
   //Do UPDATE. but just the other fields
$gosql = "UPDATE table SET mark_up_min = POST['mark_up_min'] WHERE (id) or markup_name = markup_name
     // Show Message MarkUp updated
} else {
 // Create new / INSTALL - not an update. Show Message MarkUp Saved
}