Checkbox tableau php/html

Résolu
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009 - 19 juin 2008 à 09:33
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010 - 19 juin 2008 à 11:22
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...
A voir également:

12 réponses

huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
19 juin 2008 à 10:01
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']);
3
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
19 juin 2008 à 10:58
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

    }
}
3
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
19 juin 2008 à 09:51
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.
0
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009
19 juin 2008 à 09:56
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009
19 juin 2008 à 10:10
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
0
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
19 juin 2008 à 10:15
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.
0
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009
19 juin 2008 à 10:19
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 ??
0
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
19 juin 2008 à 10:31
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.
0
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009
19 juin 2008 à 10:39
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 !!
0
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009
19 juin 2008 à 11:10
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 ??
0
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009
19 juin 2008 à 11:12
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 ...
0
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
19 juin 2008 à 11:22
pas de pb.
Pense juste à passer le sujet comme résolu ;-)
0
Rejoignez-nous