数据在页面加载时插入到数据中 - php jquery [重复]
Posted
技术标签:
【中文标题】数据在页面加载时插入到数据中 - php jquery [重复]【英文标题】:Data is inserted to data on page load - php jquery [duplicate] 【发布时间】:2019-04-05 05:48:08 【问题描述】:我一直在处理这段代码,显然每次我加载页面时它都会将数据插入数据库。
<!DOCTYPE html>
<?php
include_once($_SERVER["DOCUMENT_ROOT"] .'/31783/functions.php');
$questions="";
$activityname="";
$myarray=array();
if($_SERVER["REQUEST_METHOD"] == "POST")
print_r($myarray);
print_r($activityname);
$questions = $_POST['myquestions'];
$activityname = $_POST['activityname'];
$myarray = array_filter(explode("|||", $questions));
SqlRecord("INSERT INTO activity (name) VALUES ('$activityname')");
foreach ($myarray as $value)
$connector = array();
$connector = array_filter(explode("!!!", $value));
$question = $connector[0];
$answer = $connector[1];
$activityid = SelectRecord("activity_id", "SELECT activity_id FROM activity WHERE name='$activityname'");
SqlRecord("INSERT INTO question(activity_id,question,answer) VALUES (" . $activityid . ",'$question','$answer')");
?>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery Add / Remove Table Rows</title>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
<style type="text/css">
tr:hover
cursor: move;
</style>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
var htm='<tr>\n' +
' <td><textarea name="name" required></textarea></td>\n' +
' <td><button class="remove"></button></td>\n' +
'<td><select id="myAnswer" name="myAnswer" class="form-control"><option value="1">True</option><option value="2">False</option></select></td>'+
' </tr>';
$(function ()
$('tbody').sortable();
$('#addRow').on( "click", function()
$('tbody').append(htm);
);
$(document).on('click','.remove',function()
$(this).parents('tr').remove();
);
$('#getValues').on( "click", function()
var myValues="";
var values=[];
$('textarea[name="name"]').each(function(i,elem)
values.push(
question:$(elem).val(),
answer:""
);
);
$('select[name="myAnswer"').each(function(i,elem)
values[i].answer=$(elem).val();
);
for (var j=0;j<values.length;j++)
myValues=myValues+values[j].question+"!!!"+values[j].answer+"|||";
//console.log(myValues);
$("#myquestions").val(myValues);
);
);
</script>
</head>
<body>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
<div class="container">
<input type="text" id="activityname" name="activityname" required></br>
<table>
<tbody>
<tr>
<td><textarea name="name" required></textarea></td>
<td><button class="remove"></button></td>
<td><select name="myAnswer" class="form-control"><option value="1">True</option><option value="2">False</option></select></td>
</tr>
<tr>
<td><textarea name="name" required></textarea></td>
<td><button class="remove"></button></td>
<td><select name="myAnswer" class="form-control"><option value="1">True</option><option value="2">False</option></select></td>
</tr>
</tbody>
</table>
<input id="getValues" type="submit" value="Submit"/>
<input type="text" id="myquestions" name="myquestions">
<button id="addRow">Add</button>
</div>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
</body>
</html>
我无法发现代码中的错误。
每次我按添加时,代码都会添加<tr>
。它将<tr>
中的值传输到一个数组,然后将其作为字符串发送到html 中的<input>
,以便能够在php 中读取它并将其插入到数据库中。我没有使用 ajax,因为代码简单直接。
谢谢
【问题讨论】:
如果您在提交表单后点击重新加载按钮,它将再次提交表单。浏览器通常会显示正在发生这种情况的警告,您必须确认是否需要它。 @Barmar 正如你所提到的,我使用标题将页面重定向到它自己,它运行良好。谢谢 【参考方案1】:如果你替换
if($_SERVER["REQUEST_METHOD"] == "POST")
为
if(isset($_POST['myquestions']) && !empty($_POST['myquestions']))
它应该可以工作,我知道为什么您的 $_SERVER 验证不起作用,抱歉
【讨论】:
感谢您的留言,但没有成功。第一次在新选项卡中加载页面时它很好并且可以正常工作。当您想在同一选项卡中刷新页面时,它正在重用以前的数据并继续插入数据库。有什么方法可以在不将页面重定向到新标题的情况下解决此问题? 为什么这会更好?单击重新加载按钮会重新提交表单,因此$_POST['myquestions']
将被重新设置。
顺便说一句,不必同时测试isset
和!empty
,只需使用!empty
。 documentation 表示:如果变量不存在,则不会生成警告。以上是关于数据在页面加载时插入到数据中 - php jquery [重复]的主要内容,如果未能解决你的问题,请参考以下文章
将数据从 html 页面插入到 php 表单中,就像自动填充值一样