boutons radios alimentant requete update

Eléphant du PHP | 331 Messages

04 sept. 2006, 15:30

allez, et encore un truc qui me pose problème !
Je ne m'en sors pas avec mes simples et doubles côtes :
Quelqu'un peut-il m'aider à trouver l'erreur :

Code : Tout sélectionner

echo "<br><input type='radio' value='". $IdTeam ."' name='IdTeam' $coche>"; echo "<span class='$style'>$Nom</span>"." >>> ------ >>> "."<a href='javascript:popup('CompoTeamsLibre.php')'>"$NbMembres." membre(s)""</a>";
actuellement, cela me retourne ça :
Parse error: parse error, unexpected T_VARIABLE, expecting ',' or ';' in /homepages/7/d169003641/htdocs/teams/ChoixTeam.php on line 131

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

04 sept. 2006, 15:45

"Parse error" c'est une erreur de syntaxe.. généralement une parenthèse, une accolade non équilibrée, une apostrophe ou une guillemet oubliée, voire un point-virgule absent.

Dans ton cas, tu as petit soucis de guillemets vers la fin de ta chaine :)

Par ailleurs, tu vas avoir un autre soucis avec ton javascript dans le code généré, vu que tu utilises des apostrophes dans des apostrophes, ca va pas lui plaire ;) (rappel : pour échapper un caractère, il suffit de mettre un \ devant :))

Eléphant du PHP | 331 Messages

04 sept. 2006, 15:58

merci, mais je t'avoue que j'ai beau le triturer dans tous les sens, je ne capte pas, je ne m'en sors pas :

Pourquoi c'est pas bon ça ? :

Code : Tout sélectionner

echo "<span class='$style'>$Nom</span>"." >>> ------ >>> "."<a href='javascript:popup('CompoTeamsLibre.php')'>"$NbMembres." membre(s)"\'</a>';

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

04 sept. 2006, 16:16

L'antislash, c'etait pour le lien et la partie javascript. Pour php, c'est cette partie là qui n'est pas bonne : " membre(s)"\'</a>';

Il te faut soit tout mettre dans la même chaine, soit ajouter un point "." pour concaténer les deux chaines :
" membre(s)</a>"; ou bien " membre(s)" . '</a>';
Et pour la partie javascript, le echo va générer le lien suivant :

Code : Tout sélectionner

<a href='javascript:popup('CompoTeamsLibre.php')'>
Du coup, le navigateur va penser que la valeur de href est 'javascript:popup(' et ignorera le reste :)
Pour éviter cela, il te faut donc mettre des guillemets sur l'un ou l'autre :

Code : Tout sélectionner

"javascript:popup('CompoTeamsLibre.php');" ou 'javascript:popup("CompoTeamsLibre.php");'
Le problème, c'est que PHP va de la même manière interpréter ces guillemets en pensant qu'elles lui sont destinées pour marquer la fin de la chaine (ca se voit à la couleur :)) :
echo "<a href="javascript:popup('CompoTeamsLibre.php')">";
Pour lui dire qu'il s'agit de vraie guillemets et non pas de la fin de sa chaine, il faut les échapper à l'aide de l'antislash :
echo "<a href=\"javascript:popup('CompoTeamsLibre.php')\">";

Eléphant du PHP | 331 Messages

04 sept. 2006, 16:35

ok, j'ai compris (mais c'est pas simple !!!) !

voici ce que j'ai donc eu à taper :

Code : Tout sélectionner

echo "<span class='$style'>$Nom</span>"." >>> ------ >>> "."<a href=\"javascript:popup('CompoTeamsLibre.php')\">$NbMembres membre(s)".'</a>';
Merci Ryle ! :wink:

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

04 sept. 2006, 16:46

Y a pas de quoi :)

C'est vrai que c'est pas toujours évident (surtout si tu veux faire du php qui génère du javascript qui génère du html et qu'il faut penser à échapper dans l'un les caractères d'échappement de l'autre ;)) mais c'est pas non plus spécialement compliqué.
Faut juste te dire que tu as le droit de faire ' " ' ou bien " ' ", mais que si tu veux obtenir " " " ou ' ' ' , il faut l'écrire " \" " ou ' \' '
(c'est clair nan ? ;))

Dans tous les cas, une bonne chose à faire est de partir comme je l'ai fait du html que tu veux obtenir :)

Eléphant du PHP | 331 Messages

04 sept. 2006, 16:48

Bon, une toute dernière question, après ej vous assure, c'est promis, j'arrete !

En ouvrant ma popup, je voudrais faire passer en paramètre le contenu d'un champ de la page source pour le récupérer dans la requete utilisée de la page de destination.

Après avoir cherché dans le forum, j'ai bien vu qu'il existe la fonction GET mais je ne sais pas comment l'utiliser.

Que dois-je spécifier dans la page source et comment récupérer ma valeur dans la page de destination ?

Merci encore !

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

04 sept. 2006, 16:57

En fait, GET et POST sont les deux moyens d'envoyer des données à une page. Le GET se fait au niveau de l'url sous la forme nom=valeur, le POST quant à lui se fait généralement via un formulaire.

Pour passer des paramètres en GET, il te suffit après l'adresse de la page d'ajouter un point d'interrogation (pour spécifier que ce qui suit sont des paramètres) et d'envoyer tes couples nom=valeur, en les séparant par des "&". Ainsi si je regarde l'url de ma page de réponse :

Code : Tout sélectionner

posting.php?mode=quote&p=144803
Je peux en déduire via ce qui suit le "?" que deux paramètres sont passés en GET : "mode" et "p". Le premier a pour valeur "quote" le second "144803"

Pour les récupérer on utilise la variable superglobale $_GET (qu'on appelle comme ça parce qu'on peut l'utiliser partout, même au fin fond d'une fonction, et ça pour une variable c'est super fort ;))

Cette variable est un tableau associatif qui te permet de récupérer la valeur associé à chaque élément :
echo $_GET["mode"]; // affiche "quote"
Il te suffit donc d'ajouter ?parametre=valeur lors de l'ouverture de la popup et de récupérer $_GET['parametre'] pour avoir sa valeur dans ta popup :)

(pis pour le POST on utilise $_POST.. logique :))
Bon, une toute dernière question, après ej vous assure, c'est promis, j'arrete !
T'as promis hein ?! ;)

Eléphant du PHP | 331 Messages

04 sept. 2006, 17:04

ok, nickel, ça marche !
En plus c'est génial, car on peut même faire du ?valeur=$variable. Je sais, ça parait évident pour vous mais moi je débute ! :lol: et un rien m'émerveille !!! :shock:

Bien voilà, je crois que cette fois ci, je peux te féliciter Ryle, tu m'as appris beaucoup de choses aujourd'hui !!!

ET puis en plus, je tiens ma promesse ! :P

A+

Jay