passage de variables

Zique
Invité n'ayant pas de compte PHPfrance

27 févr. 2008, 18:10

Bonjour à tous
Je ne suis pas développeur donc pas tellement familier avec php et html mais je dois modifier un bout de code sur un site et je suis un peu "out". (je ne suis pas l'auteur du code !)
Sur une page html, j'ai le code suivant qui affiche une liste d'auteurs regroupés par cours (enseignement)
et j'aimerais passer le nom de l'auteur ($doc.fnom) comme variable à la page Nlectures pour faire une requête dans une base SQL
{foreach from=$liste_cours item=enseignement}
<h2>{$enseignement.nom}</h2>
<ul>
{foreach from=$enseignement.docs item=doc}
<a style="display:inline;"ref="http://www.monsite.fr/Nlectures.php?nom=$doc.fnom">{$doc.fnom} </a> 
{/foreach}
</ul>
{/foreach}
</ul>

Sur la page Nlectures.php, j'ai la ligne suivante et je ne récupère rien
echo $nom;

Quelqu'un peut-il m'aider ?
Merci par avance
fred

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 févr. 2008, 18:23

Les données transmises dans l'url sont accessible via la variable globale $_GET :
echo $_GET['nom'];
Ps : pense à utiliser les balises [ code ] ou [ php ] quand tu postes du code sur le forum :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Zique
Invité n'ayant pas de compte PHPfrance

03 mars 2008, 10:34

Bonjour RYLE et merci pour ton aide
J'essaye ce que tu m'as dis mais je n'obtiens pas ce que je veux
En utilisant sur ma page php

PHP:

echo $_GET['nom'];
j'affiche textuellement
"doc.fnom" mais pas le contenu de la variable $doc.fnom

Une idée serait la bienvenue
Merci d'avance
Zique,
PS: quant aux balises PHP / HTML, en tant que débutant, moi-même j'ai du mal à différencier le php de l'HTML. Mais je prends note.

d0m
Mammouth du PHP | 1141 Messages

03 mars 2008, 10:49

Salut,
j'ai du mal à différencier le php de l'HTML
il faudrait commencer par là.
C'est d'ailleurs ici que se trouve ton problème.
En gros :

Le HTML : c'est le langage de balisage reconnu par le navigateur pour afficher le contenu d'une page.

ex :

Code : Tout sélectionner

<a style="display:inline;"ref="http://www.monsite.fr/Nlectures.php?nom=johnson">
Le PHP : c'est le langage qui fait des opérations dynamiques (comme récupérer des infos en base), et qui affiche le résultats de calculs dans le code HTML.

ex :
{foreach from=$enseignement.docs item=doc} 
quand tu écris :
<a style="display:inline;"ref="http://www.monsite.fr/Nlectures.php?nom=$doc.fnom">
$doc.fnom n'est pas entre balises PHP, il va donc être considéré comme du html. C'est pour cela que tu te retrouves dans la page Nlectures avec la chaine $doc.fnom en tant que nom.
il faut préciser qu'il faut interpréter la variable $doc.fnom:
<a style="display:inline;"ref="http://www.monsite.fr/Nlectures.php?nom=<?php echo $doc.fnom;?>">

Zique
Invité n'ayant pas de compte PHPfrance

03 mars 2008, 11:44

Bonjour D0m et merci pour ton aide,

PHP:

{foreach from=$liste_cours item=enseignement}
<h2>{$enseignement.nom}</h2>
<ul>
{foreach from=$enseignement.docs item=doc}
<a style="display:inline;"ref="http://www.monsite.fr/Nlectures.php?nom=<?php echo $doc.fnom;?>">{$doc.fnom} </a>
{/foreach}
</ul>
{/foreach}
</ul>

J'ai essayé ta modification mais ma page n'affiche toujours rien. Ma variable $doc.fnom a bien une valeur puisque je l'affiche sur la page HTML avec "{$doc.fnom}" mais rien n'est passé sur ma page PHP
En mettant $doc.fnom entre balises PHP, est-ce que j'utilise la variable précédemment créée ou je crée une nouvelle variable locale dont la portée se limite au code entre ces balises PHP "<?" et "?>" ?

Autrement dit:
Si sur une même page HTML , j'écris

PHP:
<?
$var1="toto",
?>

<?
echo $var1;
?>

Est ce que j'affiche le contenu de $var1 défini dans la première partie c-à-d "toto" ou ne je n'affiche rien parce que ma variable n'est pas initialisée dans la deuxième partie du code ?
Et dans cette dernière hypothèse , comment récupérer la valeur de la variable ?

Merci
Zique[/b]

d0m
Mammouth du PHP | 1141 Messages

03 mars 2008, 12:07

Les variables PHP sont accessibles tout au long du script de la page.
Les balises <?php ?> ne servent qu'à préciser que le code est à interpreter en PHP ou non.

je ne connais pas ta manière de coder mais il semble que les { } remplacent pour toi <?php ?>

Dans ce cas, utilise les de la même manière :
<a style="display:inline;"ref="http://www.monsite.fr/Nlectures.php?nom={$doc.fnom;}">{$doc.fnom} </a>

Invité
Invité n'ayant pas de compte PHPfrance

03 mars 2008, 12:27

Comme je je le disais plus haut , ce n'est pas moi qui ai écrit ce code , je le découvre au fur et à mesure de mes essais.
On peut remplacer les <?Php ?> par { } ?

Eléphant du PHP | 79 Messages

03 mars 2008, 12:32

C'est le système de templating de Smarty.

Si tu essaies comme cela, ça devrait fonctionner :
{foreach from=$liste_cours item=enseignement}
<h2>{$enseignement.nom}</h2>
<ul>
{foreach from=$enseignement.docs item=doc}
<a style="display:inline;"ref="http://www.monsite.fr/Nlectures.php?nom={$doc.fnom}">{$doc.fnom} </a> 
{/foreach}
</ul>
{/foreach}
</ul> 
En mettant entre accolade le $doc.fnom dans l'url ca devrai fonctionner !

Invité
Invité n'ayant pas de compte PHPfrance

03 mars 2008, 12:46

Merci Alkann,
Cela fonctionne tip top !
Et merci également aux autres !
Have a long road !
Zique

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 mars 2008, 12:56

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

03 mars 2008, 14:23

Merci Alkann,
Cela fonctionne tip top !
Et merci également aux autres !
Have a long road !
Zique