JavaScript中的表单提交按钮

JavaScript中的表单提交按钮,javascript,php,mysql,Javascript,Php,Mysql,在我的项目中,我添加了一些JavaScript以避免用户多次单击同一按钮。有一个页面可以从注册页面获取数据。我放置的每个数据行都添加一个取消好友按钮(已禁用)。用户单击“添加”后,将出现提示框,要求用户输入主题并单击“确定”。单击“确定”后,可以单击“取消好友”按钮 我的问题是:单击add按钮后,会出现提示,单击ok后,数据不会插入数据库 如果单击取消好友按钮,它将插入数据库。我希望在用户单击add按钮时提交数据。我想这是因为这个表单有两个提交按钮,但我不知道如何区分它们 代码如下: <?

在我的项目中,我添加了一些JavaScript以避免用户多次单击同一按钮。有一个页面可以从注册页面获取数据。我放置的每个数据行都添加一个取消好友按钮(已禁用)。用户单击“添加”后,将出现提示框,要求用户输入主题并单击“确定”。单击“确定”后,可以单击“取消好友”按钮

我的问题是:单击add按钮后,会出现提示,单击ok后,数据不会插入数据库

如果单击取消好友按钮,它将插入数据库。我希望在用户单击add按钮时提交数据。我想这是因为这个表单有两个提交按钮,但我不知道如何区分它们

代码如下:

<?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>

函数myFunction(表单){
var subject=提示(“请输入要学习的科目”);
if(主题!=null){
形式['subject'].价值=主体;
表格['btn'].disabled=false;
表单['add'].disabled=true;
表单['add'].value=“已发送请求”;
表格['add'].submit();
返回false;
}
表格['add'].disabled=false;
表单['btn'].disabled=true;
表单['add'].value=“添加朋友”;
返回true;
}
/>

您的两个按钮都有
type=“submit”
,因此都会提交表单。由于您没有js代码来处理
unfriend
,因此它只需提交表单,其中包含您正在体验的值

另一个按钮的功能是
myFunction
处理返回false的单击。不要返回false。你正在做:

form['add'].submit();
return false;

在表单提交功能中。。。这两个按钮都不需要,因为如果处理程序返回
no
false,按钮将提交表单。

您可以有两个类型均为“提交”的输入按钮。您只需要使用name属性来区分这两个服务器端。另外,在myFunction中,使用form.submit()而不是form['add'].submit()提交表单