8797 sujets

Développement web côté serveur, CMS

Bonsoir,
Je galère toujours avec ces quotes simples ou doubles. Est-ce que quelqu'un aurait la gentillesse de m'expliquer simplement une fois pour toutes ? Ce serait super sympa.
Ce soir j'essaie de faire un formulaire de modification. Je pars de la page où s'affichent toutes les infos et je souhaiterais qu'au lieu d'afficher les infos il s'affiche une zone de texte modifiable.
Je me perds dans les quotes complètement.

Un exemple de la page d'affichage :
echo "<tr><td><i>Pays (nom, code) :</i></td><td>".$result['nomPays']."&nbsp;".$result['codePays'],"</td><td><i>Date création fiche : </i></td><td>".$result['dateCreaFicheG'],"</td></tr>";


Un exemple de ce que je souhaiterais faire avec une zone de texte pour modifier le pays :
echo "<tr><td><i>Pays (nom, code) :</i></td><td>'<?php echo $result['nomPays']?>"></input></td>'<td><i>Date création fiche : </i></td><td>".$result['dateCreaFicheG'],"</td></tr>";


Je vois bien avec la coloration syntaxique qu'il y a quelque chose qui ne va pas, mais quoi ?
Un grand merci par avance et une très bonne soirée,
Evelyne31
a écrit :
echo "<tr><td><i>Pays (nom, code) :</i></td><td>'<?php echo $result['nomPays']?>"></input></td>'<td><i>Date création fiche : </i></td><td>".$result['dateCreaFicheG'],"</td></tr>";


Tu démarres avec un "echo";

Tu y mets un texte, entre quote (simple ou double, à ton choix, mais pas les deux. Tu arrives donc à :

echo "<tr><td><i>Pays (nom, code) :</i></td><td>"


Tu y ajoutes une variable. On appelle ça concaténer. C'est le "." qu'on utilise pour ça. Etant dans un "echo", tu peux aussi utiliser la virgule. C'est d'ailleurs le mieux. Ca donne donc :

echo "<tr><td><i>Pays (nom, code) :</i></td><td>",$result['nomPays']


Note que tu es toujours dans le code PHP, donc pas besoin de réouvrir le php, ni de mettre un echo, tu en as en début de ligne.
Ensuite, tu rajoutes à nouveau du texte, donc à nouveau la virgule. Le texte doit lui aussi être entre quote. Vaut mieux utiliser les mêmes qu'au départ, c'est plus propre.

echo "<tr><td><i>Pays (nom, code) :</i></td><td>",$result['nomPays'],"></input></td><td><i>Date création fiche : </i></td><td>"


Tu ajoutes ta 2ème variable, de la même manière que la première, donc avec une virgule devant.

echo "<tr><td><i>Pays (nom, code) :</i></td><td>",$result['nomPays'],"></input></td><td><i>Date création fiche : </i></td><td>",$result['dateCreaFicheG']


Et enfin, tu rajoutes ton dernier morceau de texte avec une virgule entre la variable et le texte entre quote, toujours le même pour être un minimum propre.

echo "<tr><td><i>Pays (nom, code) :</i></td><td>",$result['nomPays'],"></input></td><td><i>Date création fiche : </i></td><td>",$result['dateCreaFicheG'],"</td></tr>"


Et enfin, le point virgule pour la fin d'instruction.

echo "<tr><td><i>Pays (nom, code) :</i></td><td>",$result['nomPays'],"></input></td><td><i>Date création fiche : </i></td><td>",$result['dateCreaFicheG'],"</td></tr>";




Je résume :
- le texte entre quote, simple ou double, tu choisis au départ.
- les variables entre virgule quand c'est dans un echo, entre point quand c'est pour mettre dans une autre variable. ($affichage="<p>blabla :".$donnees1."</p>";)
- le point-virgule à la fin.
- quand tu ouvres un simple quote, faut fermer un simple quote, soit avant le point-virgule, soit avant une variable.
- quand tu ouvres un double quote, faut fermer un double quote, soit avant le point-virgule, soit avant une variable.
- quand tu utilises un . avant une variable, c'est un . qu'on doit retrouver derrière (ou un ; )
- quand tu utilises une , avant une variable, c'est une , qu'on doit retrouver derrière (ou un ; )
Modifié par Lothindil (16 Dec 2012 - 12:26)
Bonsoir Lothindil,
Je te remercie pour ces explications détaillées. Cela me semble clair pour une fois.
Je vais imprimer tes explications et les garder à portée de main quand je code.
Demain je reprends mon code avec tout ça. Je reposte éventuellement si j'ai un souci mais il ne devrait plus y en avoir.
Encore un très grand merci et bonne soirée,
Evelyne31