| | 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...
| | |
| |
| 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 | | | | | 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] | | | |
| | 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
|
|