Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/08/2007, 16h34   #1
Membre du Club
 
Inscription : janvier 2007
Messages : 270
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : janvier 2007
Messages : 270
Points : 50
Points : 50
Par défaut Récupérer les valeurs de plusieurs cases à cocher ayant le même nom

Salut tout le monde!!!

Voilà j'ai un petit soucis, dans un de mes formulaire, j'ai des checkbox et des select qui sont généré automatiquement. Tous mes checkbox ont le même nom et pareil pour mes selects.
par exemple j'ai mes checkbox qui s'appelle "lulu". Quand je vais récupérer la variable post avec php :

$recup = $_POST['lulu'];

est ce que $recup sera un tableau avec l'ensemble des checkbox?
Si c'est le cas, vu que mes checkbox ont des value qui correspondeà des idé"entoifiants numérique non consécutif comment faire pour parcourir le tableau de checkbox et récupérer ceux qui sont checkés?

Pareil pour les select.

Si vous avez des idées, n'hésitez pas je suis preneur.

Merci.
danathane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2007, 18h58   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par danathane
est ce que $recup sera un tableau avec l'ensemble des checkbox?
Tout dépend de la manière dont sont déclarés vos champs. S'ils utilisent la notation "tableau" alors oui. Exemple :
Code X :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<form method="post">
    <input type="checkbox" name="lulu[]" value="A" /> A
    <br />
    <input type="checkbox" name="lulu[]" value="B" /> B
    <br />
    <input type="checkbox" name="lulu[]" value="C" /> C
    <br />
    <!-- ... -->
    <input type="submit" value="Valider" />
</form>

<?php
if (isset($_POST['lulu'])) {
    var_dump($_POST['lulu']);
}
?>

Citation:
Envoyé par danathane
Si c'est le cas, vu que mes checkbox ont des value qui correspondeà des idé"entoifiants numérique non consécutif comment faire pour parcourir le tableau de checkbox et récupérer ceux qui sont checkés?
Une itération de type foreach permet de récupérer à la fois la clé et la valeur. C'est une méthode parmi d'autres.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2007, 09h19   #3
Membre du Club
 
Inscription : janvier 2007
Messages : 270
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : janvier 2007
Messages : 270
Points : 50
Points : 50
OK merci julp.
J'aurais juste une dernière question. Avec le foreach, est ce que c'est possible de récupérer le value? parce que là je vois pas trop comment le récupérer. à moins de faire peut etre un current($lulu). mais je suis pas très sur.

Merci pour ton aide et celle des autres.
danathane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2007, 09h37   #4
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Hello,


Ceci devrait fontionner :
Code :
1
2
3
4
 
while (list($key, $value) = each($_POST['lulu'])) {
    echo "Clé : $key; Valeur : $value<br />\n";
}
ou alors
Code :
1
2
3
4
5
6
7
 
$i=0;
$a = $_POST['lulu'];
foreach ($a as $v) {
    echo "\$a[$i] => $v.\n";
    $i++;
}
@+
cadou
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2007, 11h43   #5
Membre du Club
 
Inscription : janvier 2007
Messages : 270
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : janvier 2007
Messages : 270
Points : 50
Points : 50
Salut salut!!
Je comprend pas trop l'histoire de $key, $value.
$Key correspond au champ value? et $ value permet de savoir si le checkbox a été coché c'est bien ca?
je dois quire que je suis pas sur du tout d'avoir tout capté là.
Désolé si ma quetsion est toute bête mais bon je préfère quand meme être sûr.
danathane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2007, 12h12   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
En PHP vous n'obtiendrez que les checkbox qui ont été cochées par l'utilisateur. Reprenons notre formulaire où j'ai forcé la valeur des indices (1, 2 et 3) - ils peuvent correspondre à la valeur de votre clé primaire pour identifier ce qui doit être traité ou non :
Code :
1
2
3
4
5
6
7
8
9
10
<form method="post">
    <input type="checkbox" name="lulu[1]" value="A" /> A
    <br />
    <input type="checkbox" name="lulu[2]" value="B" /> B
    <br />
    <input type="checkbox" name="lulu[3]" value="C" /> C
    <br />
    <!-- ... -->
    <input type="submit" value="Valider" />
</form>
Admettons que l'utilisateur ait coché A et C, mon tableau $_POST donnera pour cette partie :
Code X :
1
2
3
4
'lulu' => Array(
    '1' => 'A',
    '3' => 'C'
)
1 et 3 sont donc les clés et A et C les valeurs qui leur sont respectivement associées.

Pour le parcours du résultat :
Code :
1
2
3
4
5
6
7
if (isset($_POST['lulu']) && is_array($_POST['lulu'])) {
    echo 'Vous avez choisi :<ul>'
    foreach ($_POST['lulu'] as $key => $value) {
        printf('<li>%s : %s</li>', $key, $value);
    }
    echo '</ul>';
}
Si vous n'utilisez pas ces indices dans votre formulaire alors la clé ne vous sera pas utile (forme tableau par défaut, le premier sera 0, le deuxième 1, ...). On peut alors se passer de récupérer la clé comme le permet foreach :
Code :
1
2
3
4
5
6
7
if (isset($_POST['lulu']) && is_array($_POST['lulu'])) {
    echo 'Vous avez choisi :<ul>'
    foreach ($_POST['lulu'] as $value) {
        printf('<li>%s</li>', $value);
    }
    echo '</ul>';
}
N'hésitez pas à tester ce sera surement plus clair.

En savoir plus sur foreach.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2007, 13h01   #7
Membre du Club
 
Inscription : janvier 2007
Messages : 270
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : janvier 2007
Messages : 270
Points : 50
Points : 50
Okay, je commence à voir un peu plus clair là.
merci mille fois pour ces explications.
danathane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 17h10   #8
Membre du Club
 
Inscription : janvier 2007
Messages : 270
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : janvier 2007
Messages : 270
Points : 50
Points : 50
Re bonjour tout le monde.
J'ai encore une petite quetsion pour vous

Toujours avec mes histoire de slecet qui portent le meme nom.
Si je fais un select à choix multible
est ce que je peux récupérer les différent choix dans chaque select de cette manière :
foreach($_POST['mon champ'] as^$tab_value){

foreach($tab_value as $value){

//intrcutions.

}

}


là mon $value correspondra au différent choix que j'aurais fait dans mon select à choix multiple, et ce pour chaque select.

Est ce que c'est bien ca?

merci du coup de main par avance
danathane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 19h32   #9
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par danathane
foreach($_POST['mon champ'] as^$tab_value){

foreach($tab_value as $value){

//intrcutions.

}

}
A priori oui (mis à part le ^ de trop et l'espace dans le nom du champ), mais comment faites-vous pour identifier la liste ? Vous n'avez pas ce besoin ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 14h07   #10
Membre du Club
 
Inscription : janvier 2007
Messages : 270
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : janvier 2007
Messages : 270
Points : 50
Points : 50
Coment ca "comment faites vous pour identifier la liste?" je dois dire que je ne comprend pas bien là.
danathane est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h23.


 
 
 
 
Partenaires

Hébergement Web