Probleme avec mon code jquery, text affiché est data
Résolu
Aaymeric
Messages postés
78
Date d'inscription
Statut
Membre
Dernière intervention
-
Giorgiolino Messages postés 253 Date d'inscription Statut Contributeur Dernière intervention -
Giorgiolino Messages postés 253 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un petit soucis avec mon code jquery (enfin je pense que c'est lui qui pose problème). J'ai un formulaire avec un champ destinataire qui renvoie dynamiquement si le membre précisé existe ou nous dans la base de donné. Le problème c'est qu'il existe ou non il m'affiche "data" La dernière fois que j'ai eu ce problème c'était à cause de simples guillemets mais la je suis un peu perdu :s Pour mieux vous orienter, voici mon code:
Mon formulaire:
(J'ai bien implémenté mon fichier JS à la fin)
le code js:
Et verifmembre.php
Une petite idée ? Merci
J'ai un petit soucis avec mon code jquery (enfin je pense que c'est lui qui pose problème). J'ai un formulaire avec un champ destinataire qui renvoie dynamiquement si le membre précisé existe ou nous dans la base de donné. Le problème c'est qu'il existe ou non il m'affiche "data" La dernière fois que j'ai eu ce problème c'était à cause de simples guillemets mais la je suis un peu perdu :s Pour mieux vous orienter, voici mon code:
Mon formulaire:
<?php if(isset($_GET['emetteur'])){ $emetteur = htmlentities($_GET['emetteur']); echo '<td><input type="text" name="destinataire" id="destinataire" value="'.$emetteur.'"/><span class="feedback"></span></td>'; } else { echo '<td><input type="text" name="destinataire" id="destinataire" value="" /><span class="error"></span></td>'; } ?>
(J'ai bien implémenté mon fichier JS à la fin)
le code js:
$(document).ready(function(){ $('#destinataire').keyup(function(){ var destinataire = $('#destinataire').val(); if(destinataire != ""){ $.post('verifmembre.php',{destinataire:destinataire},function(data){ $('.feedback').text(data); }); } else { $('.feedback').text('Veuillez inscrire un membre'); } }); });
Et verifmembre.php
<?php include '..connection.php'; //Partie pour le jquery $destinataire = $_POST['destinataire']; $query = $bdd-prepare('SELECT COUNT() as nb FROM membres WHERE pseudo = ? '); if ($query == false) { echo 'Erreur prepare'; print_r($bdd-errorInfo()); die(); } $res = $query-execute(array($destinataire)); if ($res == false) { echo 'Erreur execute'; print_r($query-errorInfo()); die(); } $row = $query-fetch(); if ($row['nb'] 0) { echo 'Ce user est déjà utilisé'; } else { echo 'Ce user est dispo'; } //Fin ?>
Une petite idée ? Merci
A voir également:
- Probleme avec mon code jquery, text affiché est data
- Code ascii - Guide
- App data - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
15 réponses
Perso .. j'ai du mal avec cette écriture simplifiée de l'ajax...
Je préfère utiliser la syntaxe plus "complète"
Que te donne ceci ?:
Je préfère utiliser la syntaxe plus "complète"
Que te donne ceci ?:
$(document).ready(function(){ $('#destinataire').keyup(function(){ var destinataire = $('#destinataire').val(); if(destinataire != ""){ var urlPagePhpAjx = "verifmembre.php"; $.ajax({ type: "POST", url:urlPagePhpAjx, data: { destinataire:destinataire }, async: false, dataType: "html", success: function(reponse){ $('.feedback').text(reponse); //Le temps des tests : alert(reponse); }, error:function (xhr, ajaxOptions, thrownError) { alert("Status:"+xhr.status + "\n Error:"+thrownError); } }); }else{ $('.feedback').text('Veuillez inscrire un membre'); } }); });
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Afin d'être sûr de ne pas faire d'erreur, j'ai mon dossier principal ou il y a entre autre un dossier message qui contient mon formulaire (le cheminement vers mon fichier js est correct) et un autre dossier JS ou il y a mon fichier js.
Dans ce fichier js il y a la ligne de code:
Du coup, et n'étant pas sur de l'endroit ou je dois mettre mon fichier verifmembre.php, j'ai mis ce dernier dans le dossier JS et dans le dossier message mais il est censé se trouvé ou sans changer le code ?
Dans ce fichier js il y a la ligne de code:
$.post('verifmembre.php',
Du coup, et n'étant pas sur de l'endroit ou je dois mettre mon fichier verifmembre.php, j'ai mis ce dernier dans le dossier JS et dans le dossier message mais il est censé se trouvé ou sans changer le code ?
Biens sur:
mondossierprincipal/message/nouvmessage.php
mondossierprincipal/js/verifpseudo.js
mondossierprincipal/message/nouvmessage.php
<?php include '../connection.php'; /* il faut demarrer la session*/ session_start(); if(isset($_SESSION['id'])){ ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link href="../css/main2.css" rel="stylesheet" type="text/css"> <link href="../css/message.css" rel="stylesheet" type="text/css"> <link href="../css/menumembre.css" rel="stylesheet" type="text/css"> <link href="../css/sousmenu.css" rel="stylesheet" type="text/css"> <title>Swap-it.com</title> </head> <body> <div id="header"> <span class="titre"> Swap-it </span> <div id="menumembre"> <?php include 'menumembre.php'; ?> </div> </div> <div id="centre"> <div id="message"> <div id="menumessage"> <ul><!-- --><li><a href="message.php">Boite à réception</a></li><!-- --><li><a href="messageenvoye.php">Message envoyé</a></li><!-- --><li><a href="nouvmessage.php">Nouveau message</a></li> </ul> </div> <span class="titremessage">Nouveau message</span> <form id="contact" action="verifmessage.php" method="post" name="formulaire"> <table> <tr> <td><label for="destinataire">Destinataire</label>: </td><span class="feedback"></span> <?php if(isset($_GET['emetteur'])){ $emetteur = htmlentities($_GET['emetteur']); echo '<td><input type="text" name="destinataire" id="destinataire" value="'.$emetteur.'"/><span class="feedback"></span></td>'; } else { echo '<td><input type="text" name="destinataire" id="destinataire" value="" /><span class="error"></span></td>'; } ?> </tr> <tr> <td><label for="titre">Titre:</label></td> <td><input type="text" id="titre" name="titre" size="60px"></input><span class="error"></span><td> <tr> <td><label for="message">Message:</label></td> <td><textarea id="mess" name="message" rows="6" cols="60"></textarea><span class="error"></span><td> </tr> </table> <input type="submit" value="Envoyer" id="submit"/> </form> </div> </div> <div id="footer"> </div> <script type='text/javascript' src='../js/jquery.js'></script> <script type='text/javascript' src='../js/message.js'></script> <script type='text/javascript' src='../js/verifpseudo.js'></script> </body> </html> <?php } ?>
mondossierprincipal/js/verifpseudo.js
$(document).ready(function(){ $('#destinataire').keyup(function(){ var destinataire = $('#destinataire').val(); if(destinataire != ""){ var urlPagePhpAjx = "verifmembre.php"; $.ajax({ type: "POST", url:urlPagePhpAjx, data: { destinataire:destinataire }, async: false, dataType: "html", success: function(reponse){ $('.feedback').text(reponse); //Le temps des tests : alert(reponse); }, error:function (xhr, ajaxOptions, thrownError) { alert("Status:"+xhr.status + "\n Error:"+thrownError); } }); }else{ $('.feedback').text('Veuillez inscrire un membre'); } }); });
Avec ton code j'ai ce message d'erreur:
<br />
<font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Parse error: syntax error, unexpected T_LNUMBER in C:\wamp\www\Swap-it\message\verifmembre.php on line <i>18</i></th></tr>
</table></font>
Mais je ne vois pas ou est l'erreur de parenthèse, tout me semble correcte :\
<br />
<font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Parse error: syntax error, unexpected T_LNUMBER in C:\wamp\www\Swap-it\message\verifmembre.php on line <i>18</i></th></tr>
</table></font>
Mais je ne vois pas ou est l'erreur de parenthèse, tout me semble correcte :\
Et mon verifmembre.php ressemble à ceci:
<?php include '..connection.php'; //Partie pour le jquery $destinataire = $_POST['destinataire']; $query = $bdd->prepare('SELECT COUNT() as nb FROM membres WHERE pseudo = ? '); if ($query == false) { echo 'Erreur prepare'; print_r($bdd->errorInfo()); die(); } $res = $query->execute(array($destinataire)); if ($res == false) { echo 'Erreur execute'; print_r($query-errorInfo()); die(); } $row = $query->fetch(); if ($row['nb'] == 0) { echo 'Ce user est déjà utilisé'; } else { echo 'Ce user est dispo'; } //Fin ?>
Il manque encore un ">" à la ligne 14 !!
Essayes donc ce code :
Essayes donc ce code :
<?php include '../connection.php'; $destinataire = isset($_POST['destinataire'])?$_POST['destinataire']:NULL; if($destinataire){ $sql="SELECT COUNT() as nb FROM membres WHERE pseudo = '?' "; $query = $bdd->prepare($sql); if ($query == false) { echo 'Erreur prepare'; print_r($bdd->errorInfo()); die(); } $res = $query->execute(array($destinataire)); if (!$res) { echo 'Erreur execute'; print_r($query->errorInfo()); die(); } $row = $query->fetch(); if ($row) { echo 'Ce user est déjà utilisé'; } else { echo 'Ce user est dispo'; } }else{ echo "Error : Aucun user...!"; } //Fin ?>
Décidément ... Toujours le même problème ...
J'ai ce message d'erreur maintenant:
Erreur executeArray
(
[0] => 42000
[1] => 1064
[2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') as nb
FROM membres
WHERE pseudo = '?'' at line 1
)
J'ai ce message d'erreur maintenant:
Erreur executeArray
(
[0] => 42000
[1] => 1064
[2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') as nb
FROM membres
WHERE pseudo = '?'' at line 1
)
C'est curieux mais ca marche à moitié ^^
Le texte affiché est toujours "data" mais dans le message d'erreur il m'indique toujours que l'user est déjà utilisé qu'il existe vraiment ou non dans ma BDD. J'ai modifié simplement le if en: if ($row == 0) { ... Mais du coup il m'indique toujours que l'user est dispo (qu'il existe vraiment ou non dans la bdd)
Le texte affiché est toujours "data" mais dans le message d'erreur il m'indique toujours que l'user est déjà utilisé qu'il existe vraiment ou non dans ma BDD. J'ai modifié simplement le if en: if ($row == 0) { ... Mais du coup il m'indique toujours que l'user est dispo (qu'il existe vraiment ou non dans la bdd)
Le souci c'est que tu n'as pas mis d' ID à tes span...(et que tu en as plusieurs...)
donc déjà.. mets y des ID
par exemple :
Ensuite.. modifie le code js ainsi :
Et pour le PHP :
donc déjà.. mets y des ID
par exemple :
<span id="destinataireFeedBack" class="feedback"></span>
Ensuite.. modifie le code js ainsi :
$(document).ready(function(){ $('#destinataire').keyup(function(){ var destinataire = $('#destinataire').val(); if(destinataire != ""){ $("#destinataireFeedBack").html(); var urlPagePhpAjx = "verifmembre.php"; $.ajax({ type: "POST", url:urlPagePhpAjx, data: { destinataire:destinataire }, async: false, dataType: "html", success: function(reponse){ $("#destinataireFeedBack").html(reponse); //Le temps des tests : alert("success ! " + reponse); }, error:function (xhr, ajaxOptions, thrownError) { alert("Error ! \n Status:"+xhr.status + "\n Error:"+thrownError); } }); }else{ $("#destinataireFeedBack").html('Veuillez inscrire un membre'); } }); });
Et pour le PHP :
<?php include '../connection.php'; $destinataire = isset($_POST['destinataire'])?$_POST['destinataire']:NULL; if($destinataire){ $sql="SELECT * FROM membres WHERE pseudo = '?' "; try{ $query = $bdd->prepare($sql); $query->execute(array($destinataire)); }catch (PDOException $e) { echo 'Erreur ! ' . $e->getMessage(); } $nb = $query->rowCount(); if ($nb>0) { echo 'Ce user est déjà utilisé'; } else { echo 'Ce user est dispo'; } }else{ echo "Error : Aucun user envoyé en POST...!"; } //Fin ?>
J'ai changé mon fichier verifmembre.php avec ces lignes de code:
et il renvoie la bonne réponse dans l'alert mais le texte affiché sur la page est toujours "data", une idée ?
<?php include '../connection.php'; //Partie pour le jquery if(isset($_POST['destinataire']) && !empty($_POST['destinataire'])){ $destinataire=$_POST['destinataire']; $query=$bdd->query('SELECT * FROM membres WHERE pseudo ="'.$destinataire.'" '); $rows= $query->rowCount(); if($rows == 1){ echo 'Pas dispo'; } else { echo 'Dispo'; } } ?>
et il renvoie la bonne réponse dans l'alert mais le texte affiché sur la page est toujours "data", une idée ?
J'ai modifié les pages avec tes lignes de code ainsi que mes span et il n'y a pas de changement ..
Le problème est d'office au niveau de l'ajax, avec mon code on voit une fraction de seconde la réponse de verifpseudo.php et directement après il est de nouveau affiché "data". J'ai à peine le temps de voir si le membre est dispo ou non.
Le problème est d'office au niveau de l'ajax, avec mon code on voit une fraction de seconde la réponse de verifpseudo.php et directement après il est de nouveau affiché "data". J'ai à peine le temps de voir si le membre est dispo ou non.
Le souci ne se trouve pas au niveau des éléménts de class ERROR ... mais feedback .....
... dans le code de ta page (et uniquement là ! ) modifie cette ligne :
par :
... testes à nouveau ton code... et regardes ce que ça donne
... dans le code de ta page (et uniquement là ! ) modifie cette ligne :
<td><label for="destinataire">Destinataire</label>: </td><span id="destinataireFeedBack" class="feedback"></span>
par :
<td><label for="destinataireFeedBack">Destinataire</label>: </td><span id="destinataireFeedBack" class="feedback_2"></span>
... testes à nouveau ton code... et regardes ce que ça donne