Je n'arrive pas à insérer ma requête dans la base de données après que le programme ait vérifié la disponibilité du nom d'utilisateur sur flou en utilisant ajax pour vérifier si le nom d'utilisateur est disponible. Après avoir vérifié la disponibilité du nom d'utilisateur, il insère toujours des requêtes vides dans ma base de données.Problème lors de l'insertion d'une requête après vérification de la disponibilité du nom d'utilisateur par ajax
Voici l'exemple de sortie pour plus de détails:
Mais le problème est quand il affiche le nom d'utilisateur disponible, il insère automatiquement une requête vide dans la base de données.
Ceci va insérer dans la base de données après il vérifie la disponibilité de l'utilisateur:
Je veux insérer la requête d'insertion lorsque l'utilisateur soumet ou quand il/elle clique sur le bouton d'enregistrement. La disponibilité du nom d'utilisateur est pour la vérification seulement. Y a-t-il un problème avec mon code?
Voici le code:
sample.php FICHIER
<!DOCTYPE html>
<html>
<head>
<title>Sample</title>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<input type="text" placeholder="Username" id="username" name="username" class="form-control" >
<span id="availability" style="color:green;"></span>
<input class="form-control" placeholder="First Name" name="firstname" type="text" >
<input type="submit" id="signup" name="signupsubmit" class="btn btn-info form-control" value="Register">
</body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://code.jquery.com/jquery-2.1.1.min.js" type="text/javascript"></script>
<script>
//Check Username availability
$(document).ready(function()
{
$('#username').blur(function()
{
var username = $(this).val();
$.ajax({
url:"SampleProcess.php",
method:"POST",
data:{username:username},
dataType:"text",
success:function(html)
{
$('#availability').html(html);
}
})
});
});
</script>
</html>
J'utilise ajax pour vérifier la disponibilité de nom d'utilisateur dans le script ici:
<script>
//Check Username availability
$(document).ready(function()
{
$('#username').blur(function()
{
var username = $(this).val();
$.ajax({
url:"SampleProcess.php",
method:"POST",
data:{username:username},
dataType:"text",
success:function(html)
{
$('#availability').html(html);
}
})
});
});
</script>
Le fichier de processus pour vérifier le nom d'utilisateur et insérer une requête.
SampleProcess.php FICHIER
<?php
//This is an external file DBController for creating a connection to DB
require_once("DBController.php");
//DBHandler handles the DBController class
$DBHandler = new DBController();
//Call the function mainConnect()
$connect = $DBHandler->mainConnect();
//Check Username Availability
if(isset($_POST["username"]))
{
$sql = "SELECT * FROM tablereminders WHERE username ='".$_POST["username"]."'";
$result = mysqli_query($connect, $sql);
if(mysqli_num_rows($result) > 0)
{
echo"<span class=\"text-danger\">Username not available</span>";
echo'<script>document.getElementById("username").focus();</script>';
}
else
{
//In this else condition the query will be inserted in the
//database after the user clicks the register button, but it will insert right
//after the program check the availability
echo"<span class=\"text-success\">Username available</span>";
//Problem inserting my query here
$Username = isset($_POST['username']);
$FirstName = isset($_POST['firstname']);
//Query Insert into tablereminders
$query = mysqli_query($connect, "INSERT INTO `tablereminders`(`username` , `firstname`)
VALUES ('$Username' , '$FirstName')");
if($connect->query($query) == TRUE)
{
echo "<script type='text/javascript'>alert('New record created successfully');</script> ";
echo "<script>setTimeout(\"location.href = 'LoginReminder.php'\", 0)</script>";
}
}
}
?>
Dans la condition d'autre après vérification mysqli_num_rows je peux mettre ma requête d'insertion là pour exécuter lorsque l'utilisateur clique sur le buton de registre. Y at-il un problème avec ma condition if-else ou est-ce à propos de la fonction AJAX dans le fichier Sample.php, devrais-je utiliser la méthode GET ou POST? De toute façon je l'ai essayé mais ça ne corrige pas mon problème ici. S'il vous plaît aider.
Donc vous voulez dire, je vais créer deux fichiers php monsieur? Un pour la disponibilité du nom d'utilisateur et un autre pour l'insertion de la requête? –
Oui, vous pouvez créer deux fichiers pour réduire la complexité. Si vous voulez faire toutes choses en utilisant un seul fichier, vous devez passer un autre paramètre avec une requête ajax quelque chose comme les valeurs 'action' seront 'checkUsername' et autre 'insert'. – itzmukeshy7
Oui! ça marche monsieur. Je vous remercie –