Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

traitement formulaire

4 réponses
Avatar
docanski
Pour mémoire, voici le script que j'utilise pour le traitement de mes
formulaires :

<?php
if(isset($_POST['submit'])) {
$destinataire = 'armorance@free.fr';
$titre = 'formulaire Armorance';
$message = '';
foreach($_POST as $cle => $valeur) {
if (($cle <> 'submit') and ($cle <> 'reset')) {
$message .= str_pad($cle, 20) . $valeur . "\n";
}
}
mail($destinataire, $titre, $message, 'From: '.$destinataire);
header('Location: http://armorance.free.fr/index.htm');
exit;
}
?>

Problème : le résultat des boutons "radio" (checkbox) n'est pas traité :-(.
Et il y en a une flopée ...
Que manque-t'il à ce script pour les traiter ?
La ligne de code exacte serait la bienvenue : je suis une bille en PHP.

Merci d'avance et cordialement,
--
docanski

Portail et annuaire du nord-Bretagne : http://armorance.free.fr/
Guide des champignons d'Europe : http://mycorance.free.fr/
La vallée de la Rance maritime : http://valderance.free.fr/
Les côtes du nord de la Bretagne : http://docarmor/free.fr/

4 réponses

Avatar
CrazyCat
docanski wrote:
Problème : le résultat des boutons "radio" (checkbox) n'est pas traité :-(.
Et il y en a une flopée ...
Que manque-t'il à ce script pour les traiter ?
La ligne de code exacte serait la bienvenue : je suis une bille en PHP.


Il n'y a pas de ligne de code particulière. Une checkbox renvoit "on" si
elle est checkée et ne renvoit rien dans le cas contraire.
Ta boucle te renvoit donc seulement les clés qui ont été cochées.

--
Réseau IRC Francophone: http://www.crazy-irc.net
Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr

Avatar
docanski
Eleveurs et agriculteurs polluent toujours la Bretagne et docanski nous
narre ce qui suit en ce 29/11/2007 11:53 :
Pour mémoire ...
... je suis une bille en PHP.


... car le code en question ne demande rien de plus : je viens de me
rendre compte que ce sont les visiteurs qui ne "checkaient" pas les
options. :-(
Désolé ...
--
docanski

Portail et annuaire du nord-Bretagne : http://armorance.free.fr/
Guide des champignons d'Europe : http://mycorance.free.fr/
La vallée de la Rance maritime : http://valderance.free.fr/
Les côtes du nord de la Bretagne : http://docarmor/free.fr/

Avatar
Eric Demeester
dans (in) fr.comp.lang.php, CrazyCat
ecrivait (wrote) :

Bonjour,

Il n'y a pas de ligne de code particulière. Une checkbox renvoit "on" si
elle est checkée et ne renvoit rien dans le cas contraire.
Ta boucle te renvoit donc seulement les clés qui ont été cochées.


Et ça, c'est un problème. Je pense au cas ou on souhaite non pas
transmettre le formulaire par mail, mais en récupérer le contenu pour
l'intégrer dans une base de données, je m'explique :

On récupère le contenu du formulaire et le contenu de chaque champ est
injecté dans le champ correspondant de la table. Si tous les champs
étaient renseignés, un traitement séquentiel du tableau récupéré serait
possible (en partant du principe que les champs sont ordonnés de façon
identique dans le formulaire et dans la table, oeuf corse) :

- champ 1 du formulaire -> champ 1 de la ligne dans la table ;
- champ 2 du formulaire -> champ 2 de la ligne dans la table ;
- etc.

Seulement voila, si la checkbox n'est pas cochée, paf le champ et on se
retrouve avec un décalage.

Je ne suis pas une bille en programmation en général, mais j'avoue avoir
un peu de mal avec la façon dont php gère les tableaux, à savoir ignorer
purement et simplement un élément s'il n'est pas renseigné, si j'ai bien
tout compris.

Est-ce que l'utilisation d'un tableau associatif genre :

$mon_formulaire = array(champ0 => val0, champ1 => val1,...);

permettrait de résoudre le problème ?

Est-ce qu'il y a d'autres façons plus élégantes de procéder ?

--
Eric

Avatar
Olivier Miakinen

Il n'y a pas de ligne de code particulière. Une checkbox renvoit "on" si
elle est checkée et ne renvoit rien dans le cas contraire.
Ta boucle te renvoit donc seulement les clés qui ont été cochées.


Et ça, c'est un problème. Je pense au cas [...]

Seulement voila, si la checkbox n'est pas cochée, paf le champ et on se
retrouve avec un décalage.


Note que ce n'est pas un problème spécifique à PHP, mais à HTTP.

Je ne suis pas une bille en programmation en général, mais j'avoue avoir
un peu de mal avec la façon dont php gère les tableaux, à savoir ignorer
purement et simplement un élément s'il n'est pas renseigné, si j'ai bien
tout compris.


C'est le propre des tableaux associatifs comme en PHP, mais aussi en
JavaScript, en awk, probablement en Perl comme dans tous les langages
se voulant plutôt efficaces avec les chaînes de caractères que faciles
à implémenter en assembleur.

Note que cela présente l'immense avantage que :
$tableau = array(1000000000 => "x");
ne prenne pas un milliard de fois plus de mémoire que :
$tableau = array(0 => "x");

(On a eu le problème un jour avec un langage de programmation maison
basé sur du lisp -- problème heureusement corrigé depuis.)

Est-ce que l'utilisation d'un tableau associatif genre :

$mon_formulaire = array(champ0 => val0, champ1 => val1,...);

permettrait de résoudre le problème ?


Probablement pas puisque tout tableau PHP est associatif.

Est-ce qu'il y a d'autres façons plus élégantes de procéder ?


Je passe.