affichage checkbox coché ou décoché selon SQL
Bonjour à tous,
Je vous donne mon exemple:
J'ai créé des agences qui gèrent des maisons de vacances.
J'ai donc un formulaire qui affiche par agence, toutes les maisons disponibles et il faut cocher celles qui doivent être gérées ou non par cette agence.
Jusque là pas de problème pour moi puisque l'on part du principe qu'aucune maison n'est cochée au début.
Voici où cela se corse:
Lorsque l'on retourne dans le formulaire pour mettre à jour les gestions de maisons, je n'arrive pas à afficher celles qui sont déjà gérée par l'agence.
Pouvez-vous m'aider svp ;)
Voici mon script:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
| include ("connexion.php");
$id_agency = $_GET['link_id'];
//Affichage données agence
$stmtAgency = $connexion->prepare("SELECT * FROM agency WHERE id = :id");
$stmtAgency->BindParam(":id",$id_agency);
$stmtAgency->execute();
$dspAgency = $stmtAgency->fetch(PDO::FETCH_OBJ);
//affichage contenu maisons
$stmtHouse = $connexion->prepare("SELECT * FROM houses");
$stmtHouse->execute();
//affichage maison liées
$stmtLinked = $connexion->prepare("SELECT * FROM houses_linked WHERE id_agency = :id ");
$stmtLinked->BindParam(":id",$id_agency);
$stmtLinked->execute();
if(isset($_POST['edit']))
{
$checkbox = $_POST['name'];
for ($i=0; $i<sizeof($checkbox);$i++) {
$stmtInsert = $connexion->prepare("INSERT INTO houses_linked (id_agency, id_house) VALUE (:id_agency, '".$checkbox[$i]."') ");
$stmtInsert->BindParam(":id_agency",$id_agency);
//$stmtInsert->BindParam(":id_house",$checkbox[$i]);
$stmtInsert->execute();
}
header("Location:linkhouse.php?ok&id=0");
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="jumbotron">
<h1>Lier une maison</h1>
<p>Complétez les champs ci-dessous selon les critères définis.
</p>
</div>
<p>
Agence : <?php echo $dspAgency->name; ?>
</p>
<?php
if(isset($error))
{
foreach($error as $error)
{
?>
<div class="alert alert-danger alert-dismissable" >
<a href="edit.php?false" class="close" data-dismiss="alert" aria-label="close">×</a>
<i class="glyphicon glyphicon-warning-sign"></i> <?php echo $error; ?> !
</div>
<?php }
}
else if(isset($_GET['ok']))
{
?>
<div class="alert alert-success" id="success">
<i class="glyphicon glyphicon-log-in"></i> Modification effectuée ! <a href="index.php">Retour</a>
</div>
<?php } ?>
<form class="form-horizontal" method="post">
<?php while( $dspHouse = $stmtHouse->fetch(PDO::FETCH_OBJ) ) {
?>
<div class="form-group">
<label class="control-label col-sm-2" for="name"><?php echo $dspHouse->name;?>:</label>
<div class="col-sm-10">
<input type="checkbox" class="form-control" name="name[]" value="<?php echo $dspHouse->id;?>">
</div>
</div>
<?php }
?>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default" id="edit" name="edit">Envoyer</button>
<a href="index.php">Annuler</a>
</div>
</div>
</form>
</div>
</body>
</html> |
sachant que le contenu de ma table houses_linked est composé comme suit:
id_agency |
id_house |
1 |
1 |
1 |
2 |
3 |
1 |
3 |
2 |
3 |
3 |
Code:
1 2 3 4
| //affichage maison liées
$stmtLinked = $connexion->prepare("SELECT * FROM houses_linked WHERE id_agency = :id ");
$stmtLinked->BindParam(":id",$id_agency);
$stmtLinked->execute(); |
est la requête qui récupère les maisons gérées par agence et retourne des nombres 1, 2, 3....
et
Code:
<input type="checkbox" class="form-control" name="name[]" value="<?php echo $dspHouse->id;?>">
devrait afficher l'attribut checked="checked" selon le résultat de la requète $stmtLinked
Sauf que je ne vois pas comment intégrer cette requête