Bonjour,
Avez-vous un message d'erreur ?
Je vois qu'il y a du mysql et du mysqli donc cela ne vas pas . Il vous faut soit rester qu'en mysqli ou passer à PDO.
Bonjour à tous !
Alors voilà, j'ai un problème avec mon code php, j'essaie de faire un simple de tchat en php (je suis pas encore très bon en php), mais je rencontre des problêmes ...
J'ai fait un fichier avec les fonctions pour traiter, enregister/afficher les messages, une page où l'on inscrit le message et le pseudo , et une page de connection à la base de données. Je suis bloqué depuis au moins un mois, je n'arrive vraiment pas à savoir d'où ca peut venir ...
Voici le code de la connection à la db :
Voici celui des fonctions :
Et voici la page où l'on inscrit le pseudo et le message :
Voilà, peut etre y verrez-vous une erreur ou un problème, merci de votre aide, j'espère avoir été assez précis !
Ah oui, j'ai oublié, le session start c'est pour l'autre partie de mon site, qui utilise les sessions. La page de tchat est incluse sur une page index, où est incluse la page contenant la connection a la db.
Bonjour,
Avez-vous un message d'erreur ?
Je vois qu'il y a du mysql et du mysqli donc cela ne vas pas . Il vous faut soit rester qu'en mysqli ou passer à PDO.
Merci de votre réponse avant tout !
Le mysql et mysqli, c'est ma faute j'ai mis a l'origine le mysqli, mais voyant que ca ne marchait pas, j'ai essayé avec mysql, sans plus de succès et j'ai oublié de remettre mysqli dans le post. Le seul message d'erreur que j'ai est celui prévu dans mon code, disant : "message failed". J'ai inspecté l'élement et regardé avec firebug, aucune erreur.
Corriger votre code avec mysqli que j'y vois plus clair car la c'est un beau mélange. merci
C'est fait
ok.
Avez-vous procédé par étape pour vérifier le lieux de l'erreur ?
Le mysqli_query de la fonction get_msg va forcément retourner une erreur car il ne connait pas $con
J'ai fait beaucoup de test oui, je n'ai pas trouvé la source.
Si je pense qu'il la connait (j'ai oublié de préciser) la page tchat est incluse sur une page index, où est incluse la page de connection a la DB, j'aurais du préciser
Faites un var_dump($con); et dites moi ce que cela affiche ?
Voila ce que m'a retourné var_dump($con); , sur la page tchat.php :
D'accord, en relisant votre code et votre problème, c'est l'insertion d'un message qui plante ?
Oui, après je ne sais pas où est exactement l'erreur
Pour insert, une méthode est de cette structure :
Qu'elle est la structure de la table chat ?
Ah merci, j'ai mis cela $sql = "INSERT INTO chat(id, Sender, Message) VALUES(null,'{$sender}','$message')";, l'erreur persiste malheureusement
l'id est en auto-increment je suppose ?
Si oui, alors il ne faut pas le mettre.
Oui, le fait de mettre nul revient au meme non ? J'essaye ...
Non, pas de changement
Non car null est une valeur.
Nous n'avons pas sélectionné l'ID, mais on le remplis quand meme ?
oui, c'est mysql qui va s'en occupper.
ok, pas de changement malheuresement
Testons la valeur de run dans la condition et vérifions que $sql soit correctement écrit avec les doubles guillemets
Rien de tel que des var_dump pour vérifier au fur et à mesure
Donc si j'ai bien compris, var_dump($run) ?
oui et de $sql
Pardon, je n'avais pas vu, j'essaye ca
Ils renvoient tous deux NULL
$sql ne devrait pas être nul mais "insert ..."
Ah oui ? Il y a donc un problème a ce niveau ?
oui, revoir avec les " et '
Dans le INSERT ? Ce n'est pas la bonne forme ?
le var_dump($sql) devrait afficher la requête en entière et non null
Ah d'accord, mais savez vous à cause de quoi il affiche NULL ?
surement du au " et ', esseyer de le tourner autrement
Vous parlez bien des guillemets et apostrophes de $sql ? Si c'est le cas j'ai déjà essayé ...
puis-je voir le bout de code avec le var_dump($sql);
Oui biensur :
logique que c'est null, il ne sont pas dans la fonction (^_^)
ah :) Je les met au début par exemple ?
Non sinon il ne voudrons rien.
en plus il manque une ) à $sql
Voila ce qu'il me renvoie maintenant : string(51) "INSERT INTO chat (Sender, Message) VALUES ('', '') "
donc $sender et $message sont vides
et je vois un mysql pour $sender
Un mysql ? J'ai remplacé celui du run par un mysqli, si vous parlez de celui ci.
$sender = mysql_real....
vérifier que $sender et $message ne sont pas vide avec le mysqli_real....
Ah oui merci, c'est changé
Vraiment personne n'a d'idée ?
Bonsoir.
Si tu nous montrait où tu en est avec ton code en nous présentant ton code avec toutes les corrections que tu à fais depuis le début, ça pourrait nous permettre de t'aider.
Ouaip ok, voilà la dernière version :
et le tchat.php :
J'ai également mis le code sur github pour que vous compreniez comment fonctionnes mon site : https://gist.github.com/R04A/f73c71a7375b7c7bfbb4
L'erreur ne viendrait pas des simples quotes dans la fonction send_msg() ?
L'utilisation des doubles quotes permettent d'afficher directement le contenu de la variable, alors que les simples quotes vont interpréter textuellement la chaîne $variable et l'écrire tel quel.
Hello, Problème résolu :)
J'avais oublié de définir les variables de connection en global (global $con;) dans ma fonction, tout marche nickel.
Merci de votre aide