Probleme avec mon code jquery, text affiché est data
Résolu
Aaymeric
Messages postés
83
Statut
Membre
-
Giorgiolino Messages postés 250 Date d'inscription Statut Contributeur Dernière intervention -
Giorgiolino Messages postés 250 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
15 réponses
-
Bonjour
des quotes en trop autour e ta variable data -
Je les avais enlevé à la base mais le problème est toujours la :)
-
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 ?:$(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'); } }); });
-
Ah bha oui qu'est-ce qui m'ait arrivé ? :s J'ai changé mais le problème est toujours là ..
-
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:$.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<?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 :\ -
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 :<?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
) -
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 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 :<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:
<?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 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 :<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
-
-
Tu avais effectivement raison, ce sont les span de mon autre classe qui posent problèmes. J'ai modifié le nom du chemin d'acces de mon autre fichier js et je n'ai plus de problème donc je vais mettre des id partout. Merci pour ta patience Jordane45 !