par
BaLiSTiK » 27 févr. 2008, 23:01
Bonjour,
En plein recodage de mon site, je souhaite y apporter de l'AJAX (histoire que ça fasse plus actuel ^^).
Et notamment dans mes formulaire.
C est la première fois que j'inclus de l'AJAX et ne suis pas un expert du JS.
Je m'explique, j ai fais un simple formulaire d'inscription à la newsletter avec vérification des champs si ils sont vides ainsi que vérification des adresses mails si elles sont valides. Jusque là tout marche pas de soucis (youpi) ainsi que l'insertion dans la base de donnée. Jugeant ceci maintenant acquis pour moi, j'ai décidé d'y intégrer de l'AJAX pour vérifier si la personne qui opte pour un pseudo, n'est aps déja intégré. J ai cherché un exemple, j en ai trouvé un sur le site du zéro (très bon site au passage) et je l'ai implanté dans mon code. Mais là petit soucis, peu importe le pseudo envoyé, il me dit qu'il n'est pas libre...
Le code JS :
Code : Tout sélectionner
function File(fichier) {
//ffi
if(window.XMLHttpRequest) { xhr_object = new XMLHttpRequest(); }
// IE
else if(window.ActiveXObject) { xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); }
else { return(false); }
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
//Le serveur nous indique qu'il est prêt
if(xhr_object.readyState == 4) {
return(xhr_object.responseText);
}else{
return(false);
}
}
//Au clic sur le bouton
function CheckDispoLogin(obj) {
var login = document.getElementById(obj).value;
//On contrôle que le login demandé est disponible
var result = File('CheckLogin.php?login='+escape(login));
if(result == 1)
form.submit();
else
alert('Désolé ce login est déjà utilisé');
}
Le formulaire :
Code : Tout sélectionner
<p>Pseudo<br />
<input type="text" id="login" name="login" size="40" style="border:#999999 1px solid; background-color:#cccccc;" /></p>
<p>Adresse E-mail<br />
<input type="text" name="mail" size="40" style="border:#999999 1px solid; background-color:#CCCCCC;" /></p>
<p>Retapez l'adresse E-mail<br />
<input type="text" name="mail2" size="40" style="border:#999999 1px solid; background-color:#CCCCCC;" /></p>
<input type="submit" value="Inscription" style="border:#999999 1px solid;" onclick="CheckDispoLogin('login');" />
<input type="reset" value="Effacer" style="border:#999999 1px solid;" />
Et el code PHP de vérification, qui lorsque je le teste indépendamment, me retourne toujours 1 (login libre)
<?php
include 'fonction.php';
//Tu met le code pour te connecter à ta bdd et compagnie
if(isset($_GET['login']))
{
//On sécurise l'entrée
$login = mysql_real_escape_string(htmlspecialchars($_GET['login']));
//On se connecte à mysql
//mysql_connect();
connexion();
//On comptes les entrées
$sql = mysql_query("SELECT COUNT(*) FROM newsletter AS nbused WHERE pseudo='".$login."'");
$data = mysql_fetch_assoc($sql);
if($data['nbused']>1)
echo 0; //Utilisé
else echo 1; //Libre
}
//On a rien à faire ici BASTA !
else{
echo 0;
}
?>
Ensuite, ce que j'aimerai,c est que l'événement soit appelé sur le <input type="text"> et non sur le bouton mais je ne sais pas quel on** mettre à la place du onClick.
En espérant avoir été clair,Merci d'avance

.
Dans el cas ou je trouverai moi même le soucis, je préviendrai, pour pas que vous n'ayez à vous creusez la tête pour rien

.
Bonjour,
En plein recodage de mon site, je souhaite y apporter de l'AJAX (histoire que ça fasse plus actuel ^^).
Et notamment dans mes formulaire.
C est la première fois que j'inclus de l'AJAX et ne suis pas un expert du JS.
Je m'explique, j ai fais un simple formulaire d'inscription à la newsletter avec vérification des champs si ils sont vides ainsi que vérification des adresses mails si elles sont valides. Jusque là tout marche pas de soucis (youpi) ainsi que l'insertion dans la base de donnée. Jugeant ceci maintenant acquis pour moi, j'ai décidé d'y intégrer de l'AJAX pour vérifier si la personne qui opte pour un pseudo, n'est aps déja intégré. J ai cherché un exemple, j en ai trouvé un sur le site du zéro (très bon site au passage) et je l'ai implanté dans mon code. Mais là petit soucis, peu importe le pseudo envoyé, il me dit qu'il n'est pas libre...
Le code JS :
[code] function File(fichier) {
//ffi
if(window.XMLHttpRequest) { xhr_object = new XMLHttpRequest(); }
// IE
else if(window.ActiveXObject) { xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); }
else { return(false); }
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
//Le serveur nous indique qu'il est prêt
if(xhr_object.readyState == 4) {
return(xhr_object.responseText);
}else{
return(false);
}
}
//Au clic sur le bouton
function CheckDispoLogin(obj) {
var login = document.getElementById(obj).value;
//On contrôle que le login demandé est disponible
var result = File('CheckLogin.php?login='+escape(login));
if(result == 1)
form.submit();
else
alert('Désolé ce login est déjà utilisé');
}[/code]
Le formulaire :
[code]<p>Pseudo<br />
<input type="text" id="login" name="login" size="40" style="border:#999999 1px solid; background-color:#cccccc;" /></p>
<p>Adresse E-mail<br />
<input type="text" name="mail" size="40" style="border:#999999 1px solid; background-color:#CCCCCC;" /></p>
<p>Retapez l'adresse E-mail<br />
<input type="text" name="mail2" size="40" style="border:#999999 1px solid; background-color:#CCCCCC;" /></p>
<input type="submit" value="Inscription" style="border:#999999 1px solid;" onclick="CheckDispoLogin('login');" />
<input type="reset" value="Effacer" style="border:#999999 1px solid;" />
[/code]
Et el code PHP de vérification, qui lorsque je le teste indépendamment, me retourne toujours 1 (login libre)
[php]
<?php
include 'fonction.php';
//Tu met le code pour te connecter à ta bdd et compagnie
if(isset($_GET['login']))
{
//On sécurise l'entrée
$login = mysql_real_escape_string(htmlspecialchars($_GET['login']));
//On se connecte à mysql
//mysql_connect();
connexion();
//On comptes les entrées
$sql = mysql_query("SELECT COUNT(*) FROM newsletter AS nbused WHERE pseudo='".$login."'");
$data = mysql_fetch_assoc($sql);
if($data['nbused']>1)
echo 0; //Utilisé
else echo 1; //Libre
}
//On a rien à faire ici BASTA !
else{
echo 0;
}
?>
[/php]
Ensuite, ce que j'aimerai,c est que l'événement soit appelé sur le <input type="text"> et non sur le bouton mais je ne sais pas quel on** mettre à la place du onClick.
En espérant avoir été clair,Merci d'avance :).
Dans el cas ou je trouverai moi même le soucis, je préviendrai, pour pas que vous n'ayez à vous creusez la tête pour rien :).