Nom d'utilisateur vérification si il existe déjà dans la base de données à l'aide de PHP, CodeIgniter, JQuery, AJAX
Je suis en train de vérifier le nom d'utilisateur de la validité d'abord avant que l'utilisateur appuie sur le bouton "soumettre" à l'aide de Codeigniter. Le statut du nom d'utilisateur s'il est pris ou pas va apparaître à côté d'elle.
Voici le JS dans la vue:
<script type="text/javascript" src="../assets/js/jquery.min.js"></script>
<script type="text/javascript"><!--
$(document).ready(function() {
$("#username").blur(function() {
//remove all the class add the messagebox classes and start fading
$("#msgbox").removeClass().addClass('messagebox').text('Checking...').fadeIn("slow");
//check the username exists or not from ajax
$.post("addpatient/check_user_availability",{ username:$(this).val() } ,function(data) {
if(data=='no') {
$("#msgbox").fadeTo(200,0.1,function() { //start fading the messagebox
//add message and change the class of the box and start fading
$(this).html('This User name Already exists').addClass('messageboxerror').fadeTo(900,1);
});
}
else {
$("#msgbox").fadeTo(200,0.1,function() { //start fading the messagebox
//add message and change the class of the box and start fading
$(this).html('Username available to register').addClass('messageboxok').fadeTo(900,1);
});
}
});
});
});
</script>
Voici une partie du formulaire en html:
<form method="post" action="addpatient/insert" name="register">
<table id='addpatient'>
<tr>
<td width=100> Username:
<td width=150> <input type='text' id='username' name='username' value="<?php if(isset($_POST['username'])) echo $_POST['username']; ?>" placeholder="5-15 char" pattern=".{5,15}" required>
<td> <span id="msgbox" style="display:none"></span>
<td><div id="msgbox"></div>
</tr>...
Ici, c'est le contrôleur:
function check_user_availability()
{
$username = $this->input->post('username');
// Developed by Roshan Bhattarai
// Visit http://roshanbh.com.np for this script and more.
// This notice MUST stay intact for legal use
//this varible contains the array of existing users
$existing_users=$this->user->get_all_usernames();
//value got from the get metho
$user_name= $username;
//checking weather user exists or not in $existing_users array
if (in_array($user_name, $existing_users))
{
//user name is not availble
echo "no";
}
else
{
//user name is available
echo "yes";
}
}
Et c'est une fonction dans le modèle:
function get_all_usernames() {
$this->db->select('username');
$this->db->from('users');
$query = $this->db->get();
return $query->result();
}
Cependant, quand je le lance, , il dit toujours que le nom d'utilisateur est disponible à vous inscrire même si le nom d'utilisateur a déjà été prises.
Un autre problème est que il ne vérifie pas si le nom d'utilisateur de la validité en tant que l'utilisateur saisit son nom d'utilisateur souhaité en "temps réel". Ce que je veux dire c'est, l'utilisateur doit cliquer sur la prochaine textfields d'abord avant de le code vérifie la validité.
Merci de m'aider à résoudre ces problèmes. Merci!!!!
- êtes-vous sûr que $query->result() est un tableau et non pas un objet? Peut-être vous devriez être de retour un result_array(): ellislab.com/codeigniter/user-guide/database/results.html
- Merci pour cette! J'ai donc essayé
$query->result_array()
mais elle dit encore le nom d'utilisateur est valide tout le temps. J'ai essayé de brancher un échantillon de valeurs de la matrice$existing_users=array('john','jack','carol');
et quand j'ai tapé dans la zone de texte, il est dit encore ces noms d'utilisateur sont valides. - si vous console.log(data) dans votre réussite vous le devrait chaîne littérale? Vous êtes la seule vérification pour le " non " donc, si quelque chose d'autre est retourné, il va dire qu'il est disponible. Y compris tous les espaces blancs ou d'autres choses qui peuvent être transmis en tant que le script s'exécute
- Suivant
Nil'z
's réponse, la console affiche unyes
.
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Changements dans le script:
post
et que le nom d'utilisateur existe dans votre table. Voir la réponse dans votre console de trop.yes
quand le nom d'utilisateur n'est pas encore dans la base etno
si il y est déjà. Mais votre alerte encore surgi.console and your network tab
c'est votre ami. Accepter la réponse si cela vous a aidé. 😀Contrôleur:
Remplacer votre check_user_availability() dans le contrôleur ci-dessus. pas besoin de l'aide de votre
get_all_usernames model
.Afficher la documentation pour Form_Validation, set_rules
Nil'z
's réponse. Il dityes
quand le nom d'utilisateur n'est pas encore dans la base etno
si il y est déjà. Mais l'alerte encore sauté vers le haut (une erreur s'est produite).