Php 从ajax工作插入,需要进行更改以检查现有条件是否更新
我正试图解决一个问题。用户当前可以在表单中创建内容,该表单在提交时进行ajax调用。调用时,它会为实际内容创建一个mysql记录,获取该内容记录的ID,然后为容纳该内容的“面板”创建一个记录(将页面ID、面板类型和内容全部关联起来) 这是完美的,但如果他们试图编辑表单中的内容并提交,则只会创建另一条记录 下面的JS/AJAX将面板类型、页面ID和内容作为隐藏字段传递:Php 从ajax工作插入,需要进行更改以检查现有条件是否更新,php,jquery,mysql,sql,ajax,Php,Jquery,Mysql,Sql,Ajax,我正试图解决一个问题。用户当前可以在表单中创建内容,该表单在提交时进行ajax调用。调用时,它会为实际内容创建一个mysql记录,获取该内容记录的ID,然后为容纳该内容的“面板”创建一个记录(将页面ID、面板类型和内容全部关联起来) 这是完美的,但如果他们试图编辑表单中的内容并提交,则只会创建另一条记录 下面的JS/AJAX将面板类型、页面ID和内容作为隐藏字段传递: <script type="text/javascript"> $("#leftHalfForm").submit
<script type="text/javascript">
$("#leftHalfForm").submit(function(e){
var string = $('#leftHalfForm').serialize() + '&page_id=' + page_id;
console.log(string);
// AJAX Code To Submit Form.
$.ajax({
type: "POST",
url: "addPanel.php",
data: string,
cache: false,
success: function(response){
}
});
return false;
});
</script>
面板桌
panel_type_id | page_id | cont_id
-------------------------------------
2 123 52
现在如果他们编辑并点击submit,我已经传递了panel_type_id和page_id,所以我要做的就是看到panel_type_id为2和page_id为123已经存在,所以我只需要更新与之相关联的内容记录(content id为52)
它看起来应该足够简单,但我不确定如何保持新面板的当前功能,同时允许编辑/更新已有的内容。诀窍是进行额外的查询,以检查是否有与该面板类型id和页面id匹配的记录。因此,我们进行计数,如果计数返回0,则插入新记录,否则更新现有记录
$checkIfExists = "SELECT COUNT(*) AS count FROM panels WHERE panel_type_id = $panelID AND page_id = $pageID";
if($mysqlConn->query($checkIfExists)->count = 0){
$q= "
INSERT INTO panels(panel_type_id, page_id, cont_id)
VALUES ('$panelID', '$pageID', '$cont_id');
";
} else {
$q= "
UPDATE panels SET cont_id = $cont_id WHERE panel_type_id = $panelID AND page_id = $pageID
";
}
if ($mysqlConn->query($q) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $addPanel . "<br>" . $mysqlConn->error;
}
$checkIfExists=“选择COUNT(*)作为来自面板的计数,其中面板类型=面板id=$panelID,页面=页面id=$pageID”;
if($mysqlConn->query($checkIfExists)->count=0){
$q=”
插入面板(面板类型id、页面id、连续id)
值(“$panelID”、“$pageID”、“$cont_id”);
";
}否则{
$q=”
更新面板集合cont_id=$cont_id,其中面板类型_id=$PANELEID和页面_id=$pageID
";
}
if($mysqlConn->query($q)==TRUE){
echo“新记录创建成功”;
}否则{
echo“Error:”.$addPanel.“
”$mysqlConn->错误;
}
您可以添加一个简单的条件-如果面板表中存在页面id-内容表中的数据将在面板表中不做任何更改的情况下更新,如果不存在-将使用当前代码。好的,我认为这基本上是有意义的,除非记录确实存在,那么我只想更新我的内容表的内容。因此,初始提交将创建一个面板记录和内容记录。我只想检查pageid/面板类型是否存在,如果存在,只需使用该ID更新内容表中的“content”列即可
panel_type_id | page_id | cont_id
-------------------------------------
2 123 52
$checkIfExists = "SELECT COUNT(*) AS count FROM panels WHERE panel_type_id = $panelID AND page_id = $pageID";
if($mysqlConn->query($checkIfExists)->count = 0){
$q= "
INSERT INTO panels(panel_type_id, page_id, cont_id)
VALUES ('$panelID', '$pageID', '$cont_id');
";
} else {
$q= "
UPDATE panels SET cont_id = $cont_id WHERE panel_type_id = $panelID AND page_id = $pageID
";
}
if ($mysqlConn->query($q) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $addPanel . "<br>" . $mysqlConn->error;
}