Checkbox tableau php/html [Résolu]

Signaler
Messages postés
86
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
19 juin 2009
-
Messages postés
158
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
17 juin 2010
-
Bonjour a tous,
voila je code en php un site intranet...je voudrais faire un tableau avec quatre colonnes dont une qui contient des checkbox...comme ceci:

$resultat= auto_conges($emp);
while($result=mysql_fetch_array($resultat))
{   
$date=date_format($result[0]);
$periode=search_libelle_periode($result[1]);
$motif=search_libelle_motif($result[2]);
echo('<tr align="center" class="conges">
        <td>'.$date.'</td><td>'.$periode.'</td><td>'.$motif.'</td><td> </td>
        </tr>');

En fait,les checkbox doivent me servir a supprimer toute une ligne du tableau si elle est cochée ...Je pense que mon code pour les checkbox n'est pas bon mais c'est la 1ere fois que je m'en sers...
Ensuite, j'aimerai récupérer les variable de la ligne qui a été cochée...

if (isset ($_GET['choix']))
{
$result =array($_GET['choix']);
$count=mysql_affected_rows();
for($i=0;$i<$count;$i++) {
echo(''.$result[$i].''); } }

Mais la pareil, je ne suis pas très sur de mon code...
Si quelqu'un peut me venir en aide ce serait très simpa...ca fait deja quelques jours que je galère la-dessus. Merci beaucoup...

12 réponses

Messages postés
158
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
17 juin 2010

Array, ça veut dire tableau.
Il faut donc parcourir le tableau $_POST['choix'] pour savoir quelle case a été cochée.
tu peux faire comme ceci :
if (isset ($_POST['choix']))
{
    foreach($_POST['choix'] as $checkbox)
    {
echo $checkbox;
    }
}

Tu n'as pas besoin de faire $result=array($_POST['choix']);

D'autre part, si tu veux visualiser le contenu d'un tableau sans avoir à le parcourir, tu peux faire : var_dump($_POST['choix']);
Messages postés
158
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
17 juin 2010

tu peux faire comme ceci (par exemple)

$resultat= auto_conges($emp);
while($result=mysql_fetch_array($resultat))
{
    $date=date_format($result[0]);
$periode=search_libelle_periode($result[1]);
$motif=search_libelle_motif($result[2]);
$employe = ????? // à compléter
echo('
<tr align ="center" class="conges">
<td>'.$date.'</td>
<td>'.$periode.'</td>
<td>'.$motif.'</td>
<td> </td>
</tr>
');
}

Et pour récupérer les données :

if (isset ($_POST['choix']))
{
    foreach($_POST['choix'] as $checkbox)
    {
$date = $_POST['date_'.$checkbox];
$periode = $_POST['periode_'.$checkbox];
$motif = $_POST['motif_'.$checkbox];

// La suite de ton traitement ici

    }
}
Messages postés
158
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
17 juin 2010

En fait, il ne te manque pas grand chose :
Pour chaque checkbox, tu dois lui donner une valeur afin, de savoir après coup si elle a été cochée ou non.
Je m'explique :
ici_tu_mets_une_valeur_unique_pour_chaque_ligne_du_tableau"</gras>>

Ainsi, une fois le formulaire posté, la variable $_POST['choix'] (je te conseille le post, mais si tu préfère le get tu remplace par $_GET['choix']) contient un tableau. Chaque case du tableau contient la valeur (value) de l'une des checkbox cochée.
Messages postés
86
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
19 juin 2009

ok alors j'ai changé ce que tu ma dis...merci
mais le probleme maintenant doit venir de ça:

if (isset ($_POST['choix']))
{
$result=array($_POST['choix']);
$count=mysql_affected_rows();
for($i=0;$i<$count;$i++) {
echo(''.$result[$i].''); } }

Cela m'affiche Array...Et je ne vois pas quoi faire (je suis débutant en PHP)
Messages postés
86
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
19 juin 2009

Ah ok ca avance c'est cool..mais là, la variable $checkbox correspond au nom de la value que j'ai donnée au <input type="checkbox"...

-que dois-je mettre comme nomde value a la checkbox pour que ca corresponde a une ligne?
-et comment récupérer les valeurs des trois colonnes d'une ligne cochée ??

Peut-tu m'aider stp ??? Je galère vraiment avec ce code !!! je te remercie
Messages postés
158
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
17 juin 2010

Pour la valeur de la checkbox, je te conseille de mettre l'id de la ligne dans la base de données.
Les trois autres valeurs dont tu parles, c'est $date, $periode et $motif ?
Si tu ne fais que les afficher, tu n'a pas forcément besoin de les récupérer : l'id récupéré doit normalement permettre de les identifier de manière unique.
Messages postés
86
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
19 juin 2009

En fait si je dois les récupérer...surtout $date parce que je m'en sers en tant que parametre pour ma requete que je fais après...

par contre, je ne comprends pas " je te conseille de mettre l'id de la ligne dans la base de données."...qu'est ce que tu veux dire par la ??
Messages postés
158
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
17 juin 2010

Quand je parle d'identifiant, je parle de clé primaire.
C'est un concept essentiel en base de données qui permet d'attribuer un identifiant unique à chaque enregistrement en base.
Tu dis que tu te sers de $date comme paramètre pour ta requête.
Mais que se passe-t'il si plusieurs ligne ont la même date : comment les différencier.
C'est à ça que sert la clef primaire (ou id). Elle n'est là que pour différencier les différents enregistrement de ta base de données, sans aucune connotation sur le contenu de ces enregistrements.
Si tu n'as pas de clef primaire, mais que tu est certain que jamais deux enregistrements n'auront la même date, tu peux mettre comme $date comme valeur pour ton checkbox. tu récupérera ainsi les différentes dates cochées.
Messages postés
86
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
19 juin 2009

ah ok ... non mais en fait ma table se compose de deux champs pour clé primaire, parce que j'ai une relative...donc en gros ma clé primaire c'est $employe et $date...

-Mais alors il ressemble a quoi le value dans le <input type="checkbox"...
-Et donc comment je fais pour récupérer juste le $date de la ligne cochée ??
(le $employe je le récupère autrement)

je te remercie en tout cas de me donner un coup de main...c'est cool de ta  part !!
Messages postés
86
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
19 juin 2009

Ok donc j'ai mélangé un peu les deux et ca marche, j'arrive a récupérer la date. Mais maintenant c'est pour récupérer mon $employe que ca déconne...
En fait au debut du form, j'ai mis:

et dans ma page où m'envoi le form, jai mis:
$employe=$_GET['code_employe'];
echo $employe;

Cependant, l'erreur me dis que $employe n'est pas défini...comment ça se fait ??
Messages postés
86
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
19 juin 2009

non c'est bon...j'avais GET au lieu de POST...
quel con !!

C'est bon tout marche!!  :D
Je te remercie...heureusement qu'il existe des personnes cool pour aider les moins bons!!

Bonne journée !! et encore merci ...
Messages postés
158
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
17 juin 2010

pas de pb.
Pense juste à passer le sujet comme résolu ;-)