8792 sujets

Développement web côté serveur, CMS

bonsoir tout le monde,

voili voilou, ca fait tres longtemps que je cherche a faire fonctionner un script qui affiche ce que l'on a tapé précédemment, comme un chat Smiley cligne

voila le code :


<html>
<body>
<?php
if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
	if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL)
	{
		mysql_connect("localhost", "root", "");
		mysql_select_db("test");
		
		$pseudo = htmlentities ($_POST['pseudo']);
		$message = htmlentities ($_POST['message']);
		
		mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");
		
		mysql_close();
	}
}
?>

<div>
<form action="minichat.php" method="post">
<p>Pseudo : <input type="text" name="pseudo" /></p>
<p><textarea name="message" span="8" rows="4"></textarea></p>
<input type="submit" value="envoyer" />
</form>
</div>


<div>
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("test");

$reponse = mysql_query("SELECT * FROM minichat ORDER BY id DESC LIMIT 0,9");

while ( $msg = mysql_fetch_array($reponse) )
{
?>
<p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>
<?php
}
mysql_close();
?>
</div>


</body>
</html>


L'erreur retournée : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\minichat.php on line 39


Je suis donc en local, avec easyphp Smiley cligne J'ai crée la base "test", et dedans, j'ai crée la table "minichat" avec 3 champs : id (INT, auto_increment, primaire), pseudo (VARCHAR, 255 max) et message(VARCHAR, 255 max)

Je ne comprends vraiment pas pourquoi ca ne marche pas...j'ai bien vérifié le code, bien verifié si la boucle se ferme bien, mais pas moyen de trouver l'erreur... Smiley decu

Je me suis dis, peut etre que EasyPHP ne supporte pas le code mysql_fetch_array(), alors j'ai uppé le code tout propre du tutoriel sur mon compte free ( ici ) mais ca ne marche toujours pas...Bref, j'aurai besoin de vous ! Je suis trop mauvais en PHP pour y comprendre quelque chose ^^

Voili voilou, merci
A+

Léo
Modifié par leomac (09 Mar 2007 - 13:25)
Bonsoir leomac,

Sans aller très profondement dans ton code, a mon avis tu as cette erreur ( qui d'ailleurs est une erreur PHP et non Mysql ) qui concerne la valeur retournée par Mysql_query qui doit être False, si tu n'a encore rien rentré dans ta BDD.
Or pour que le mysql_fetch_Array fonctionne , je crois me souvenir qu'il faut que $reponse vale true.

Pour contourner cela refait un test en mettant le caractere @ devant mysql_fetch_array ( ignore l'erreur de la requete ):

@mysql_fetch_array($variable)

essaie aussi de remplir ta table avec un commentaire via phpmyadmin et reteste

Voila !
Salut RoseGrenouille,

Meeerci beaucoup pour ton aide, ca me parait logique !! Malheuresement, je n'ai pas encore cette logique ^^ En tout cas, meerci beaucoup, j'ai vraiment tout tenté, mais en vain...Et la, je pense que c'est une tres bonne idée Smiley langue je vais ajouter une entrée via mysql Smiley cligne Encore merci pour ton aide !

Je reviens te dire la réponse Smiley cligne Encoore merci beaucoup !!! Pour une fois que j'etais chaud pour commencer le PHP...Et une grosse erreur qui m'arrete net ^^

Je teste tout de suite, mici RoseGrenouille

A++
Léo
re-salut,

zuut ca ne marche pas... Smiley decu ca ignore bien l'erreur, mais ca ne m'affiche rien quand je tape mon message...Quand je l'ajoute dans ma base de donnée manuellement, le php ne veut meme pas l'afficher...Pourtant, j'ai bien mis la syntaxe mysql_query avec * pour tout prendre, et a la fin, dans le echo, je fais afficher ce qu'il me faut...
Zuut, je ne sais pas du tout pourquoi ca marche pas...

En tout cas, merci RoseGrenouille, l'important est que tu aies essayé de m'aider Smiley cligne C'est super gentil de ta part Smiley cligne

Si quelqu'un a une petite idée Smiley langue pendant ce temps, je vais encore revoir le mysql qui me selectionne les champs qu'il me faut et ce qu'il y a dans echo Smiley cligne encore mici A++

Léo
Bonsoir leomac,

L'erreur est ailleurs ... Tu fermes la connexion à ta base mysql (mysql_close();) avant le parcours du résultat de ta requête (mysql_fetch_array($reponse)).

Dans la pratique : on execute la requete (mysql_query($sql)), on parcours le resultat retourné (mysql_fetch_.....), on libère les ressources utilisées (mysql_free_result($result)) puis on ferme la connexion (mysql_close()).

Bonne continuation Smiley cligne
Romain
Effectivement......pas vu ca Smiley confused

Tu peux aussi ne pas mentionner le mysql_close() qui est, la vrai bonne maniere de faire mais qui de toute facon sera fermé a la fin du script ....
Bonsoir Romain,

Tout d'abord, merci beaucoup pour ton aide Smiley cligne En tout cas, ce que tu viens de me dire, ca me servira toute ma vie je pense !!! merci !!

Je tente ca tout de suite, et je vous dis le résultat Smiley cligne

Encore merci et bonne soirée

Léo
Merci a vous tous de tenter de m'aider dans ce script, qui ma foi, est un peu lourd Smiley langue

J'ai encore retenté de déplacer, mais mon script doit etre bourré de fautes, c'est pas possible...
le code mysql_fetch_array sert à afficher les entrées grace a la boucle...C'est donc surement pour ca que ca ne mache pas...

J'ajoute le @ devant mysql_fetch_array() et j'essaie d'ajouter une entrée, meme si je veux pas obligatoirement l'afficher...Je suis allé vérifié si une entrée a été ajouté dans mysql, mais que neni ... Smiley decu

Alala, faut que je revoie mon code.... Smiley decu

Voila le nouveau code au cas ou si quelqu'un voit l'erreur :

<html>
<body>
<?php
if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
	if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL)
	{
		mysql_connect("localhost", "root", "");
		mysql_select_db("test");
		
		$pseudo = htmlentities($_POST['pseudo']);
		$message = htmlentities($_POST['message']);
		
		mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");
		
		mysql_close();
	}
}
?>

<div>
<form action="minichat.php" method="post">
<p>Pseudo : <input type="text" name="pseudo" /></p>
<p><textarea name="message" span="8" rows="4"></textarea></p>
<input type="submit" value="envoyer" />
</form>
</div>


<div>
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("test");

$reponse = mysql_query("SELECT * FROM minichat ORDER BY id DESC LIMIT 0,9");



while ( $msg = @mysql_fetch_array($reponse) )
{
?>
<p>
<p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>
</p>
<?php
}
mysql_close();
?>
</div>


</body>
</html>



encore merci a tous pour votre aide, c'est super sympas !! Mici a++
Léo
Modifié par leomac (08 Mar 2007 - 22:13)
Première remarque :

if (isset($_POST['pseudo']) AND isset($_POST['message']))


l'opérateur AND n'existe pas en php ; en PHP c'est "&&" soit :

if (isset($_POST['pseudo']) && isset($_POST['message']))


Je suis le reste ...
Deuxième remarque :

<?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?>


Il n'existe pas de tableau $donnees ; je suppose que tu veux dire $msg Smiley cligne

<?php echo $msg['pseudo']; ?></strong> : <?php echo $msg['message']; ?>
hello encore moi

t'as une inversion de guillemets cette fois et une parenthèse qui manque.....
en passant tu peux aussi rajouter de demander l'erreur Mysql si elle existe

ta version

mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");


et la bonne

mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')") or die(mysql_error());


y a deja ca a voir !!
a écrit :
l'opérateur AND n'existe pas en php ; en PHP c'est "&&" soit :


c'est vrai et faux ! AND n'existe pas mais and existe, tout comme &&.

la différence entre les deux est la préséance de l'un sur l'autre. en gros si tu n'as que deux expressions à lier , tu peux utiliser l'un comme l'autre au choix !

Plus d'infos dans le manuel
oulaaa mais vous avez des yeux de faucon didonc !!! Merci beaucoup à vous, je répare ca tout de suite...


Oh lala, $donnees se trouve dans mon 2ème script....Je répare ca tout de suite !! encore merci beaucoup a vous 2, vous etes vraiment bons didonc !!

Je fais tres rapidement la vaisselle pour que mon coloc fasse à manger ( c'est mon tour... Smiley decu ) et je reviens vous voir Smiley lol

merci RoseGrenouille et Yoda Smiley cligne
je laisse Yoda la dessus....moi c'est l'heure du gouter et de me barrer du boulot !

bon courage avec php .....

il faut etre tres meticuleux avec php et vraiment comprendre ce qu'on ecrit a part ca , c'est vraiment un langage simple a comprendre.....
Bon gouter RoseGrenouille et encore merci pour ta grande participation et toutes les astuces que toi et yoda m'ont donné...
Chez moi, il est 22h, et j'ai pris mon temps pour faire la vaisselle...donc, on doit diner tres bientot ^^


J'ai bien tout réparé, et surprise grâce a mysql_error(), ils m'ont sorti une vraie grosse erreur...qui m'enfonce encore plus, je crois Smiley decu

Ca m'affiche : Aucune base n'a été selectionné


Je viens encore de vérifier...Vu que je suis en localhost, c'est bel et bien :

mysql_connect("localhost", "root", "");


Normalment, le pseudo doit etre root et il n'y a pas de mot de passe...

Pour le choix de la base, je viens de vérifier, j'ai tapé comme nom de base "test" tout en minuscule sur phpmyadmin(sql)

La, je ne comprends vraiment pas pourquoi il me ressort cette erreur... Smiley decu

J'édite l'ancien code avec toutes vos corrections Smiley cligne

Encore merci, je vais quand meme essayer de chercher, si vous etes pas libres, ne perdez pas de temps ce soir, vous m'avez deja grandement aidé cette journée...Et je vous en remercie, le forum d'Alsacreation est tres actif, et vous partagez vos idées en aidant les débutants Smiley cligne
Donc, ce soir, je vais tout tenter ( en copiant mon premier code biensur Smiley cligne ) et je vous ferai parvenir le résultat demain Smiley cligne

En attendant, bonne nuit a tous, et encore merci pour votre aide Smiley cligne

Sur ce, je vais allé manger, ne vous prenez plus la tete sur mon ptit probleme pour ce soir, je ne veux surtout pas vous prendre tout votre temps libre Smiley cligne

Allez zoou, a table, et apres au PHP Smiley cligne

mici A+++

Léo Smiley cligne
YeeEeAAaH merci beaucoup RoseGrenouille et Yoda !!! C'est super sumpas de m'avoir aider jusqu'au bout Smiley cligne En faite, le probleme etait vraiment trop bete...

Mon serveur local EasyPHP doit avoir un probleme...Je vais le desinstaller et le reinstaller...

J'ai testé sur free en ligne avec mon coloc xD
http://shinois.free.fr/coursphp/minichat2.php

Je suis vraiment trop content, je vais pouvoir continuer dans mon ptit apprentissage du PHP Smiley langue Esperons, je ne rencontrerai pas autant de problemes quand j'aurai appris a faire un systeme de news ^^

En tout cas, je peux dormir en paix, grace a vous !!

Encore merci a vous tous, et bonne nuit !!
A+++
Léo Smiley cligne
tu es super sympa, encore merci pour votre aide vous deux Smiley cligne Et c'est vrai qu'il faut avoir la tête reposée pour faire du php...Souvent, quand tu es bien fatigué, tu oublies tout ^^

Bonne journée, a bientot Smiley cligne

Léo