Mysql_fetch_array
ciocciu
Messages postés
42
Statut
Membre
-
Christounet Messages postés 1266 Statut Membre -
Christounet Messages postés 1266 Statut Membre -
Bonjour,
petit pb de requête sql sur une boucle
je débute un peu donc merci de m'éclairer
voici le code
l'erreur me dit
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in line "celle en gras et soulignée"
merci par avance
lolo
petit pb de requête sql sur une boucle
je débute un peu donc merci de m'éclairer
voici le code
//minitchat
<?php
if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
{
if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
{
// D'abord, on se connecte à MySQL
mysql_connect("localhost", "ID", "pswd");
mysql_select_db("test");
// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
// Ensuite on enregistre le message
mysql_query("INSERT INTO minichatvolley VALUES('', '$pseudo', '$message')");
// On se déconnecte de MySQL
mysql_close();
}
}
// Que l'on ait enregistré des données ou pas...
// On affiche le formulaire puis les 10 derniers messages
// Tout d'abord le formulaire :
?>
<form action="page2.php" method="post">
<p>
Pseudo : <input type="text" name="pseudo" /><br />
Message : <input type="text" name="message" /><br />
<input type="submit" value="Envoyer" />
</p>
</form>
<?php
// Maintenant on doit récupérer les 10 dernières entrées de la table
// On se connecte d'abord à MySQL :
mysql_connect("localhost", "ID", "pswd");
mysql_select_db("test");
// On utilise la requête suivante pour récupérer les 10 derniers messages :
$reponse = mysql_query("SELECT * FROM minichatvolley ORDER BY ID DESC LIMIT 0,10");
// On se déconnecte de MySQL
mysql_close();
// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>
<?php
}
// Fin de la boucle, le script est terminé !
echo "</td>";
?>
l'erreur me dit
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in line "celle en gras et soulignée"
merci par avance
lolo
22 réponses
Chalut :3
https://www.commentcamarche.net/contents/784-php-bases-de-donnees
Tu récupères mal les données de te BDD ;) tu te débrouilles bien pour un(e) débutant(e) ;)
Code propre, bien commenté *_* C'est super !!! ^^
https://www.commentcamarche.net/contents/784-php-bases-de-donnees
Tu récupères mal les données de te BDD ;) tu te débrouilles bien pour un(e) débutant(e) ;)
Code propre, bien commenté *_* C'est super !!! ^^
Bonjour,
Tu dois te déconnecté de la base de données après la fin de la boucle et non avant, car tu ne peux plus récupérer tes résultats à ce moment-là.
A plus
Tu dois te déconnecté de la base de données après la fin de la boucle et non avant, car tu ne peux plus récupérer tes résultats à ce moment-là.
A plus
Il a déjà récupérer les résultats, il ne peut simplement pas les lire :)
// On utilise la requête suivante pour récupérer les 10 derniers messages : Il récupère la réponse
$reponse = mysql_query("SELECT * FROM minichatvolley ORDER BY ID DESC LIMIT 0,10");
// On se déconnecte de MySQL
mysql_close();
// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
Et là il ne peut pas lire, car il ne l'a pas stocké dans un tableau je crois
bonjour merci de vos réponses
loin de moi l'idée de m'attribuer ce code
je l'ai pris sur le siteduzero c'est celui de matteo
j'ai suivi tous ces tuto et ça m'a donné envie d'améliorer mon site alors je me lance....en bon newbee quand même!
pour l'erreur mysql_fetch_array c'est réglé ...j'avais mis un nom de table erroné minichatvolley au lieu de minitchatvolley corrigé et ça marche
j'ai essayé de l'insérer dans mon site ,dans un tableau où il apparaitrait à chaque ligne du tableau et où bien sur le tchat de chaque ligne devrait être indépendant l'un de l'autre
les champs apparaissent bien ça c'est ok c'est déjà pas mal ...:lol:
mais par contre plusieurs pb se posent
-tout d'abord seul le pseudo s'affiche pas le message
-ensuite il s'affiche 1 fois dans la 1ère ligne , 2 fois dans la seconde
3fois dans la 3ème ...etc etc
-enfin les tchats ne sont pas indépendants donc quand je tape sur la 1ère ligne ça apparait partout
je vous joins tout le code de cette 1ère colonne
je vous remercie encore beaucoup
loin de moi l'idée de m'attribuer ce code
je l'ai pris sur le siteduzero c'est celui de matteo
j'ai suivi tous ces tuto et ça m'a donné envie d'améliorer mon site alors je me lance....en bon newbee quand même!
pour l'erreur mysql_fetch_array c'est réglé ...j'avais mis un nom de table erroné minichatvolley au lieu de minitchatvolley corrigé et ça marche
j'ai essayé de l'insérer dans mon site ,dans un tableau où il apparaitrait à chaque ligne du tableau et où bien sur le tchat de chaque ligne devrait être indépendant l'un de l'autre
les champs apparaissent bien ça c'est ok c'est déjà pas mal ...:lol:
mais par contre plusieurs pb se posent
-tout d'abord seul le pseudo s'affiche pas le message
-ensuite il s'affiche 1 fois dans la 1ère ligne , 2 fois dans la seconde
3fois dans la 3ème ...etc etc
-enfin les tchats ne sont pas indépendants donc quand je tape sur la 1ère ligne ça apparait partout
je vous joins tout le code de cette 1ère colonne
<?php
foreach($listeDates as $cle=>$date){
echo "<tr>";
//premiere colone date
echo '<td align="center"><DIV class="dateclass">'.$date.'</DIV><br>';
//minitchat
if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
{
if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
{
// D'abord, on se connecte à MySQL
mysql_connect("localhost", "ID", "pswd");
mysql_select_db("test");
// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
// Ensuite on enregistre le message
mysql_query("INSERT INTO minitchatvolley VALUES('', '$pseudo', '$message')");
// On se déconnecte de MySQL
mysql_close();
}
}
// Que l'on ait enregistré des données ou pas...
// On affiche le formulaire puis les 10 derniers messages
// Tout d'abord le formulaire :
?>
<form action="page2.php" method="post">
<p>
Pseudo : <input type="text" name="pseudo" /><br />
Message : <input type="text" name="message" /><br />
<input type="submit" value="Envoyer" />
</p>
</form>
<?php
// Maintenant on doit récupérer les 10 dernières entrées de la table
// On se connecte d'abord à MySQL :
mysql_connect("localhost", "ID", "pswd");
mysql_select_db("test");
// On utilise la requête suivante pour récupérer les 10 derniers messages :
$reponse = mysql_query("SELECT * FROM minitchatvolley ORDER BY ID DESC LIMIT 0,10")or exit(mysql_error());
// On se déconnecte de MySQL
mysql_close();
// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>
<?php
}
// Fin de la boucle, le script est terminé !
echo "</td>";
?>
je vous remercie encore beaucoup
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Il te manques une balise </tr> dans ton code
Ensuite, à chaque occurrence de date (avec foreach), tu vas insérer un enregistrement, tu vas avoir un formulaire et tu vas afficher les 10 derniers enregistrements. C'est peut-être voulu ?
A plus
Il te manques une balise </tr> dans ton code
// Fin de la boucle, le script est terminé !
echo "</td>";
echo " </tr>";
Ensuite, à chaque occurrence de date (avec foreach), tu vas insérer un enregistrement, tu vas avoir un formulaire et tu vas afficher les 10 derniers enregistrements. C'est peut-être voulu ?
A plus
merci de t'y intéresser...
oui j'insère un nouvel enregistrement à chaque date donc à chaque ligne du tableau....c'est voulu
en fait je voudrais un minitchat indépendant pour chaque nouvelle date
pour le moment les pb restent les mêmes qu'à 16:35
par contre si je rajoute
echo " </tr>";
tout mon tableau part de travers ....
donc je l'ai pas mis...:lol::
merci encore
oui j'insère un nouvel enregistrement à chaque date donc à chaque ligne du tableau....c'est voulu
en fait je voudrais un minitchat indépendant pour chaque nouvelle date
pour le moment les pb restent les mêmes qu'à 16:35
par contre si je rajoute
echo " </tr>";
tout mon tableau part de travers ....
donc je l'ai pas mis...:lol::
merci encore
Bonjour,
En fait ton code devrait être le suivant (je ne l'ai pas testé)
Les echo doivent être dans la boucle et non après la boucle puisque les balises <tr> et <td> sont dans la boucle.
A plus
En fait ton code devrait être le suivant (je ne l'ai pas testé)
<p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>
<?php
echo "</td>";
echo "</tr>";
}
// Fin de la boucle, le script est terminé !
?>
Les echo doivent être dans la boucle et non après la boucle puisque les balises <tr> et <td> sont dans la boucle.
A plus
Bonjour,
rien à voir avec le problème, mais je vois que vous utilisez tous les 2 des balises Php quasimment tout le temps, mais si je me souviens bien, on peut écrire duu html dans du php, non ?!
Donc :
<?php
mon code html
echo "patati patata" ;
?>
ça le fait aussi non ? (pour un confort de lecture)
rien à voir avec le problème, mais je vois que vous utilisez tous les 2 des balises Php quasimment tout le temps, mais si je me souviens bien, on peut écrire duu html dans du php, non ?!
Donc :
<?php
mon code html
echo "patati patata" ;
?>
ça le fait aussi non ? (pour un confort de lecture)
j'ai essayé de modifier le code comme tu me l'as conseillé christounet mais ça va pas ....le tableau est complètement décalé et j'ai plein de "echo" qui s'affichent avant le tableau
en fait le <tr> est fermé plus loin dans le script
vous pensez pas qu'il faudrait ptêt une table différente pour chaque ligne....dans la mesure ou chaque tchat doit être indépendant?
merci
en fait le <tr> est fermé plus loin dans le script
vous pensez pas qu'il faudrait ptêt une table différente pour chaque ligne....dans la mesure ou chaque tchat doit être indépendant?
merci
Bonjour,
Je n'ai pas vu de balise </tr> dans le code que tu nous a donné, peut-être devrais-tu copier/coller le code complet et non une partie seulement.
Concernant le fait d'avoir une table par tchat, c'est peut-être pas une mauvaise idée si plus tard tu veux avoir des styles CSS différents en fonction du tchat.
A plus
Je n'ai pas vu de balise </tr> dans le code que tu nous a donné, peut-être devrais-tu copier/coller le code complet et non une partie seulement.
Concernant le fait d'avoir une table par tchat, c'est peut-être pas une mauvaise idée si plus tard tu veux avoir des styles CSS différents en fonction du tchat.
A plus
ok merci
au niveau de l'affichage ça va mieux maintenant le pseudo et le messge s'affichent
par contre
cela s'affiche toujours 1 fois dans la 1ère ligne , 2 fois dans la seconde
3fois dans la 3ème ...etc etc
-enfin les tchats ne sont pas indépendants donc quand je tape sur la 1ère ligne ça apparait partout
je vous joins une image de ce que ça donne
http://imageshack-france.com/out.php/i217672_screensite.JPG
merci encore
au niveau de l'affichage ça va mieux maintenant le pseudo et le messge s'affichent
par contre
cela s'affiche toujours 1 fois dans la 1ère ligne , 2 fois dans la seconde
3fois dans la 3ème ...etc etc
-enfin les tchats ne sont pas indépendants donc quand je tape sur la 1ère ligne ça apparait partout
je vous joins une image de ce que ça donne
http://imageshack-france.com/out.php/i217672_screensite.JPG
merci encore
Bonjour,
Désolé pour cette réponse tardive, fort occupé aujourd'hui.
Peux-tu copier/coller la définition de ta table minitchatvolley, c-à-d les colonnes , le ou les index, cela pourra peut-être me donner des idées, car à priori ton code html à l'air correct.
A plus
Désolé pour cette réponse tardive, fort occupé aujourd'hui.
Peux-tu copier/coller la définition de ta table minitchatvolley, c-à-d les colonnes , le ou les index, cela pourra peut-être me donner des idées, car à priori ton code html à l'air correct.
A plus
salut
aucun pb ....c'est déjà sympa de m'aider
j'ai pas bien compris ce que tu voulais exactement alors j'ai un screen de la table et de ce qu'elle contenait à cet instant
désolé
les voilà.....
http://imagik.fr/view-rl/118248
http://imagik.fr/view-rl/118249
et merci encore
aucun pb ....c'est déjà sympa de m'aider
j'ai pas bien compris ce que tu voulais exactement alors j'ai un screen de la table et de ce qu'elle contenait à cet instant
désolé
les voilà.....
http://imagik.fr/view-rl/118248
http://imagik.fr/view-rl/118249
et merci encore
Bonjour,
C'est bien ce que je voulais, définition de ta table , le ou les index et le contenu de cette table.
Juste une petite remarque, dans ton script tu fais un SELECT sur la table minitchatvolley mais tu m'as envoyé la table chat, mais je suppose que c'est la même chose.
Peux-tu essayer l'une des deux choses ci-dessous (a toi de voir ce qui est le plus facile)?
1°) Peux-tu rajouter dans ton code l'affichage de la colonne ID
2°) Peux-tu dans phpMyadmin, dans l'onglet SQL executé ton ordre
et ensuite mettre sur imagik.fr le résultat de soit 1°) soit 2°)
Merci
A plus
C'est bien ce que je voulais, définition de ta table , le ou les index et le contenu de cette table.
Juste une petite remarque, dans ton script tu fais un SELECT sur la table minitchatvolley mais tu m'as envoyé la table chat, mais je suppose que c'est la même chose.
Peux-tu essayer l'une des deux choses ci-dessous (a toi de voir ce qui est le plus facile)?
1°) Peux-tu rajouter dans ton code l'affichage de la colonne ID
<p><?php echo $donnees['id']; ?> : <strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>
2°) Peux-tu dans phpMyadmin, dans l'onglet SQL executé ton ordre
SELECT * FROM minitchatvolley ORDER BY ID DESC LIMIT 0,10
et ensuite mettre sur imagik.fr le résultat de soit 1°) soit 2°)
Merci
A plus
ok merci christounet
effectivement j'ai renommé ma table tchat pour simplifier et j'ai ajouté un champ date (qui pour le moment sert pas )
voilà ce que la réquête sql donne
http://imagik.fr/view-rl/123881
pour l'affichage des données ID, rien n'est affiché....pas très normal ça ....
voici ce que ça donne
http://imagik.fr/view-rl/123901
effectivement j'ai renommé ma table tchat pour simplifier et j'ai ajouté un champ date (qui pour le moment sert pas )
voilà ce que la réquête sql donne
http://imagik.fr/view-rl/123881
pour l'affichage des données ID, rien n'est affiché....pas très normal ça ....
voici ce que ça donne
http://imagik.fr/view-rl/123901
Bonjour,
Concernant l'affichage de l'ID, est-tu sur de le sélectionné dans ton ordre SQL ?
Concernant l'autre problème ( affichage 1 ligne, puis 2 , puis 3, ...) dans tes images, je ne vois où il se situe, le fait d'avoir plusieurs fois le même pseudo et message est normal étant donné que c'est ce que contient ta table tchat.
Quand au problème de tchat indépendant, là aussi je ne comprends pas très bien ce que tu veux dire, peut-être une image sera plus parlante ?
A plus
Concernant l'affichage de l'ID, est-tu sur de le sélectionné dans ton ordre SQL ?
Concernant l'autre problème ( affichage 1 ligne, puis 2 , puis 3, ...) dans tes images, je ne vois où il se situe, le fait d'avoir plusieurs fois le même pseudo et message est normal étant donné que c'est ce que contient ta table tchat.
Quand au problème de tchat indépendant, là aussi je ne comprends pas très bien ce que tu veux dire, peut-être une image sera plus parlante ?
A plus
salut
bin je voudrais simplement que mon tchat soit indépendant pour chaque match
c'est à dire que sur cette image
http://imageshack-france.com/out.php/i217672_screensite.JPG
je voudrais pouvoir taper dans le tchat à la date du 6-10-2008 par exemple " je prends ma voiture"
sans que cela apparaisse aussi à la date d'après
ci sur l'image 13-10-2008)
on tchaterait indépendamment sur chaque date de match...
c'est plus clair là ?
merci encore de m'aider
sinon pour l'affichafge de l'ID effectivement je l'ai pas mis dans la requete SQl c'est pour ça
bye
bin je voudrais simplement que mon tchat soit indépendant pour chaque match
c'est à dire que sur cette image
http://imageshack-france.com/out.php/i217672_screensite.JPG
je voudrais pouvoir taper dans le tchat à la date du 6-10-2008 par exemple " je prends ma voiture"
sans que cela apparaisse aussi à la date d'après
ci sur l'image 13-10-2008)
on tchaterait indépendamment sur chaque date de match...
c'est plus clair là ?
merci encore de m'aider
sinon pour l'affichafge de l'ID effectivement je l'ai pas mis dans la requete SQl c'est pour ça
bye
Bonjour,
Je pense que tu dois donner des noms différents aux variables Pseudo et Message, tu pourrais utiliser un tableau, ensuite mettre à jour ta colonne date lors de la création d'un nouveau enregistrement et également de tester la valeur de ta date dans ton select. Exemple de code pour le tableau
Tiens moi au courant. A plus
Je pense que tu dois donner des noms différents aux variables Pseudo et Message, tu pourrais utiliser un tableau, ensuite mettre à jour ta colonne date lors de la création d'un nouveau enregistrement et également de tester la valeur de ta date dans ton select. Exemple de code pour le tableau
<form action="page2.php" method="post"> <p><?php echo "Pseudo : <input type='text' name='pseudo['.$date']' /><br />"; echo "Message : <input type='text' name='message['.$date']' /><br /> ?> <input type="submit" value="Envoyer" /> </p> </form>. Tu peux alors tester tes variables en fonction de la valeur de ta date
foreach($listeDates as $cle=>$date){
echo "<tr>";
//premiere colone date
echo '<td align="center"><DIV class="dateclass">'.$date.'</DIV><br>';
//minitchat
if (isset($_POST['pseudo[.$date]']) AND isset($_POST['message[.$date['])) // Si les variables existent
{
if ($_POST['pseudo[.$date]'] != NULL AND $_POST['message[.$date]'] != NULL) // Si on a quelque chose à enregistrer
{
// D'abord, on se connecte à MySQL
mysql_connect("localhost", "ID", "pswd");
mysql_select_db("test");
// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
// Ensuite on enregistre le message
mysql_query("INSERT INTO minitchatvolley VALUES('', '$pseudo', '$message',date'$date')");
// On se déconnecte de MySQL
mysql_close();
}
}. Tu changes également ton ordre select
// On utilise la requête suivante pour récupérer les 10 derniers messages :
$reponse = mysql_query("SELECT * FROM tchat where date = date'.$date' ORDER BY ID DESC LIMIT 0,10")or exit(mysql_error());
Tiens moi au courant. A plus
salut christounet
j'ai modifié comme tu me l'as dis
d'abord j'ai changé le champ date dans la table en date_match sur conseil d'un pote
ensuite j'ai modifié le code comme suis
et ça ne change rien ....:-(
toujours un affichage dans le 1er
2 dans le second
....
j'ai modifié comme tu me l'as dis
d'abord j'ai changé le champ date dans la table en date_match sur conseil d'un pote
ensuite j'ai modifié le code comme suis
if (isset($_POST['pseudo[.$date]']) AND isset($_POST['message[.$date]'])) // Si les variables existent
{
if ($_POST['pseudo[.$date]'] != NULL AND $_POST['message[.$date]'] != NULL) // Si on a quelque chose à enregistrer
{
// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
$message = mysql_real_escape_string(htmlspecialchars($_POST['message[.$date]']));
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo[.$date]']));
// Ensuite on enregistre le message
mysql_query("INSERT INTO tchat VALUES('', '$pseudo', '$message','date_match'$date'')")or die(mysql_error());
// On se déconnecte de MySQL
mysql_close();
}
}
// Que l'on ait enregistré des données ou pas...
// On affiche le formulaire puis les 10 derniers messages
// Tout d'abord le formulaire :
?>
<form action="page2.php" method="post">
<p><?php
echo "Pseudo : <input type='text' name='pseudo['.$date']' /><br />";
echo "Message : <input type='text' name='message['.$date']' /><br />";
?>
<input type="submit" value="Envoyer" />
</p>
</form>
<?php
// Maintenant on doit récupérer les 10 dernières entrées de la table
// On se connecte d'abord à MySQL :
mysql_connect("localhost", "id", "pswd");
mysql_select_db("volleycrna");
// On utilise la requête suivante pour récupérer les 10 derniers messages :
$reponse = mysql_query("SELECT * FROM tchat where date_match = date_match'.$date' ORDER BY DESC LIMIT 0,10") or die(mysql_error()) ;
// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message'];?></p>
<?php
}
// Fin de la boucle, le script est terminé !
// On se déconnecte de MySQL
mysql_close();
echo "</td>";
et ça ne change rien ....:-(
toujours un affichage dans le 1er
2 dans le second
....