簡體   English   中英

僅當數據庫中不存在時才更新表單值

[英]Updating Form Values Only If Not Existing In Database

假設我有這樣的表格-

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

}

您的評論有誤導性,“不要更新”應該更新,而“更新”應該是新創建的,為什么不只是在提交時更新所有內容

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM