PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 16-03-2010 16:31:46

Aurelyyyye
Membre
Inscription : 26-02-2010
Messages : 15

Checkbox précoché en fonction de ma base de données

Bonjour,

Je suis en train de réaliser un formulaire. Dedans j'ai une liste de checkbox (ce référant à une table de ma base de données) et j'aimerais que cetaines des checkbox (dont le nom est dans ma table) soit précochées.

Voici la partie de mon code qui code pour ces checkbox :

// Je récupère le nom des checkbox dans ma table
<p>
<?php foreach ($collaborateurs as $IdCollaborateur => $NomCollaborateur) : ?>
<input type="checkbox" name="checkbox[]" value="<?php echo $IdCollaborateur ?>"><?php echo $NomCollaborateur ?></input><br>
<?php endforeach ?>
</p>

Je sais qu'il me manque quelque chose pour les précocher mais je ne trouve pas. Dois-je faire un IF ??? Est ce que quelqu'un aurait des pistes... Car là après beaucoup de recherche je bloque...
Merci beaucoup smile

Hors ligne

#2 16-03-2010 16:33:35

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Checkbox précoché en fonction de ma base de données

Tu fais un if avec un echo de l'attribut CHECKED="checked" (il me semble d'après la norme W3C) pour les checkbox concernées.
Cela les précochera. ^^

Hors ligne

#3 16-03-2010 16:35:07

Aurelyyyye
Membre
Inscription : 26-02-2010
Messages : 15

Re : Checkbox précoché en fonction de ma base de données

Merci de ta réponse. Mais pourais-tu me dire plus ??

Hors ligne

#4 16-03-2010 17:05:55

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Checkbox précoché en fonction de ma base de données

Bah disons que ton champs peut avoir plusieurs valeurs, donc voici comment se présenterai le cas d'un des champs :

<input type="checkbox" name="val1"<?php if($res['val'] == "val1") echo ' CHECKED="checked"'; ?>>

Dernière modification par xTG (16-03-2010 17:06:26)

Hors ligne

#5 16-03-2010 17:47:48

Aurelyyyye
Membre
Inscription : 26-02-2010
Messages : 15

Re : Checkbox précoché en fonction de ma base de données

Merci beaucoup !!!!
Il reste encore un problème : mes checkbox sont cochées mais ma liste de checkbox est répétée autant de fois que j'ai de checkbox cochée :/

Voici mon code :
/// recherche de la liste des IdCollaborateur ayant suivi la formation (CodeFormation)
<?php   
$T=("SELECT distinct IdCollaborateur
FROM suitformation
WHERE CodeFormationSuit='$CodeFormation';");
$R=mysql_query($T);
While($ligne=mysql_fetch_array($R))
{
?>
<p>
// Mes checkbox
<?php foreach ($collaborateurs as $IdCollaborateur => $NomCollaborateur) : ?>
<input type="checkbox" name="checkbox[]" <?php if($ligne['IdCollaborateur'] == "$IdCollaborateur") echo ' CHECKED="checked"';?>
value="<?php echo $IdCollaborateur ?>"><?php echo $NomCollaborateur ?></input><br>
<?php endforeach ?>
<?php } ?>
</p>

Meci encore de ton aide

Dernière modification par Aurelyyyye (16-03-2010 17:48:10)

Hors ligne

#6 16-03-2010 17:51:29

Aurelyyyye
Membre
Inscription : 26-02-2010
Messages : 15

Re : Checkbox précoché en fonction de ma base de données

Petite précision : à chaque fois il n'y a de coché qu'une checkbox dans la liste des checkbox. Donc si j'ai trois checkbox de coché j'aurais trois fois la liste de checkbox avec à chaque fois une seule checkbox de cochée...

Hors ligne

#7 17-03-2010 07:01:33

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Checkbox précoché en fonction de ma base de données

Euh je ne suis pas sûr de comprendre.

Par contre il me semble avoir lu que Kris disait que lors d'une utilisation de DISTINCT il fallait faire un regroupement sur le champs : GROUP BY.

Hors ligne

#8 17-03-2010 09:32:04

Aurelyyyye
Membre
Inscription : 26-02-2010
Messages : 15

Re : Checkbox précoché en fonction de ma base de données

Bonjour,

Je viens d'essayer de faire un group by dans ma requete et là dans la liste des checkbox seule la première checkbox est cochée, il n'y a pas cette fois autant de liste de checkbox que de checkbox cochées. :(

Voici mon code avec le group By :
<?php   
$T=("SELECT distinct IdCollaborateur
FROM suitformation
WHERE CodeFormationSuit='$CodeFormation'
GROUP BY CodeFormationSuit;");
$R=mysql_query($T);
While($ligne=mysql_fetch_array($R))
{
?>
<p>
<?php foreach ($collaborateurs as $IdCollaborateur => $NomCollaborateur) : ?>
<input type="checkbox" name="checkbox[]" <?php if($ligne['IdCollaborateur'] == "$IdCollaborateur") echo ' CHECKED="checked"';?>
value="<?php echo $IdCollaborateur ?>"><?php echo $NomCollaborateur ?></input><br>
<?php endforeach ?>
<?php } ?>
</p>

Merci beaucoup de votre aide :)

Dernière modification par Aurelyyyye (17-03-2010 09:32:16)

Hors ligne

#9 19-03-2010 09:28:29

Aurelyyyye
Membre
Inscription : 26-02-2010
Messages : 15

Re : Checkbox précoché en fonction de ma base de données

Heu je suis encore bloqué...
Quelqu'un aurait-il une idée pour m'aider ???
Merci beaucoup smile

Hors ligne

#10 19-03-2010 10:06:26

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Checkbox précoché en fonction de ma base de données

Pourrait-on voir le code généré ? Car franchement je ne vois pas ce qui ne va pas.
Donc soit c'est ce que tu souhaite que je n'ai pas compris soit c'est le contenu renvoyé par ta requête qui n'est pas ce que tu veux.

Hors ligne

#11 19-03-2010 10:22:00

Aurelyyyye
Membre
Inscription : 26-02-2010
Messages : 15

Re : Checkbox précoché en fonction de ma base de données

Je veux qu'une seule liste de checkbox apparaissent et que dedans certaines checkbox soient cochées.

Je te donne une partie de mon code :


<?php
require 'connexion.inc.php';
header('Content-Type: text/html; charset=utf-8');
require 'menuformation.html';
 
if(!empty($_POST['CodeFormation']))
{$CodeFormation=$_POST['CodeFormation'];}
else
{$CodeFormation="NULL";}

//on recupere le nom du collaborateur sur la table collaborateur
$question = "SELECT * FROM collaborateurs ORDER BY NomCollaborateur ASC";
$resultat = mysql_query($question);
while ($row = mysql_fetch_assoc($resultat)) {
$collaborateurs[$row['IdCollaborateur']] = "{$row['NomCollaborateur']} ({$row['PrenomCollaborateur']})";
}
?>
<html>
</style>
<link href="boutonoval.css" media="screen" type="text/css" rel="stylesheet">
</head><br><br>
<body>
<form method="POST" action="confirme2_modification_formation.php">
<div id="titreForm"> Modification d'une formation </div>
<div id="corpForm">
<fieldset id="Collaborateurformes">
<legend> Collaborateurs formés </legend>
     
<?php
$T=("SELECT distinct IdCollaborateur
FROM suitformation
WHERE CodeFormationSuit='$CodeFormation';"
);
$R=mysql_query($T);
While($ligne=mysql_fetch_array($R))
{
?>

<p>
<?php foreach ($collaborateurs as $IdCollaborateur => $NomCollaborateur) : ?>
<input type="checkbox" name="checkbox[]" <?php if($ligne['IdCollaborateur'] == "$IdCollaborateur") echo ' CHECKED="checked"';?>
value="<?php echo $IdCollaborateur ?>"><?php echo $NomCollaborateur ?></input><br>
<?php endforeach ?>
<?php } ?>
</p>

</fieldset>
 
</div> 
<div id="piedForm">
<input type="submit" value="Modifier" onClick="return Confirmer()"></input>
</div>
</form>
</body>
</html>
 

NDM : C'est mieux en couleur non ?

Dernière modification par Aurelyyyye (19-03-2010 10:22:09)

Hors ligne

#12 19-03-2010 11:11:58

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Checkbox précoché en fonction de ma base de données

Oh mon dieu je viens de comprendre... J'avais trop rapidement parcouru ton code.
Ta requête te renvoie les collaborateurs que tu compares à un autre tableau.
Ta boucle while doit donc générer un tableau et non être directement traitée.

$tab_initial_collaborateur = array(....);
$req = mysql_query(...);
while( $res = mysql_fetch_array($req) )
  $tab_collaborateur[] = $res;

foreach( $tab_initial_collaborateur as $idCol => $nomCol )
{
  echo '<input type="checkbox" name="checkbox[]" ';
  if($ligne['IdCollaborateur'] == "$IdCollaborateur") echo ' CHECKED="checked"';
  echo 'value="'.$IdCollaborateur.'" />'.$NomCollaborateur.'<br />';
}

Voici un morceau de code te montrant comment faire, ainsi qu'une bonne utilisation des balises avec norme W3C.

Hors ligne

Pied de page des forums