Fonction allergique à une requête MySQL
Résolu/Fermé
Ziltoid
Messages postés
32
Date d'inscription
mardi 2 octobre 2007
Statut
Membre
Dernière intervention
6 août 2014
-
24 oct. 2007 à 13:21
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 - 24 oct. 2007 à 15:04
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 - 24 oct. 2007 à 15:04
A voir également:
- Fonction allergique à une requête MySQL
- Fonction si et - Guide
- Mysql download - Télécharger - Bases de données
- Fonction somme excel - Guide
- Fonction moyenne excel - Guide
- Fonction filtre excel n'existe pas - Forum Excel
3 réponses
Ziltoid
Messages postés
32
Date d'inscription
mardi 2 octobre 2007
Statut
Membre
Dernière intervention
6 août 2014
16
24 oct. 2007 à 14:23
24 oct. 2007 à 14:23
J'ai vu que j'avais un problème avec les variables définies au départ, il fallait les inclure dans la fonction pour qu'elles fonctionnent localement. Donc ça c'est bon ça marche.
Sauf que...
Dans la version non-AJAX j'utilisais le code suivant pour afficher la conversation :
(le code($donnees['conv_texte']) c'est une fonction pour du bbcode).
J'ai remplacé le "echo" par "return" puisqu'il s'agit d'une fonction, et visiblement maintenant il n'effectue le "while" qu'une seule fois, c'est-à-dire qu'il ne me retourne que le dernier texte.
Je peux me tromper, mais je pense que c'est parce que "return" ne peut retourner qu'une seule valeur, et donc les autres textes retournés sont écrasés par le dernier "return" effectué.
Mais dans ce cas, comment faire pour que les valeurs soient cumulées et que tous mes textes soient affichés (comme le faisait "echo") ?
Sauf que...
Dans la version non-AJAX j'utilisais le code suivant pour afficher la conversation :
$reponse = mysql_query("SELECT * FROM chat_prive WHERE conv_from = $am_from && conv_to = $am_to || conv_from = $am_to && conv_to = $am_from ORDER BY conv_id DESC LIMIT 0,50"); while ($donnees = mysql_fetch_array($reponse) ) { $temps = date("(d/m/y H:i) ", $donnees['conv_date']); $mess = ' '.code($donnees['conv_texte']).' '; $mess = stripslashes($mess); echo'<p class=chatp> '.$temps.' <strong> '.$donnees['conv_pseudo'].' </strong> :<br /> '.$mess.' </p>'; }
(le code($donnees['conv_texte']) c'est une fonction pour du bbcode).
J'ai remplacé le "echo" par "return" puisqu'il s'agit d'une fonction, et visiblement maintenant il n'effectue le "while" qu'une seule fois, c'est-à-dire qu'il ne me retourne que le dernier texte.
Je peux me tromper, mais je pense que c'est parce que "return" ne peut retourner qu'une seule valeur, et donc les autres textes retournés sont écrasés par le dernier "return" effectué.
Mais dans ce cas, comment faire pour que les valeurs soient cumulées et que tous mes textes soient affichés (comme le faisait "echo") ?
Ziltoid
Messages postés
32
Date d'inscription
mardi 2 octobre 2007
Statut
Membre
Dernière intervention
6 août 2014
16
24 oct. 2007 à 14:59
24 oct. 2007 à 14:59
C'est bon j'ai la solution :
J'avais un dernier problème avec mes accents à cause du passage à l'AJAX, mais c'est bon c'est résolu :
$truc=''; while ($donnees = mysql_fetch_array($reponse) ) { $temps = date("(d/m/y H:i) ", $donnees['conv_date']); $mess = ' '.code($donnees['conv_texte']).' '; $mess = stripslashes($mess); $truc.='<p class=chatp> '.$temps.' <strong> '.$donnees['conv_pseudo'].' </strong> :<br /> '.$mess.' </p>'; } return $truc;
J'avais un dernier problème avec mes accents à cause du passage à l'AJAX, mais c'est bon c'est résolu :
$mess = stripslashes(utf8_encode($mess));
gryzzly
Messages postés
4608
Date d'inscription
lundi 7 novembre 2005
Statut
Contributeur
Dernière intervention
24 octobre 2020
1 330
24 oct. 2007 à 15:04
24 oct. 2007 à 15:04
Lol, j'aime l'autorésolution :-D