> Tous les forumsForum des Webmasters

 requete sur mysql
Statut du sujet : NON RESOLU Imprimer
 nova88
  Posté le 27/10/2006 @ 15:57  
 Petit astucien

13 Messages
bonjour a tous, je voudrais savoir pourquoi cette satanée accolade est a poser après l'ouverture d'une fonction php alors qu'elle à été ouverte dans la fonction précédente <?php mysql_connect("localhost","root",""); mysql_select_db("test"); $reponse=mysql_query("SELECT nom FROM informations_visiteurs"); while ($donnee=mysql_fetch_array($reponse)) { ?> le nom des visiteurs est: <?php echo $donnee['nom'];?></br> <?php } mysql_close();?> vous voyez ce que je veux dir? on ouvre l'accolade. on termine la consigne php, on ouvre une nouvelle consigne php et on ferme l'accolade... y a-t-iol une explication? merci d'éclairer ma lanterne...
 Afficher le profil de nova88Envoyer un message privé à nova88
 
 
Publicité
 AlexPrince  Posté le 27/10/2006 à 16:24  
Petit astucien

398 Messages
Premièrement, quand tu postes du code, met le entre les balises [.code] et [./code] (sans les points) Deuxièmement, j'comprend pas vraiment ta question. L'accolade fermante indique la fin de la boucle while. Tout ce qui est entre les deux accolades va se répéter tant que la condition de la boucle ne sera pas satisfaite alors oui c'est très déterminant l'accolade fermante. En plus, si tu veux arrêter d'ouvrir et fermer sans cesse l'usage du PHP, j'te recommende d'utiliser un p'tit truc simple avec echo. [code]while ($donnee=mysql_fetch_array($reponse)) { echo 'le nom des visiteurs est:'.$donnee['nom'].'</br>'; }[/code] Edit: Dans le cas où tu n'as qu'une seule action à poser dans la boucle (comme dans ce cas ci), alors l'usage des accolades ne sont pas nécessaires. Il est compris que quand il n'y a pas d'accolades, seule la prochaine instruction est exécutée. Par contre, vu que tu es plutôt débutant(e), je te suggère quand même de mettre les accolades pour t'y habituer. Edit 2: Si tu veux une image plus claire de la raison pourquoi on doit ouvrir et fermer les accolades, imagine toi qu'il s'agit de portes. Quand tu ouvres une porte, tu dois la fermer après. Même chose ici.

Modifié par AlexPrince le 27/10/2006 16:29
Afficher le profil de AlexPrinceEnvoyer un message privé à AlexPrince
 Revenir en haut de la page
 koala01  Posté le 27/10/2006 à 17:44  
Astucien

4715 Messages
Salut, Les accolades, en PHP comme en bien d'autres langages, précisent que "attention, on a affaire à un bloc indivisible d'instructions"… Dans le cas qui nous occupe, c'est meme "attention, on a affaire à un bloc indivisible d'instructions à effectuer dans la boucle "tant que" (while(le test))". Tout comme, en HTML, tu as une balise ouvrante et une balise fermante, si tu indique le début d'un "bloc d'instructions", tu dois en indiquer la fin… simplement parce que l'ordinateur est "bete à manger du foin" [clindoeil] Mais, bien évidemment, comme c'est une "interprétation" faite par PHP, il faut s'assurer que la fermeture du bloc d'instructions sera également interprétée par PHP, et non comme du simple texte à afficher dans la page résultante [clindoeil] Comme signalé par AlexPrince, si on omet l'ouverture du bloc d'instruction, PHP estime seule la première instruction rencontrée (en gros, jusqu'au premier ; rencontré) sera à prendre en compte (ici dans la boucle)… Je n'en ai pas fait l'essai [rougir], mais il y a de fortes chances pour que, si tu retires les accolades, la boucle ne s'effectue que jusqu'au [code]<?php echo $donnee['nom']; ?>[code]inclus, et donc, que tu n'ai qu'une seule balise <br>… apres le dernier nom affiché… Ceci dit, on peut très bien éviter les allers/retours incessants entre le code à interpréter par PHP et le HTML à envoyer sans y toucher… le code [code]while ($donnee=mysql_fetch_array($reponse)) echo "le nom des visiteurs est $donnee['nom']<br>"; mysql_close(); ?> [/code] serait donc tout à fait correct (une seule instruction dans la boucle)… Mais, meme une fois que tu es habitué, il reste préférable (pour des questions de relecture) d'indiquer explicitement le début et la fin du bloc d'instructions à effectuer dans la boucle sous la forme finale de [code]while ($donnee=mysql_fetch_array($reponse)) { echo "le nom des visiteurs est $donnee['nom']<br>"; } mysql_close(); ?> [/code]
Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Les sujets pertinents liés
Tri d'un tableau resultant d'une requête Mysql
commentaire salé
cadres c s s
commentaire
une petite question
listing d'un repertoire d'images: page blanche
requete et dreamweaver
Mystère Mysql
PHP/MySQL: count () plusieurs champs
requete mysql et php
Pb dans mon petit moteur de recherche (php+mysql)
Compteur LIVE
Affichage php/mysql en fonction de la date
Ne pas lister une ID mysql vide
affichage des enreg d'une table sur 2 colonnes
MySQL: chaines de char avec apostrophes et BD
[RESOLU]Souci création de table sur MYSQL avec err
 
Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !



 > Tous les forumsForum des Webmasters

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page
Comme PC Astuces, mettez-vous au vert avec Ikoula !
Faites le choix d'un hébergeur acteur de l'environnement !