Sébastien L'haire - Rapport exercice 6 - Staf 14 (Daniel Schneider) - 4 juillet 1999

Exercice 6 (création d'une "chose" on line)

Rapport

J'avais envie de réaliser un programme qui puisse envoyer des formulaires d'inscription par email, donner un feedback à l'utilisateur et faire éventuellement un calcul de prix. PHP est très efficace pour ce type de tâche car les champs de formulaire sont accessibles sous différentes formes.

Ici, j'ai utilisé la variable $HTTP_POST_VARS, qui contient tous les champs envoyés par le formulaire sous une forme de tableau. Chaque ligne de tableau est accessible entre autre par une commande each(). Ainsi, par la commande while ( list( $key, $val ) = each( $HTTP_POST_VARS ) ) , on obtient les variables et leurs valeurs ligne après ligne et on n'a pas besoin de connaître à l'avance le nombre et le nom des variables soumises au formulaire.

On a néanmoins quelques noms de variable prédéfinis qui font appel à des fonctions précises:

  1. mail_form_to est un champ obligatoire, sous forme d'input caché, qui contient l'adresse à laquelle envoyer le formulaire.
  2. form_id permet de donner un nom au formulaire, qui sera utilisé comme sujet de l'email envoyé.
  3. comm_form avec comme valeur yes permet d'activer la fonction de calcul de prix.
  4. currency permet de spécifier le nom de la monnaie utilisée.
  5. NR_m, ou m est un nombre quelconque, permet de spécifier le numéro d'article de l'objet commandé, et prend en valeur le prix de l'article.
  6. QT_n, ou n est un nombre quelconque, permet de spécifier le nombre d'articles commandés. N est toujours le numéro d'article.

QT_n doit précéder immédiatement NR_m, et n et m doivent être identiques pour que le prix soit calculé correctement.

Difficultés rencontrées

La documentation de PHP est également très abondante et très bonne. Il ne m'a pas fallu beaucoup d'efforts pour découvrir les commandes dont j'avais besoin.

Néanmoins, un bug dans la fonction strpos(a, b) m'a causé du fil à retordre. En effet, cette fonction ne marche pas correctement si la sous-chaîne à localiser est au début de la chaîne. Ce bug est bien connu, mais j'ai mis longtemps à découvrir le problème et à trouver la solution. La description du problème et sa solution se trouvaient bien sur le site de PHP, dans la page décrivant la fonction, mais dans les remarques faites par les utilisateurs. Pour un bug aussi gênant, cette manière de faire est un peu curieuse.

Retour à la page travaux