par
Calimero » 10 nov. 2007, 13:33
Calimero > Je pensais que comme ma fonction était implanté au milieu de mon code (et que la requete était au dessus...
Donc je dois le faire passer de la façon suivante
Oui, c'est une façon de faire (sans doute la plus propre). Il faut modifier la définition de ta fonction (le
function( [...] ) et aussi la (ou les) ligne(s) d'appel(s) de la fonction dans ton code principal.
// La déclaration modifiée
function pardefaut($choix, $entrainement2) { [...] }
// Ailleurs dans ton code, la ligne d'appel modifiée
echo '<option value="'.$code_entrainement.'" '.pardefaut($_GET['choix'],$entrainement2).'>'..'</option>';
Une autre manière de le faire, moins propre mais parfois pratique, pourrait être de passer par les variables globales.
function pardefaut($choix) {
global $entrainement2; // Grâce à cette ligne, $entrainement2 dans ta fonction sera identique à $entrainement2 en dehors de la fonction, c'est à dire dans le code principal de ton script.
$par_defaut = '';
$entrainement = 'entrainement'.$i;
if ($entrainement2[$entrainement] == $choix) { // Maintenant cette ligne peut fonctionner
$par_defaut='selected="selected"';
}
return $par_defaut;
}
Mais dans ton cas, cette deuxième façon de faire ne marcherait que si le code qui définit $entrainement2 (la requête SQL) n'est pas lui-même dans une fonction, ou dans une classe... Dans ce cas il faudrait éventuellement appliquer le même truc
Un petit lien pour approfondir si le sujet t'intéresse :
Les variables globales
[quote="Snipy"][b]Calimero >[/b] Je pensais que comme ma fonction était implanté au milieu de mon code (et que la requete était au dessus...
Donc je dois le faire passer de la façon suivante[/quote]
Oui, c'est une façon de faire (sans doute la plus propre). Il faut modifier la définition de ta fonction (le [i]function( [...] )[/i] et aussi la (ou les) ligne(s) d'appel(s) de la fonction dans ton code principal.
[php]
// La déclaration modifiée
function pardefaut($choix, $entrainement2) { [...] }
// Ailleurs dans ton code, la ligne d'appel modifiée
echo '<option value="'.$code_entrainement.'" '.pardefaut($_GET['choix'],$entrainement2).'>'..'</option>';
[/php]
Une autre manière de le faire, moins propre mais parfois pratique, pourrait être de passer par les variables globales.
[php]function pardefaut($choix) {
global $entrainement2; // Grâce à cette ligne, $entrainement2 dans ta fonction sera identique à $entrainement2 en dehors de la fonction, c'est à dire dans le code principal de ton script.
$par_defaut = '';
$entrainement = 'entrainement'.$i;
if ($entrainement2[$entrainement] == $choix) { // Maintenant cette ligne peut fonctionner
$par_defaut='selected="selected"';
}
return $par_defaut;
}[/php]
Mais dans ton cas, cette deuxième façon de faire ne marcherait que si le code qui définit $entrainement2 (la requête SQL) n'est pas lui-même dans une fonction, ou dans une classe... Dans ce cas il faudrait éventuellement appliquer le même truc :-)
Un petit lien pour approfondir si le sujet t'intéresse : [url=http://fr2.php.net/manual/fr/language.variables.scope.php]Les variables globales[/url]