Javascript 使用对话框确认后插入重复数据
当选中“复制数据”且确认框显示时,我想在按下“确定”按钮时插入数据 当我按下“取消”按钮时,数据不应插入数据库中 我该怎么做?以下是我迄今为止所做的:Javascript 使用对话框确认后插入重复数据,javascript,php,Javascript,Php,当选中“复制数据”且确认框显示时,我想在按下“确定”按钮时插入数据 当我按下“取消”按钮时,数据不应插入数据库中 我该怎么做?以下是我迄今为止所做的: <?php //insert data to database $category=Null; $model=Null; $part=Null; $remarks=Null; $partcode=
<?php
//insert data to database
$category=Null;
$model=Null;
$part=Null;
$remarks=Null;
$partcode=Null;
$partnumber=Null;
$user=$_SESSION['login_user'];
//Recive data from form
if(isset($_POST['category'])){$category = $_POST['category'];}
if(isset($_POST['model'])){$model = $_POST['model'];}
if(isset($_POST['part'])){$part= $_POST['part'];}
if(isset($_POST['remarks'])){$remarks = $_POST['remarks'];}
//Check Duplicate Data From DB
$check="Select * From part Where Category='$category' and Model='$model' and PartName='$part'";
$checkrun=mysqli_query($conn,$check);
$checkrow=mysqli_num_rows($checkrun);
if($checkrow>0){
echo "<script>confirm('Duplicate Data! Click OK to Add & Cancel to Edit')</script>";
}
//Make Part Number
$maxPartQry="Select max(PartCode) FROM part";
$maxPartRun=mysqli_query($conn,$maxPartQry);
$maxpart=mysqli_fetch_array($maxPartRun);
$partcode=$maxpart[0]+1;
$invID = str_pad($partcode,6,'0', STR_PAD_LEFT);
$partnumber=$model."-".$part."-".$invID;
$product;
//Insert Query For inserting data in DB
$sql = "INSERT INTO `part` (`ID`, `PartCode`, `PartNumber`, `Category`, `Model`, `PartName`, `Remarks`, `Date`, `Name`)
VALUES (NULL, '$partcode', '$partnumber', '$category', '$model', '$part','$remarks', NOW(), '$user');";
if(($category != Null) ){
$insert=mysqli_query($conn,$sql);
if($insert){
echo "<script>window.alert('New Part No. ".$partnumber." is Genrated Successfully!!')</script>";
}
}
?>
您需要了解不同的代码段在不同的位置执行。例如:
- SQL查询在服务器端执行
- 警报/确认框在客户端执行(web浏览器)
- 在客户端执行的代码在服务器端生成
因此,如果您希望实现以下场景,则需要向服务器发出多个请求:
用户将数据发布到服务器
服务器响应数据重复(并返回脚本代码供用户确认)
执行确认代码时,用户接受插入副本
向服务器发送确认信息,或者通过添加“accept duplicate”(接受重复)标志再次发布数据(通常,如果服务器是无状态的)李>
服务器接收确认/second post请求,确定它应该接受重复的请求,并执行相应的SQL查询以进行插入李>
步骤1、3、4发生在客户端。步骤2、5发生在服务器端
在用户取消的情况下,服务器端代码只是跳过第二个post请求
因此,服务器端需要额外的代码来区分这两个请求(这是确认请求吗?还是应该允许重复?),并相应地调整其行为。如果用户确认应该插入一个副本,您需要在客户端额外的代码来生成第二个请求
当然,如果客户端代码是静态的而不是在服务器端生成的(例如,google REST HTTP接口),那么所有这些都会更加清晰,但我担心解释这一点目前只会让您感到困惑 你的密码在哪里?你的mysql语法在哪里?你的问题是什么?为我写代码?这是个笑话吗?你甚至没有格式化你的代码。问题在哪里?如何形成代码我直接回答编辑Joshua Bakker的代码请指导我