在我的项目中,我添加了一些JavaScript,以避免用户多次单击同一按钮。它有一个页面从注册页面中提取数据。我在每个数据行上添加了一个取消好友按钮(已禁用)。用户单击添加后,将出现提示框,要求用户输入主题并单击确定。单击“确定”后,可以单击“取消好友”按钮。
这是我的问题:单击添加按钮后,出现提示,单击确定后,数据不会插入数据库。
如果我单击unfriend按钮,它将插入数据库中。我希望每当用户单击添加按钮时提交数据。我认为是因为此表单具有两个提交按钮,但我不知道如何区分它们。
代码如下:
<?php
session_start();
$mysqli = new MySQLi('127.0.0.1','root','','learning_malaysia');
$sql = "SELECT * FROM tutor_register INNER JOIN tutorskill ON tutor_register.register_ID = tutorskill.register_ID";
$result = mysqli_query($mysqli,$sql);
?>
<html>
<script>
function myFunction(form){
var subject = prompt("Please enter Subject that want to study");
if (subject != null){
form['subject'].value = subject;
form['btn'].disabled = false;
form['add'].disabled = true;
form['add'].value = "request sent";
form['add'].submit();
return false;
}
form['add'].disabled = false;
form['btn'].disabled = true;
form['add'].value = "Add friend";
return true;
}
</script>
<body>
<?php
if(mysqli_num_rows($result)>0)
{
while($row = mysqli_fetch_array($result))
{
$register_ID = $row["register_ID"];
$username = $row['username'];
?>
<form method="post" id="form" enctype="multipart/form-data" autocomplete="off">
<td><input type="submit" value="unfriend" id="btn" disabled />
<input type="hidden" name="id" value="<?php echo $row['register_ID'];?>" />
<input type="hidden" id="subject" name="subject" data-uid=<?php echo $_SESSION['sid'] ;?>/>
<input type="submit" onclick="return myFunction(this.form);" name="addfriend" data-type='addfriend' id="add" class="btn" value="add" />
</td>
</form>
<?php
}
}
?>
<?php
if(isset($_POST['subject']) and $_POST['id']) {
$user_id = $_SESSION['sid'];
$friend_id = $_POST['id'];
$status = "yes";
$subject = $_POST['subject'];
$sql = "INSERT INTO friends(user_id,status,subject,friend_id)" ."VALUES('$user_id','yes','$subject','$friend_id') ";
if($mysqli->query($sql) === true) {
$_SESSION['status'] = "yes";
$_SESSION['friend_id'] = $friend_id;
$_SESSION['user_id'] = $user_id;
} else {
}
}
?>
</body>
</html>
答案 0 :(得分:0)
两个按钮都有type="submit"
,因此两个按钮都将提交表单。由于您没有处理unfriend
的js代码,因此只需将您遇到的值提交给表单即可。
另一个按钮具有myFunction
功能,可处理单击,但返回的结果为false。不要返回false。您正在做
form['add'].submit();
return false;
在表单提交功能中……这两项都是不需要的,因为如果从该处理程序返回no
false,则按钮将提交表单。
答案 1 :(得分:0)
您可以有两个类型均为“ submit”的输入按钮。您只需要通过使用name属性来区分两个服务器端。另外,在myFunction中,使用form.submit()而不是form ['add']。submit()提交表单。
https://html.spec.whatwg.org/multipage/forms.html#the-form-element