par
Kaoteknik » 29 juil. 2007, 00:50
Etant donné que je suis en pleine phase d'apprentissage des fonctions, ton problème m'intéresse particulièrement.
Dans la mesure où je pense en avoir grossièrement compris les mécanismes, je vais tenter de t'apporter mon aide, en espérant ne pas commettre d'erreur. Si c'est le cas, je ne doute pas que les personnes hautement qualifiées qui fréquentent ce forum sauront me corriger et par la même occasion t'orienter dans la bonne direction.
Encore une fois, si j'ai bien saisi l'objet de ton code, il est censé afficher un article qu'un client aura sélectionné, ainsi qu'un menu déroulant qui lui permettra de le noter sur une échelle de 1 à 6 (de "très mauvais" à "neuf").
On va donc commencer par déclarer un tableau tel que je l'ai écrit dans mon précédent message.
Ensuite, lorsque tu as besoin d'afficher l'article et la liste déroulante qui l'accompagne, on va "lancer" l'appel à la fonction en lui passant comme arguments l'article et le tableau des états :
$selected_article = $_POST['cmbProduct$intCptProduct'];
include ('fichier_contenant_la_fonction.php');
SetState($selected_article, $arrEtat);
La fonction devrait ensuite contenir un code ressemblant à ceci :
function SetState($article, $etats) {
echo $article
.'<br />'
.'Etat de l\'article : '
.'<select name="etat">'
.' <optgroup label="Faites votre choix...">';
for ($i = 0 ; $i < 7 ; $i++) {
$control_etat = (isset($etats) && $etats == $etats[$i]) ? 'selected="selected"' : '' ;
echo ' <option value="'.$i.'" '.$control_etat.'>'.$etats[$i].'</option>';
}
echo ' </optgroup>'
.'</select>';
return $article, $etats;
}
Voilà, je n'ai pas testé ce code et peut-être contient-il des erreurs ou, pire, il ne correspond pas du tout à ce que tu cherches à faire (ce qui voudrait dire au final que je n'ai pas compris grand chose !

). Dans ce cas il faudra faire appel à quelqu'un de plus qualifié que moi... Et je serai ravi d'apprendre quelque chose au passage !
Edit : en me relisant j'ai déjà pu constater que j'avais commis une erreur. La boucle "for" doit en effet s'arrêter lorsque le compteur "$i" devient égal à 6 (et non à 7 comme je l'ai écrit). Sachant que le tableau "$arrEtat" ne contient que 6 éléments, que le premier porte l'indice 0 ("très mauvais") et le dernier l'indice 5 ("neuf"), il n'est pas nécessaire de poursuivre la boucle au-delà.
Etant donné que je suis en pleine phase d'apprentissage des fonctions, ton problème m'intéresse particulièrement.
Dans la mesure où je pense en avoir grossièrement compris les mécanismes, je vais tenter de t'apporter mon aide, en espérant ne pas commettre d'erreur. Si c'est le cas, je ne doute pas que les personnes hautement qualifiées qui fréquentent ce forum sauront me corriger et par la même occasion t'orienter dans la bonne direction.
Encore une fois, si j'ai bien saisi l'objet de ton code, il est censé afficher un article qu'un client aura sélectionné, ainsi qu'un menu déroulant qui lui permettra de le noter sur une échelle de 1 à 6 (de "très mauvais" à "neuf").
On va donc commencer par déclarer un tableau tel que je l'ai écrit dans mon précédent message.
Ensuite, lorsque tu as besoin d'afficher l'article et la liste déroulante qui l'accompagne, on va "lancer" l'appel à la fonction en lui passant comme arguments l'article et le tableau des états :
[php]$selected_article = $_POST['cmbProduct$intCptProduct'];
include ('fichier_contenant_la_fonction.php');
SetState($selected_article, $arrEtat);[/php]
La fonction devrait ensuite contenir un code ressemblant à ceci :
[php]function SetState($article, $etats) {
echo $article
.'<br />'
.'Etat de l\'article : '
.'<select name="etat">'
.' <optgroup label="Faites votre choix...">';
for ($i = 0 ; $i < 7 ; $i++) {
$control_etat = (isset($etats) && $etats == $etats[$i]) ? 'selected="selected"' : '' ;
echo ' <option value="'.$i.'" '.$control_etat.'>'.$etats[$i].'</option>';
}
echo ' </optgroup>'
.'</select>';
return $article, $etats;
}[/php]
Voilà, je n'ai pas testé ce code et peut-être contient-il des erreurs ou, pire, il ne correspond pas du tout à ce que tu cherches à faire (ce qui voudrait dire au final que je n'ai pas compris grand chose ! :? ). Dans ce cas il faudra faire appel à quelqu'un de plus qualifié que moi... Et je serai ravi d'apprendre quelque chose au passage ! :)
Edit : en me relisant j'ai déjà pu constater que j'avais commis une erreur. La boucle "for" doit en effet s'arrêter lorsque le compteur "$i" devient égal à 6 (et non à 7 comme je l'ai écrit). Sachant que le tableau "$arrEtat" ne contient que 6 éléments, que le premier porte l'indice 0 ("très mauvais") et le dernier l'indice 5 ("neuf"), il n'est pas nécessaire de poursuivre la boucle au-delà.