bigornot Posté 4 Avril 2004 Posté 4 Avril 2004 (modifié) je veux afficher une table entiere, mais, quand j'essaie, ca n'affiche que 1 message ( le premier, selon le classement en id comment fzire pour que ca affiche tout ? partie head : <?$msg = "rzte";include("config.php");_AT_mysql_connect($db_chemin,$db_user,$db_pass) or die("Impossible de se connecter à la base de données");_AT_mysql_select_db("bdbourgeron") or die("Impossible de se connecter à la base de données");$query = "SELECT * FROM bistrot ORDER BY id DESC ";$result = "mysql_query($query)";$nb = "mysql_fetch_array($result)";?> partie body : <?phpecho "<br>".$nb['titre'];echo "<br>".$nb['message'];echo "<br>".$nb['ps'];?> Modifié 4 Avril 2004 par bigornot
Dan Posté 4 Avril 2004 Posté 4 Avril 2004 Salut bigornot, mysql_fetch_array() ne retourne que le record suivant, ou false s'il n'y en a plus. Il faut donc le mettre dans une boucle comme: while ($nb = mysql_fetch_array($result)) { echo "<br>".$nb['titre']; echo "<br>".$nb['message']; echo "<br>".$nb['ps'];} Dan
bigornot Posté 4 Avril 2004 Auteur Posté 4 Avril 2004 bah tiens ... j'ai trouvé le moyen de planter un ordi ! en effet, ca me l'a affiché ( le mess ) indefiniment ... en fait, ca veut dire quoi "while" et comment on s'en set ?
bigornot Posté 4 Avril 2004 Auteur Posté 4 Avril 2004 surtout que ca m'a affiché toujours le meme mess, pas toute le table ...
Country Posté 4 Avril 2004 Posté 4 Avril 2004 while en fait c'est une boucle. Sa peut se traduire ~ comme sa : Tant que (cette condition est vraie) alors action a éxécuterFin Tant que Donc tant que la condition entre parenthèse est vraie alors il exécutera le code entre { et }. Si comme dans ton cas sa t'as affiché le mess indéfiniment alors tu as du faire une faute et la condition était toujours vraie (bloucle infinie).
bigornot Posté 4 Avril 2004 Auteur Posté 4 Avril 2004 mais oui, mais, alors, on ne peut pas arreter manuellement la boucle ?
bigornot Posté 4 Avril 2004 Auteur Posté 4 Avril 2004 je vous invite a aller jeter un oeil à : http://bdbourgeron.free.fr/redesign/bistrot/ pasque la, ca bug dur ! le m qui se repete, c'etait le mess d'essai ... mais, il apparait encore ! j'ai pourtant supprimmé la table !
Anonymus Posté 4 Avril 2004 Posté 4 Avril 2004 Bonjour, la boucle conditionnelle while signifie : tant que (condition est vrai){ // faire ceci } Comment ca marche ? Il y a plusieurs facons d'utiliser while. L'une d'elles est d'afficher toutes les lignes d'un fichier. Ca donne ceci : // on ouvre le fichier :pointeur_fichier = ouvre fichier.// tant que ce n'est pas la fin du fichier :tant que ( NON fin_fichier (pointeur_fichier) // on lit la ligne suivante : ligne = lecture_ligne(pointeur_fichier). on écrit la ligne (dans son navigateur) que l'on vient d'extraire du fichier : ecrire ligne. // on a fini la boucle, on met un arret de boucle. FIN tant que // on a fini de lire le fichier, on ferme le fichier.ferme_fichier Que va faire ce programme ? Il va ouvrir le fichier, lire la première ligne, écrire la première ligne, et en arrivrant à la "FIN tant que", va regarder la condition : On n'est pas à la fin du fichier ? On refait un tour. On lit donc la deuxième ligne. On l'écrit. On est à la fin du fichier ? Non. On refait un tour... etc, etc. On est à la fin ? oui ? Donc, on sort de la boucle. On ferme le fichier. Voilà. Pour ton problème de mmmmmmmm.., donnes nous le code qui donne cette boucle. A+, Anonymus.
bigornot Posté 6 Avril 2004 Auteur Posté 6 Avril 2004 voila mon code ... <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <? $msg = "rzte"; include("config.php"); _AT_mysql_connect($db_chemin,$db_user,$db_pass) or die("Impossible de se connecter à la base de données"); _AT_mysql_select_db("bdbourgeron") or die("Impossible de se connecter à la base de données"); $query = "SELECT * FROM bistrot ORDER BY id"; $result = "mysql_query($query)"; ?> <title>index.php</title> <meta name="author" content="Franck Bourgeron"> <meta name="publisher" content="Franck Bourgeron"> <meta name="generator" content="HTML Creator 3.5.1"> </head> <body> <?php while ($nb = "mysql_fetch_array($result)") { echo "<br>".$nb['titre']; echo "<br>".$nb['message']; echo "<br>".$nb['ps']; } ?> <form type="submit" action="ok.php"> titre ========:<input type="text" name="titre" size="20" align="center"><br> message ======:<textarea rows="20" name="message" cols="20"></textarea><br> post-scriptum :<textarea rows="20" name="ps" cols="20"></textarea><br> <br> <br> <input type="submit" value="envoyer" align="center"> </form> </body> </html>
Anonymus Posté 6 Avril 2004 Posté 6 Avril 2004 Enlèves les apostrophes "" entre les fonctions de php. Ainsi, while ($nb = "mysql_fetch_array($result)") { devient : while ($nb = mysql_fetch_array($result)) { et $result = "mysql_query($query)"; devient : $result = mysql_query($query); A+, Anonymus.
-ZN- Posté 6 Avril 2004 Posté 6 Avril 2004 Tu as aussi la solution php.net > documentation > fonctions mysql ... c'est tres bien explique, et tu peux faire un copier coller des exemples (qui fonctionnent tres bien!)
bigornot Posté 6 Avril 2004 Auteur Posté 6 Avril 2004 oulalah ! ca m'enerve mais ca m'enerve ... :mad2: :mad2: maintenant, c'est la partie mysql du formulaire ... pourtant, ca me semble correct ! : <?phpinclude ("config.php");$rate = "nonononon !";$msg = "la connexion a echoue";$db = mysql_connect($db_chemin,$db_user,$db_pass) or die ($msg);$selectdb = "mysql_db_query(INSERT INTO bistrot('pseudo','titre','message','ps') VALUES ('$pseudo,$titre,$message,$ps')) or die ($rate)";$mysql_titre = "mysql_db_query(INSERT INTO bistrot('titre') VALUES ('$titre')) or die ($rate)";$mysql_mess = "mysql_db_query(INSERT INTO bistrot('message') VALUES ('$message')) or die ($rate)";$date = "strftime('%d/%m/%y %H:%M:%S')";$mysql_reste = "mysql_db_query(INSERT INTO bsitrot('pseudo','date',ps') VALUES ('$pseudo,$date,$ps')) or die ($rate)";if($titre == "" ){ echo " Vous devez mettre un titre ";}else{$mysql_titre;}if($message == "" ){ echo " Vous devez mettre un message";}else{$mysql_mess;}$mysql_reste;?>
Anonymus Posté 6 Avril 2004 Posté 6 Avril 2004 Dans tes requètes, tu mets parfois : bistrot, parfois bsitrot... L'abus d'alcool serait ...... ?
Anonymus Posté 6 Avril 2004 Posté 6 Avril 2004 De plus, dans cette ligne, et les semblables : $selectdb = "mysql_db_query(INSERT INTO bistrot('pseudo','titre','message','ps') VALUES ('$pseudo,$titre,$message,$ps')) or die ($rate)"; il te faut, comme expliqué plus haut : - enlever les guillemets doubles qui entourent les fonctions, et en mettre autours des requètes sql. Ca donnerait : $selectdb = mysql_db_query("INSERT INTO bistrot('pseudo','titre','message','ps') VALUES ('$pseudo,$titre,$message,$ps')) or die ($rate); Ensuite, la fonction mysql_db_query s'ecrit avec le nom de la db, comme paramètre. Mais... Ensuite, la fonction mysql_db_query est obsolète depuis php 4.0.6, il faut la remplacer par mysql_query. Hum... En fait, elle ne fait pas grand chose, ton code. Peux tu expliquer ce que tu veux faire, avec ? Et la structure de la table bistrot ? stp ? s'il y a un identifiant, par exemple comme id_bistrot, ou autre, et s'il est auto increment, etc .? Anonymus.
bigornot Posté 6 Avril 2004 Auteur Posté 6 Avril 2004 précise ta question, svp ... ma structure : id, date, pseudo, titre, message, ps ce petit code sert a ajouter ... ( dans le bistrot ) le bistrot est un mini-forum, déstiné a etre rapide ...
bigornot Posté 6 Avril 2004 Auteur Posté 6 Avril 2004 ah ! modification faite ! maintenant, ca oscille entre parse error ( line, ca change en fonction des modifs : une ligne que je croyais reussie redevien en parse error ... !) et entre or die ($msg) ....
Anonymus Posté 7 Avril 2004 Posté 7 Avril 2004 Tu peux redonner le code, s'il te plait, je pense qu'il y a une autre erreur, dans l'ordre des INSERT
bigornot Posté 7 Avril 2004 Auteur Posté 7 Avril 2004 <?php include ("config.php"); mysql_connect($db_chemin,$db_user,$db_pass); mysql_select_db("bdbourgeron"); if($message == "") { echo " Vous devez mettre un message ou un titre"; } else { mysql_query("INSERT INTO bistrot(message,titre,ps) VALUES ('$message','$titre','$ps')") or die ("..."); } ?>
bigornot Posté 7 Avril 2004 Auteur Posté 7 Avril 2004 ah ! tiens ? j'ai un pitit probleme ... ca ne montre pas le dernier messae ... ca ne le montre que quand il y a un avant dernier ...
Anonymus Posté 7 Avril 2004 Posté 7 Avril 2004 Dans le code que tu donnes au dessus : Tu fais 'INSERT INTO bistrot (-pseudo,titre,message) puis 'INSERT INTO bistrot (message) puis ... A chaque fois, cela créé une ligne supplémentaire dans ta base de données, dans ta table bistrot. Concrètement, ta table ressemble à ceci : id | ---- pseudo ---- | ---- titre ---- | ---- message ---- | 1 |.....Anonymus....|......untitre.....| .....un message....| 2 | .......................|.....................|.....un message....| 3 | ....... Dan .......| ....autre titre..|encore un message| 4 | .......................| ....................|encore un message| 5 | ....bigornot.......|encore.un.titre|...et un message...| 6 |........................|.....................|...et un message...| "Les petits points sont juste faits pour assurmer l'alignement." C'est à dire : A chaque fois que tu fais appel à INSERT INTO, cela te créé une ligne supplémentaire dans la table. Or, si tu ne remplis pas les champs correctement, cela te donnera des champs vides, là où tu cherches à les remplir. En fait : Faire une requète 'INSERT INTO (pseudo,titre,message) te permet de remplir tous les champs d'un coup. La requète pour modifier un enregistrement existant est UPDATE .... SET .... . Pour ce qui est de ton problème de dernier message, il nous faut la boucle mysql_fetch_array. Voilà.A+, Anonymus.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant