Cocher automatiquement des checkbox au chargement

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Cocher automatiquement des checkbox au chargement

Re: Cocher automatiquement des checkbox au chargement

par ValC » 28 mars 2016, 15:29

J'ai pu avancer un peu en modifiant ma requête d'affichage de tarifs.
<?php
$listeTarifs = $bdd->query('SELECT * FROM tarif 
INNER JOIN lien_representation_tarif ON lien_representation_tarif.LIEN_RT_Representation_ID ='.$Representation_ID.'
ORDER BY Tarif_ID');
while ($donnees = $listeTarifs->fetch())
{
$Tarif_Liaison[$donnees['LIEN_RT_Tarif_ID']] = $donnees['LIEN_RT_Tarif_ID'];
print_r($Tarif_Liaison) ;
if($Tarif_Liaison[$donnees['LIEN_RT_Tarif_ID']] == $donnees['Tarif_ID']){
	$sel = "checked";
}
if($Tarif_Liaison[$donnees['LIEN_RT_Tarif_ID']] != $donnees['Tarif_ID']){
	$sel = "";
}
$afficheTarif = $donnees['Tarif_nom']. " - " .$donnees['Tarif_prix']. " €";
?>
<br>
<input <?= $sel ; ?> name="Tarifs[<?php echo $donnees['Tarif_ID'];?>]" type="checkbox" value="<?php echo $afficheTarif; ?>">
<label for="<?php echo $afficheTarif; ?>"><?php echo $afficheTarif; ?></label>

<?php 

}

?>
a présent lorsque je veux modifier une représentation, les tarifs concernés sont cochés.
Aucun problème d'affichage lorsqu'il n'y a qu'un seul tarif réservé. Mais lorsqu'il y en a plusieurs je me retrouve avec des doublons de tarifs.
Je pense que cela viens du INNER JOIN mais je ne sais pas comment exécuter cette deuxième boucle sans passer par là.

Cocher automatiquement des checkbox au chargement

par ValC » 28 mars 2016, 14:42

Bonjour,

je rencontre un problème sur le rappel des valeures enregistrées sur un formulaire avec des checkbox.

Je m'explique :

je coche les cases des tarifs correspondant a mon spectacle d'après une liste de tarifs. La séléction est enregistrée sur une table de liaison entre Tarif et Spectacle.

jusque là tout va bien. Coté visu, j'arrive a n'afficher que les tarifs cochés grace a la table de liaison, pas de soucis.

Le problème intervient lorsque je souhaite éditer cette selection de tarifs.

J'ai fais un lien d'édition, et je souhaiterai retomber sur le formulaire qui proposais tous les tarifs mais que ceux qui ont étés cochés pour le spectacle en question apparaissent cochés.

Je ne sais pas si c'est très clair.

En gros si j'ai affecter 3 tarifs sur 10 proposés a mon spectacle, j'aimerais que lorsque je clique sur le bouton éditer, ça m'affiche la liste des 10 tarifs mais qu'il y ai les 3 tarifs de cochés.

J'ai deux boucles qui interviennent dans l'opération et je ne sais pas comment les gerer afin de les faire dépendre.

Mon idée était de faire :
<?php
 
if(l'id du tarif == id du tarif lié au spectacle){
$active = "checked"
};
 
?>
Bien sur il a plusieurs tarifs concernés, donc une boucle ? mais comment l'organiser ?

Ceci affiche la liste de tous les tarifs possibles :
<?php
$listeTarifs = $bdd->query('SELECT * FROM tarif  ORDER BY Tarif_ID');
while ($donnees = $listeTarifs->fetch())
{
 
$afficheTarif = $donnees['Tarif_nom']. " - " .$donnees['Tarif_prix']. " €";
?>
<br>
<input <?= $active ; ?> name="Tarifs[<?php echo $donnees['Tarif_ID'];?>]" type="checkbox" value="<?php echo $afficheTarif; ?>">
<label for="<?php echo $afficheTarif; ?>"><?php echo $afficheTarif; ?></label>
 
<?php
 
}
 
?>
Ceci affiche les tarifs sélectionnés et enregistrés dans la table de liaison :
<?php
 
$reponse6 = $bdd->query('SELECT * FROM lien_representation_tarif
INNER JOIN tarif ON tarif.Tarif_ID = lien_representation_tarif.LIEN_RT_Tarif_ID
WHERE LIEN_RT_Representation_ID = '.$Representation_ID.' ORDER BY LIEN_RT_Tarif_ID');
while ($donnees6 = $reponse6->fetch()) {
    $Tarif_ID = $donnees6['Tarif_ID'];
    $Tarif_nom = $donnees6['Tarif_nom'];
    $Tarif_prix = $donnees6['Tarif_prix'];
     
echo "<br>".$Tarif_nom." - ".$Tarif_prix." €";   
     
        };?>
Une petite idée ? je tourne en rond pour ma part

merci la communauté :wink: