OVH Cloud OVH Cloud

$_POST

21 réponses
Avatar
UrlUberlU
Bonjour,

Je débute en PHP, et ne comprends pas pourquoi ceci marche :
$test = "bonjour $nom";

alors que cela non :
$test = "bonjour $_POST['nom']";

(je sais que $test ="bonjour" .$POST['nom']; fonctionne mais ce n'est
pas la réponse à ma question)

Quelqu'un peut il me l'expliquer ?

Merci d'avance.
--
UrlUberlU

10 réponses

1 2 3
Avatar
Guillaume Bouchard
UrlUberlU wrote:

Je débute en PHP, et ne comprends pas pourquoi ceci marche :
$test = "bonjour $nom";

alors que cela non :
$test = "bonjour $_POST['nom']";

(je sais que $test ="bonjour" .$POST['nom']; fonctionne mais ce n'est
pas la réponse à ma question)


Si, car de toute façon la premiere methode est degeulasse :)

'nom' est une chaine de caractere, donc tu a donc deux chaines de
caracteres imbriqués...

$test = "bonjour $_POST[nom]";

Fonctionera mieux.

--
Guillaume.

Avatar
Gg
On 22 Aug 2003 10:24:16 GMT, UrlUberlU wrote:

Bonjour,

Je débute en PHP, et ne comprends pas pourquoi ceci marche :
$test = "bonjour $nom";

alors que cela non :
$test = "bonjour $_POST['nom']";


Déjà, une première chose, une variable n'a rien à faire dans une chaine de
caractères.

Donc il faut écrire soit :
$test = "bonjour ".$nom;
soit
$test = "bonjour ".$_POST["nom"];

(je sais que $test ="bonjour" .$POST['nom']; fonctionne mais ce n'est
pas la réponse à ma question)


Et est-ce que tu es sur de tes variables? C'est $POST ou $_POST ? Ce n'est
pas la même chose.


--
GéraLd : http://gerald.fauvelle.free.fr
| Photos : http://www.gg.free.fr
| myStats : Système de statistiques
| Version 1.0.8 - http://my.stats.free.fr

Avatar
UrlUberlU
Déjà, une première chose, une variable n'a rien à faire dans une chaine de
caractères.


Message reçu.

Donc il faut écrire soit :
$test = "bonjour ".$nom;
soit
$test = "bonjour ".$_POST["nom"];

(je sais que $test ="bonjour" .$POST['nom']; fonctionne mais ce n'est
pas la réponse à ma question)


Et est-ce que tu es sur de tes variables? C'est $POST ou $_POST ? Ce n'est
pas la même chose.


Erreur de frappe, c'était bien $_POST. Ma question ne portait pas sur
l'usage des variable, mais sur le fait que dans un cas cela
fonctionnait et que dans l'autre non.

Le précédent post a trés bien répondu à ma question, et de l'avis
commun j'adopte définitivement :

$test = "bonjour".$_POST["nom"];

Merci a tous les 2.

Par contre, si $_POST["nom"] et $_POST['nom'] fonctionnent bien, que
faut il préférer : les simples ou doubles quotes et pourquoi ? Quels
sont les usages respectifs de ' ' et " " ?

--
UrlUberlU


Avatar
Bobe
Guillaume Bouchard déclarait le 22/08/2003 13:28:
UrlUberlU wrote:

Je débute en PHP, et ne comprends pas pourquoi ceci marche :
$test = "bonjour $nom";



Si, car de toute façon la premiere methode est degeulasse :)

'nom' est une chaine de caractere, donc tu a donc deux chaines de
caracteres imbriqués...

$test = "bonjour $_POST[nom]";

Fonctionera mieux.



Solution tout aussi "dégueulasse".

$test = "bonjour $_POST['nom']";

est théoriquement correct. Pour être plus stricte, essaie avec :

$test = "bonjour {$_POST['nom']}";

ou

$test = 'bonjour ' . $_POST['nom']; (et non $POST['nom'] ;) )

--
Bobe (Aurélien Maille)


Avatar
John GALLET
Bonjour,

$test = "bonjour $nom";
alors que cela non :
$test = "bonjour $_POST['nom']";
En ce qui me concerne, j'ai touours considéré ça complètement débile. Il n'y


a pas de raison logique, c'est la syntaxe de PHP qui veut ça. Le parseur a
besoin de retrouver les tableaux associatifs. Ta syntaxe marche parfaitement
avec $test="bonjour $tableau[0] ";

(je sais que $test ="bonjour" .$POST['nom']; fonctionne mais ce n'est
pas la réponse à ma question)



Il n'y a pas de réponse à ta question, c'est la syntaxe qui le veut c'est
tout. Noter que la syntaxe suivante marchera aussi avec des tableaux
associatifs :
$test="bonjour {$_POST['nom']}";




Si, car de toute façon la premiere methode est degeulasse :)
??


$test = "bonjour $_POST[nom]";


Non non et non : un tableau associatif en php doit avoir le nom de sa clef
entre quotes, c'est indiqué texto dans la manuel avec deux écrans
d'explications fumeuses quand au pourquoi du comment de la raison.

Fonctionera mieux.
Mais n'est pas syntaxiquement correct.


a++
JG


Avatar
Gg
On 22 Aug 2003 14:02:22 GMT, UrlUberlU wrote:

Par contre, si $_POST["nom"] et $_POST['nom'] fonctionnent bien, que
faut il préférer : les simples ou doubles quotes et pourquoi ?


Euh.. c'est pareil :-)
Enfin, moi je préfère les doubles, question purement esthétique :-)

Quels sont les usages respectifs de ' ' et " " ?


C'est la même choses. Parfois on peut marier les deux, notamment pour
écrire du HTML, genre :

echo "<img src="toto.jpg" width="20" height="20">n";

Tu peux remarquer que les antislash un peu de partout ne font pas très
propre.

Donc à ce moment là j'utilise les simple quote :

echo '<img src="toto.jpg" width="20" height="20">'."n";

Et ne pas mettre le n entre simple quotes, sinon il s'affiche tel quel
dans la page. Fait un petit test sur ces exemples pour t'en rendre compte.


--
GéraLd : http://gerald.fauvelle.free.fr
| Photos : http://www.gg.free.fr
| myStats : Système de statistiques
| Version 1.0.8 - http://my.stats.free.fr

Avatar
John GALLET
$test = "bonjour $_POST[nom]";
Non non et non : un tableau associatif en php doit avoir le nom de sa clef

entre quotes, c'est indiqué texto dans la manuel avec deux écrans
d'explications fumeuses quand au pourquoi du comment de la raison.


Il retire ce qu'il a dit et donc Guillaume tu as raison dans le cas où on
est déjà entre doubles quotes.
http://fr.php.net/manual/en/language.types.array.php

Note: To reiterate, inside a double-quoted string, it's valid to not
surround array indexes with quotes so "$foo[bar]" is valid.

Comme quoi s'enfiler les deux pages de blabla de temps à autres c'est pas si
mal que ça.

a++
JG


Avatar
John GALLET
Re,

Déjà, une première chose, une variable n'a rien à faire dans une chaine
de


caractères.
Message reçu.




Et bien rejette le parce que c'est n'importe quoi.

Le précédent post a trés bien répondu à ma question, et de l'avis
commun j'adopte définitivement :
$test = "bonjour".$_POST["nom"];


Ou des {} sans opérateur de concaténation, c'est comme tu le sens.

Par contre, si $_POST["nom"] et $_POST['nom'] fonctionnent bien, que
faut il préférer : les simples ou doubles quotes et pourquoi ? Quels
sont les usages respectifs de ' ' et " " ?
Voir le manuel :

http://fr.php.net/manual/en/language.types.string.php
http://fr.php.net/manual/en/language.types.array.php

Et lis bien toute la page du second lien parce que je viens d'en redécouvrir
une en le faisant, donc faut bien lire les petits caractères et les notes
perdues en plein milieu.

a++
JG


Avatar
Gg
On 22 Aug 2003 14:37:11 GMT, John GALLET wrote:

Déjà, une première chose, une variable n'a rien à faire dans une chaine de
caractères.


On va pas utiliser un opérateur de concaténation à chaque fois qu'on se
trimballe une variable à tripoter dans une string. C'est illisible et
impossible à maintenir,


C'est plutôt le contraire.
Je trouve illisible une chaine avec des variables à l'intérieur. Il faut se
taper toute le chaine pour être sur de ne pas les rater.
En les concaténant, elles sont bien plus visibles, surtout avec la
coloration syntaxique.

Si PHP remplace les variables par leur valeur dans une string entre doubles
quotes, c'est pas fait pour les chiens.


Apparemment ça pose des problèmes, d'où ce thread.

--
GéraLd : http://gerald.fauvelle.free.fr
| Photos : http://www.gg.free.fr
| myStats : Système de statistiques
| Version 1.0.8 - http://my.stats.free.fr


Avatar
yvon.thoravallist
Bobe <bobe64@[retirez_cette_mention]wanadoo.fr> wrote:

est théoriquement correct. Pour être plus stricte, essaie avec :

$test = "bonjour {$_POST['nom']}";


supposons que j'ai une var (tableau associatif) :

$tab_types_vins=array( 'Gris' => 'gris',
'Jaune' => 'jaune',
'Blanc' => 'blanc',
'Rouge' => 'rouge',
'Rosé' => 'rose');
y at'il une différence syntaxique entre :
$tab_types_vins{'Rosé'} et $tab_types_vins['Rosé']
du manière générale entre crochets [] et accolades {} ???
donc entre $_POST['nom'] et $_POST{'nom'} ???
bien sûr j'ai remarqué que :
foreach($tab_types_vins as $c => $v){
echo $c." =>
".$tab_types_vins{$c}."&nbsp;&nbsp;&nbsp;&nbsp;avec&nbsp;{}<br/>";
echo $c." =>
".$tab_types_vins[$c]."&nbsp;&nbsp;&nbsp;&nbsp;avec&nbsp;[]<br/>";
}

donnent la même chose...
--
Yvon

1 2 3