Checkbox tableau php/html [Résolu]

ninho44 86 Messages postés vendredi 18 janvier 2008Date d'inscription 19 juin 2009 Dernière intervention - 19 juin 2008 à 09:33 - Dernière réponse : huberdine 158 Messages postés samedi 8 février 2003Date d'inscription 17 juin 2010 Dernière intervention
- 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...
Afficher la suite 

Votre réponse

12 réponses

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

Merci huberdine 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 78 internautes ce mois-ci

Commenter la réponse de huberdine
Meilleure réponse
huberdine 158 Messages postés samedi 8 février 2003Date d'inscription 17 juin 2010 Dernière intervention - 19 juin 2008 à 10:58
3
Merci
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

    }
}

Merci huberdine 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 78 internautes ce mois-ci

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.