2012-04-13 45 views
0

假设我有一个像这个 -更新表单值只有当不存在在数据库

<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> 

形式会有很多加价,当用户编辑一个特定的标记,并点击“保存标记”有将进行背景检查,以查看数据库中是否已经有该名称的标记。如果有,那么会向用户显示一条消息,该消息已经存在并且存在。如果不是,请继续进行更新。

Alls well to to here。但是,当用户尝试更新其他值(如“最小速率”或“最大速率”)时,如果将标记值保持不变,该消息仍显示为标记存在。由于数据库检查返回true。

我想知道我需要什么逻辑适用于这里得到这个解决..

我试图

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

回答

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'] 

} 
0

您的意见是误导性的,不要更新要更新 和更新应创建新的 为什么不直接更新所有提交的内容

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 
}