简体   繁体   English

PHP表单保留在同一页面上

[英]PHP form stay on same page

Hi i am trying to update data in a database from a form on the same page as the php code without redirecting/reloading the page. 您好我正在尝试从与PHP代码相同的页面上的表单更新数据库中的数据,而无需重定向/重新加载页面。

I tried this tutorial but that didn't work: http://www.formget.com/form-submit-without-page-refreshing-jquery-php / 我尝试了这个教程但是没有用: http//www.formget.com/form-submit-without-page-refreshing-jquery-php /

Update code: 更新代码:

<?php
include "db.php";
session_start();
$value=$_POST['name'];
$query = mysqli_query($connection,"UPDATE users SET profiel='$value' WHERE username='$_SESSION['user']'");
?>

Profilecomplete.js: Profilecomplete.js:

$(document).ready(function() {
    $("#submit").click(function() {
        var name = $("#name").val();
        if (name == '') {
            alert("Insertion Failed Some Fields are Blank....!!");
        } else {
        // Returns successful data submission message when the entered information is stored in database.
            $.post("config/profilecomplete.php", {
                value: name
            }, function(data) {
                alert(data);
                $('#form')[0].reset(); // To reset form fields
            });
        }
    });
});

The form: 表格:

<form method="POST" id="form">
    <div class="input-field col s6">
        <input id="name" type="text" class="validate">
        <label for="name">Value</label>
    </div>
    <button type="submit" id="submit" class="btn-flat">Update</button>
</form>

How your click event can occur even if you are not preventing the default behavior of the form submit button. 即使您没有阻止表单提交按钮的默认行为,您的点击事件也会如何发生。 Make the submit input as a button or use event.preventDefault() to submit the form via ajax. 将提交输入作为按钮或使用event.preventDefault()通过ajax提交表单。

<?php
include "db.php";
session_start();

if(isset($_POST)) {
    $value=$_POST['name'];
    $query = mysqli_query($connection,"UPDATE users SET profiel='$value' WHERE username='{$_SESSION['user']}'");
    echo ($query) ? "Updated" : "Not Updated";
    exit;
} else {
?>
<form method="POST" id="form">
    <div class="input-field col s6">
        <input id="name" type="text" class="validate" name="name">
        <label for="name">Value</label>
    </div>
    <button type="button" id="submit" class="btn-flat">Update</button>
</form>
<?php } ?>

<script type="text/javascript">
$(document).ready(function() {
    $("#submit").click(function() {
        var name = $("#name").val();
        if (name === '') {
            alert("Insertion Failed Some Fields are Blank....!!");
        } else {
            // Returns successful data submission message when the entered information is stored in database.
            $.post("config/profilecomplete.php", {name: name}, function(data) {
                alert(data);
                $('form')[0].reset(); // To reset form fields
            });
        }
    });
});
</script>

It looks like the issue, or at least, one of the issues, is on this line; 看起来问题,或至少是其中一个问题,就在这条线上;

$query = mysqli_query($connection,"UPDATE users SET profiel='$value' WHERE username='$_SESSION['user']'");

You are opening and closing the single quotes twice, here 您在这里打开和关闭单引号两次

WHERE username='$_SESSION['user']'

Try using this instead; 尝试使用它;

$query = mysqli_query($connection,"UPDATE users SET profiel='$value' WHERE username='" . $_SESSION["user"] . "'");

Use this, it's working already. 使用它,它已经工作了。

index.php 的index.php

<form method="post">
    <input type="text" id="name">
    <input type="submit" id="submit">
</form>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script> 
$(document).ready(function() {
    $("#submit").click(function(e) {
        e.preventDefault();
        var nameInput = $("#name").val();
        var name = {
            'name' : nameInput
        }
        if (nameInput == '') {
            alert("Insertion Failed Some Fields are Blank....!!");
        } else {
            // Returns successful data submission message when the entered information is stored in database.
            $.post("config/profilecomplete.php", {value: name}, function(data) {
                alert(data);
                //$('#form')[0].reset(); // To reset form fields
            });
        }
    });
});
</script>

profilecomplete.php profilecomplete.php

<?php

$_POST = array_shift($_POST); // array_shift is very important, it lets you use the posted data.

echo $_POST['name'];


?>

if you want a more simple way. 如果你想要一个更简单的方法。

try to use $.ajax() 尝试使用$ .ajax()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM