Кнопка отправки формы в JavaScript

0

В моем проекте я добавил несколько JavaScript, чтобы избежать одновременного нажатия одной кнопки. Существует одна страница, на которой он извлекает данные со страницы регистрации. Каждая строка данных, которую я установил, добавляет недружественную кнопку (отключена). После того, как пользователь нажимает кнопку "Добавить", появляется окно приглашения, чтобы попросить пользователя ввести тему и нажать "ОК". После нажатия кнопки "ОК" кнопка "Дружба" будет доступна для просмотра.

Вот моя проблема: после нажатия кнопки "Добавить" появляется приглашение и после нажатия "ОК" данные не вставляются в базу данных.

Если я нажму кнопку "Недоброжелатель", она будет вставлена в базу данных. Я хочу, чтобы данные передавались всякий раз, когда пользователь нажимает кнопку добавления. Я думаю, потому что у этой формы есть две кнопки отправки, но я не знаю, как их отличить.

Вот код:

<?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>
Теги:

2 ответа

0

У вас могут быть две кнопки ввода, которые являются как type = "submit". Вам просто нужно выделить две стороны сервера, используя атрибут name. Кроме того, в myFunction отправьте форму, используя form.submit(), а не форму ['add']. Submit().

https://html.spec.whatwg.org/multipage/forms.html#the-form-element

Две кнопки отправки в одной форме

0

Обе ваши кнопки имеют type="submit" поэтому обе будут отправлять форму. Поскольку у вас нет js-кода для обработки unfriend он просто отправит форму со значениями, которые вы испытываете.

Другая кнопка имеет функцию myFunction обрабатывающую клик, который возвращает false. Не возвращайте false. Ты делаешь:

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

в функции отправки формы... оба они не нужны, так как кнопка будет отправлять форму, если из этого обработчика no возвращается ложь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню