Problème de 'checkbox'

Eléphant du PHP | 80 Messages

23 nov. 2009, 15:14

Bonjour !!

Dans ma page, j'intègre des checkbox (case à cocher avec possibilité de sélectionner plusieurs valeurs).

Lorsque je valide la page (formulaire), je rafraichi cette même page dans laquelle je vérifie si un $_GET['action'] existe et si il vaut 'sauvegarde'..

Or, lorsque je veux sauvegarder, je n'arrive pas a comprendre comment récupérer chacune des valeurs de chacune de mes checkbox pour les placer en bdd. Je suis obligé de faire une fonction, car le nombre de checkbox n'est pas toujours le même..

Voici un résumé trés sommaire du code pour la compréhension

If ($_GET['action'] == 'sauvegarde')
{
//Ici, je ne comprends pas comment récupérer les valeurs "checked' ou pas de chacune des cases à cocher pour les sauvegarder en bdd
exit;
} 

<form name="form1" method="post" action="index.php?page=ajouter_activite&action=sauvegarde">
// requete sql pour récupérer chacunes des 'id_personnel'....
echo "<input type='checkbox' name='essai' value='essai_".$donnees['id_personnel']."'>".$donnees['nom']." ".$donnees['prenom']."<br>";
// ici, j'ai autant de cases à cocher que de valeur 'id_personnel' dans la base
<input type="submit" name="Submit" value="Valider">
</form>
Merci de votre aide !!

Eléphant du PHP | 174 Messages

23 nov. 2009, 16:04

Bonjour,

Dans ton formulaire lorsque tu déclares ta checkbox (dans le name) tu dois la représenter sous forme d'un tableau (genre macheckbox[]).

Lorsque tu récupères tes résultats tu dois boucler sur ce tableau et vérifier si la valeur vaut 0 (non cochée) ou 1 (cochée).

Pour cela je te conseille soit un foreach si tu es à l'aise avec la syntaxe, soit un for de i = 0 à i = nombre d'éléments (plus simple surtout si tu en as peu, tu peux très bien préciser comme valeur count($_POST['macheckbox'])).
//exemple pour 1 cjeckbox comportant 5 options :
for($i=0;$i<5;$i++){
  if(macheckbox[$i]==0){
    print("box ".$i." non cochée");
  }
  else{
    print("box ".$i." cochée");
  }
}

Tu peux chercher sur le web, notamment des travaux d'Hugo ETIEVAN mais aussi sur des sites dédiés à PHP en traitement des formulaires, pour en savoir plus.

Bonne progra ;)
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 nov. 2009, 18:07

Modération :
Afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer