petit problème de checked=checked

Eléphanteau du PHP | 14 Messages

02 févr. 2012, 19:42

Bonjour à tous, j'ai un petit problème de checked=checked avec 2 tables et un formulaire.
j'arrive pas que toutes les checkbox soient validées .
Si vous pouvez m'expliquez où je me trompe.

<form action="" method="post" name="inser">
<?php 
$sql0="Select * FROM objets  WHERE name ='$partenaire' ORDER BY objet";$res0=mysql_query($sql0) or die ('Erreur SQL0!'.$sql0.mysql_error());
 while(@$va=mysql_fetch_array($res0))
{ 
$objet=$va['objet'];  $id_objet=$va['id_objet'];


$sql1="Select * FROM achat_adherents WHERE id_adherent= $id_adherent";$res1=mysql_query($sql1) or die ('Erreur SQL1!'.$sql1.mysql_error()); 

 while(@$va1=mysql_fetch_array($res1)){ $idobjet1=$va1['id_objet'];  $nom=$va1['id_adherent'];
 if($id_objet==$idobjet1 AND $nom==$id_adherent){ $kc='checked="checked"';}else{$kc='';}
 }



?>
<p><input name="adherent" type="hidden" value="<?php echo $id_adherent; ?>">
<input name="obj[]" type="hidden" value="<?php echo $objet;?>">
<?php echo $objet  ?><input name="ob[]" type="checkbox" value="<?php echo $id_objet;  ?>"<?php echo $kc;?>>

</p><?php }



?>


?>
<p><input name="adherent" type="hidden" value="<?php echo $id_adherent; ?>">
<input name="obj[]" type="hidden" value="<?php echo $objet;?>">
<?php echo $objet  ?><input name="ob[]" type="checkbox" value="<?php echo $id_objet;  ?>"<?php echo $kc;?>>

</p><?php }



?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 févr. 2012, 15:10

Je ne comprend pas quel est le problème... quel résultat est-ce que tu attends, quel résultat est-ce que tu obtiens ?

Si certaines cases ne sont pas cochées alors qu'elles le devraient, c'est que le test qui te permet de définir ta variable $kc n'est pas bon :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 2278 Messages

04 févr. 2012, 15:27

Si certaines cases ne sont pas cochées alors qu'elles le devraient, c'est que le test qui te permet de définir ta variable $kc n'est pas bon :)
OUI, mais certains navigateurs font de la résistance et ne montrent pas à coup sûr la case "checkée", en particulier derrière un F5.
Une piste est d'aller voir le code source de la page, pas le php, celui qu'il produit, pour voir si les checked sont en place....
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 14 Messages

06 févr. 2012, 23:31

merci de m'avoir répondu,
je pense que j'ai trouvé, ma 2ième boucle while n'était pas au bon endroit.
j'ai un autre problème qui apparait .
dans le deuxième while mon else de marche pas.
si je mets une variable dans mon else. elle ne s'affiche pas.


$sql0="Select * FROM objets  WHERE name ='$partenaire' ORDER BY objet";$res0=mysql_query($sql0) or die ('Erreur SQL0!'.$sql0.mysql_error());
 while(@$va=mysql_fetch_array($res0))
{ 
$objet=$va['objet'];  
$id_objet=$va['id_objet'];


?>
<p><input name="adherent" type="hidden" value="<?php echo $id_adherent; ?>">
<input name="obj[]" type="hidden" value="<?php echo $objet;?>">
<?php echo $objet  ?><input name="ob[]" type="checkbox" value="<?php echo $id_objet;  ?>"
<?php 

$sql1="Select * FROM achat_adherents WHERE id_adherent= $id_adherent and id_objet='$id_objet'";$res1=mysql_query($sql1) or die ('Erreur SQL1!'.$sql1.mysql_error()); 

 while(@$va1=mysql_fetch_array($res1)){ 
 $idobjet1=$va1['id_objet'];  
 $nom=$va1['id_adherent'];
 $a=$va1['chec'];
 
 if($id_objet==$idobjet1 AND $nom==$id_adherent and $a==1){ echo'checked="checked"';}else{echo'';}
}echo '>';

Eléphanteau du PHP | 14 Messages

08 févr. 2012, 11:18

Bonjour,
un p'tit up je vais essayer d'expliquer mon problème un peu mieux.
$sql0="Select * FROM objets  WHERE name ='$partenaire' ORDER BY objet";$res0=mysql_query($sql0) or die ('Erreur SQL0!'.$sql0.mysql_error());
 while(@$va=mysql_fetch_array($res0))
{
$objet=$va['objet'];  
$id_objet=$va['id_objet'];
?>
<p><input name="adherent" type="hidden" value="<?php echo $id_adherent; ?>">
<input name="obj[]" type="hidden" value="<?php echo $objet;?>">
<?php echo $objet  ?><input name="ob[]" type="checkbox" value="<?php echo $id_objet;  ?>"
jusque là tout va bien j'ai mis ma 2ième boucle while qui me dis si c'est bon la checkbox est cochée. ce que je voulais.

mais mon else ne fonctionne pas.
<?php

$sql1="Select * FROM achat_adherents WHERE id_adherent= $id_adherent and id_objet='$id_objet'";$res1=mysql_query($sql1) or die ('Erreur SQL1!'.$sql1.mysql_error());

 while(@$va1=mysql_fetch_array($res1)){
 $idobjet1=$va1['id_objet'];  
 $nom=$va1['id_adherent'];
 $a=$va1['chec'];
 
 if($id_objet==$idobjet1 AND $nom==$id_adherent and $a==1){ echo'checked="checked"';}else{echo'';}
}echo '>';
si je change ma 2ième boucle en demandant si c'est ok : on met la date/ si c'est pas bon : on met la checkbox.
la checkbox ne s'affiche pas.
echo $objet;
$sql1="Select * FROM achat_adherents WHERE id_adherent= $id_adherent and id_objet='$id_objet'";$res1=mysql_query($sql1) or die ('Erreur SQL1!'.$sql1.mysql_error()); 

 while(@$va1=mysql_fetch_array($res1)){ 
 $idobjet1=$va1['id_objet'];  
 $nom=$va1['id_adherent'];
 $a=$va1['chec'];
 $date=$va1['date_achat'];
 
 if($id_objet==$idobjet1 AND $nom==$id_adherent and $a===1)
{ echo 'a été validé le '.$date;} // la date s'affiche

else{ echo'<input name="ob[]" type="checkbox" value="'.echo $id_objet.'">';}//checkbox ne s'affiche pas

su quelqu'un pouvait m'expliquer pourquoi :oops:

Eléphanteau du PHP | 14 Messages

08 févr. 2012, 18:40

ayé j'ai trouvé mon problème
si cela intéresse du monde, il faut mettre
 $requete = "SELECT count(*) as nb FROM   achat_adherents WHERE id_objet = '$id_objet' and id_adherent = '$id_adherent'";$req_exec = mysql_query($requete) or die(mysql_error());$resultat = mysql_fetch_assoc($req_exec);
 	             
 	   if ($resultat['nb'] == 0 )
 	            // Résultat du comptage = 0 
 	            { $p='<input name="ob[]" type="checkbox" value="'. $id_objet.'">';}
 else{
				 $sql1="Select * FROM achat_adherents WHERE id_adherent= $id_adherent and id_objet='$id_objet'";$res1=mysql_query($sql1) or die ('Erreur SQL1!'.$sql1.mysql_error()); 
				 
				  while(@$va1=mysql_fetch_array($res1)){ 
				  
				  $date=$va1['date_achat'];
				 
				 $p='a été validé le '.$date;}

}echo $p;

à la place du 2ième while. si quelqu'un a mieux je prends ^^