Verification de l'existance d'un pseudo dans la db via ajax

Fermé
Jojodebaby Messages postés 70 Date d'inscription vendredi 14 novembre 2014 Statut Membre Dernière intervention 24 novembre 2015 - Modifié par Jojodebaby le 27/11/2014 à 18:46
Jojodebaby Messages postés 70 Date d'inscription vendredi 14 novembre 2014 Statut Membre Dernière intervention 24 novembre 2015 - 2 déc. 2014 à 18:14
slt, svp j'ai lu beaucoup de tuto mais je n'y parviens vraiment pas...
En effet je voudrais vérifier le pseudo saisie dans un formulaire avant qu'il soit posté.
cette vérification consiste à afficher "ce pseudo existe déjà" en cas de doublons ou "pseudo libre vous pouvez l'utiliser" mais je butte à chaque fois.
une explication très simple serait la plus attendue
merci de votre aide !!!
NB: je debute avec ajax donc soyer indulgent!

4 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
28 nov. 2014 à 00:45
Bonjour,

Je peux t'aider pas de soucis...
Commence par nous montrer le code que tu as essayé de mettre en place.
0
Jojodebaby Messages postés 70 Date d'inscription vendredi 14 novembre 2014 Statut Membre Dernière intervention 24 novembre 2015 11
Modifié par jordane45 le 30/11/2014 à 01:06
Ok merci Jordane je te donne les codes c'est trois pages:
// page html qui appel la fonction verification() qui est sur le fichier traitement.js
<html xmlns="[http://www.w3.org/1999/xhtml]">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=urf-8" />
<title>REVU SUR AJAX</title>
<script type="text/javascript" src="traitement.js"></script>
<link rel="stylesheet" href="revu.css" />
</head>
<body><label for="nom" class="dis_form">Nom: </label><input type="text" name="nomclient" id="nomclient" abort="verification();"/> 
<span class="avert" id="avert1">ce nom est dejà utilisé</span><span class="avert" id="avert2"> nom valide!</span>
</body>
</html>


//page formulaire.php de traitement
 <?php
header("Content-Type: text/plain");
//rechercher par critere les noms 
$con = mysqli_connect("localhost", "root","",'projethotel');
$nomclient=$_GET['nomclient'];
$sel="SELECT NomClient FROM client WHERE NomClient = '$nomclient' ";
$req=mysqli_query($con,$sel);
while($tab = mysqli_fetch_assoc($req)){
 if($tab[i]==$nomclient){
 echo("1");
      }
 else
 {
 echo("2");
 }
}
mysqli_free_result($req);
?>


 //page traitement.js

// JavaScript Document
//fonction pour desactiver les span 
function deactivateSpan() {
var spans = document.getElementsByTagName('span'),
spansLength = spans.length;
for (var i = 0 ; i < spansLength ; i++) {
 if (spans[i].className == 'avert') {
 spans[i].style.display = 'none';
 }
}
}

//fonction pour activer le span correspondant

//description de l'objet xhr
function getXMLHttpRequest() {
 var xhr = null;
 
 if (window.XMLHttpRequest || window.ActiveXObject) {
  if (window.ActiveXObject) {
   try {
    xhr = new ActiveXObject("Msxml2.XMLHTTP");
   } catch(e) {
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
   }
  } else {
   xhr = new XMLHttpRequest(); 
  }
 } else {
  alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
  return null;
 }
 
 return xhr;
}

//code de la fonction de verification
function verification(){
var nomclient=encodeURIComponent(document.getElementById("nomclient").value);
var xhr=getXMLHttpRequest() ;
xhr.onreadystatechange = function() {
 if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
  //traitement pour recuperation 
    if(xhr.responseText==1){
     var span=document.getElementById('avert1');
     span.style.display=='inline';
    }
   else if(xhr.responseText==2){
   var span=document.getElementById('avert2');
   span.style.display=='inline';
  }
    
    alert(xhr.responseText.innerHTML);
 }
};

xhr.open("GET", "formulaire.php?nomclient=" + nomclient, true);
xhr.send(null);
}

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 30/11/2014 à 01:15
Bonsoir,
Désolé pour le délai.. je n'était pas trop dispo..

Bon.. alors tu dis :

cette vérification consiste à afficher "ce pseudo existe déjà" en cas de doublons ou "pseudo libre vous pouvez l'utiliser" mais je butte à chaque fois.

OK.. sur quoi bloques tu exactement ?

Je pense que ton souci vient de ta page php....
Essayes ça :

//page formulaire.php de traitement
 <?php
header("Content-Type: text/plain");
$result = "";
//rechercher par critere les noms 
$con = mysqli_connect("localhost", "root","",'projethotel');
$nomclient=isset($_GET['nomclient'])?$_GET['nomclient']:NULL;
if($nomclient){
  $sel="SELECT NomClient 
           FROM client 
           WHERE NomClient = '$nomclient' ";
  
   $req=mysqli_query($con,$sel);
    if($req){
      $result .='1'; 
    }else{
      $result .= '2';
    }
}else{
  $result.= "NO CLIENT !";
}

mysqli_free_result($req);

echo $result;

?>




Nb : Penses à utilises les outils de débogage de ton navigateur internet pour regarder ce qui se passe sur ta page... ( perso j'utilise FIREBUG .. un plugin pour FireFox).



Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
0
Jojodebaby Messages postés 70 Date d'inscription vendredi 14 novembre 2014 Statut Membre Dernière intervention 24 novembre 2015 11
2 déc. 2014 à 18:14
merci je jette un coup d'oeil rapide et je te fait signe
0