OVH Cloud OVH Cloud

boucle (for) et array, help me

3 réponses
Avatar
ryckoort fabien
Bonsoir à tous, j'ai un petit travail a faire, qui consiste a récuperer tout
simplement les valeur d'un formulaire, un moment il y a 7 case à cocher, ca
fait un peu bcp si je doit faire des condition pour chacunes .... .
donc je me suis dit, je vais déclarer tout les viriable qui correspondent au
cases a cocher . comme ceci :

settype($c,'string'); $c = $_POST['c'];
settype($pascal,'string'); $pascal = $_POST['pascal'];
settype($Cpp,'string'); $cpp = $_POST['Cpp'];
settype($vb,'string'); $vb = $_POST['vb'];
settype($Cdiese,'string'); $Cdiese = $_POST['C#'];
settype($java,'string'); $java = $_POST['java'];
settype($autre3,'string'); $autre3 = $_POST['autres3'];
settype($autre2,'string'); $autre2 = $_POST['autres2'];


voici le code html en passant :

Quels languages de programmation connaissez vous ?<br>
<input type="checkbox" name="C">C
<input type="checkbox" name="pascal">pascal<br>
<input type="checkbox" name="Cpp">C++
<input type="checkbox" name="vb">vb<br>
<input type="checkbox" name="C#">C#
<input type="checkbox" name="autres3">Autres...<br>
<input type="checkbox" name="java">java
Si autres, précisez:<input type=text name="autres2" size="20">

pas tres compliquer :)

je me suis dit pk pas mettre les variables, dans un tableaux et ensuite
faire une boucle comme ceci :

settype($t,'array');
$t[0] = $c;
$t[1] = $cpp;
$t[2] = $cdiese;
$t[3] = $java;
$t[4] = $pascal;
$t[5] = $autre3;

settype($totaux,'string');
$totaux = "";
for ($i=0;$i<=5;$i=$i+1){
if ($t[$i] == "on"){
$totaux = $t[$i];
}
}
print("Language de programmation : $totaux");

le probleme : il me retourne bien une valeur celon la case qui est cocher,
ou pas, mais il me retourne toujours la valeur "on" lol, alors que je vois
aps ou il va chercher ca ....
si quelqu'un a une idée ... merci de m'en faire part, c'est assez urgent, et
j'ai pas mal chercher ...

merci d'avance a bientot ...

3 réponses

Avatar
Olivier Miakinen

settype($totaux,'string');
$totaux = "";
for ($i=0;$i<=5;$i=$i+1){
if ($t[$i] == "on"){
$totaux = $t[$i];
}
}
print("Language de programmation : $totaux");

le probleme : il me retourne bien une valeur celon la case qui est cocher,
ou pas, mais il me retourne toujours la valeur "on" lol, alors que je vois
aps ou il va chercher ca ....


Je ne comprends pas bien où est le problème.

Dans chaque case de ton tableau $t, tu as soit "on" soit "" (je suppose)
selon que l'élément est coché ou pas. Ensuite, tu fais une boucle qui
met $totaux = "on" si au moins une valeur est cochée, et à "" si aucune
valeur ne l'est.

Est-ce que le problème est que tu as toujours "on" même si aucune valeur
n'est cochée ?

Avatar
Saad Saad
Salut,

Comme tout élément d'un formulaire, checkbox possède le paramètre value;

lorsque la case n'est pas coché, le champ n'est pas récupéré.

bien que je ne suis pas un professionnel, voilà comment je procède.

Il y donc peut-être mieux

Chaque checkbox est un tinyint(1)

Pour chaque checkbox, je met value=1.

<input name="var1" type="checkbox" id="var1" value="1">
<input name="var2" type="checkbox" id="var2" value="1">

quand je récupère le formulaire, je crée une variable par case que
j'initialise à 0;

var1=0;
var2=0;

ensuite je colle un très petit code terrible de chez terrible que j'ai
trouvé sur le web je l'avoue.


foreach($_REQUEST as $champs => $val)
{
$a=$champs;
$$a­dslashes(trim($val));
}


Cette fonction crée autant de variable qu'il y à dans ton formulaire,
excepté les cases non coché.

C'est pourquoi je crée une variable =0 pour chaque checkbox A METTRE
AVANT la boucle.

Comme cela, chaque case à coché aura la valeur 0, sauf celle qui sont
coché auront la valeur 1 ;-)


Le code fonctionne pour récupérer tous les éléments d'un formulaire get
ou post excepté pour les éléments de type="file".


bonne chance

--
Saad Saad




Bonsoir à tous, j'ai un petit travail a faire, qui consiste a
récuperer tout simplement les valeur d'un formulaire, un moment il y
a 7 case à cocher, ca fait un peu bcp si je doit faire des condition
pour chacunes .... . donc je me suis dit, je vais déclarer tout les
viriable qui correspondent au cases a cocher . comme ceci :

settype($c,'string'); $c = $_POST['c'];
settype($pascal,'string'); $pascal = $_POST['pascal'];
settype($Cpp,'string'); $cpp = $_POST['Cpp'];
settype($vb,'string'); $vb = $_POST['vb'];
settype($Cdiese,'string'); $Cdiese = $_POST['C#'];
settype($java,'string'); $java = $_POST['java'];
settype($autre3,'string'); $autre3 = $_POST['autres3'];
settype($autre2,'string'); $autre2 = $_POST['autres2'];


voici le code html en passant :

Quels languages de programmation connaissez vous ?<br> <input
type="checkbox" name="C">C <input type="checkbox"
name="pascal">pascal<br> <input type="checkbox" name="Cpp">C++ <input
type="checkbox" name="vb">vb<br> <input type="checkbox" name="C#">C#
<input type="checkbox" name="autres3">Autres...<br> <input
type="checkbox" name="java">java Si autres, précisez:<input type=text
name="autres2" size="20">

pas tres compliquer :)

je me suis dit pk pas mettre les variables, dans un tableaux et
ensuite faire une boucle comme ceci :

settype($t,'array'); $t[0] = $c; $t[1] = $cpp; $t[2] = $cdiese; $t[3]
= $java; $t[4] = $pascal; $t[5] = $autre3;

settype($totaux,'string'); $totaux = ""; for ($i=0;$i<=5;$i=$i+1){ if
($t[$i] == "on"){ $totaux = $t[$i]; } } print("Language de
programmation : $totaux");

le probleme : il me retourne bien une valeur celon la case qui est
cocher, ou pas, mais il me retourne toujours la valeur "on" lol,
alors que je vois aps ou il va chercher ca .... si quelqu'un a une
idée ... merci de m'en faire part, c'est assez urgent, et j'ai pas
mal chercher ...

merci d'avance a bientot ...


Avatar
Sebastien
Oula tu t'y prends mal !
Il faudrait faire :

<input type="checkbox" name="langages[]" value="C"/> C
<input type="checkbox" name="langages[]" value="C++"/> C++
<input type="checkbox" name="langages[]" value="Pascal"/> Pascal
...

Puis dans la page de traitement :

if ( ! empty($_POST['langages']) ) {
echo 'Vous avez coché : ' ;
foreach ( $_POST['langages'] as $langage ) {
echo $langage, ' ' ;
}
}

si quelqu'un a une idée ... merci de m'en faire part, c'est assez urgent, et
j'ai pas mal chercher ...


Le groupe étant modéré, même si les réponses arrivent vite tu ne les
verras pas tout de suite.