comment modifier une requête sql quand un checkbox est checked ?
Bonjour:
pouvez vous m'aider a trouver la solution a la situation suivante:
j'ai des checkboxes , une fois un de ces checkboxes est ( chicked ), je devais faire un ajax call pour ramener les données de la BD correspondantes aux éléments Clickés (checkbox est checked)par l'utilisateur donc je crois qu'il faut trouver une solution dont laquelle chaque fois l'utilisateur click sur checkbox on va concaténer la précédente requête sql avec la nouvelle condition de checkbox.
donc je n'ai trouvé que $_SESSION pour faire cette tache , mais je crois avoir lu qlq part que c'est a éviter cette technique qui consiste a enregistrer les noms de champs BD dans les variables $_SESSION pour les faire passer dans une requête.
qu'est ce que vous pensez messieurs??
merci
voila mon code
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
|
<script>
function getData(str, r) {
if (str.length == 0) {
document.getElementById("showdata").innerHTML = "";
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("showdata").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "getAll.php?q=" + str + "&r=" + r, true);
xmlhttp.send();
}
}
</script>
<p><b>Contries</b></p>
<div class="checkbox">
<label><input type="checkbox" name="contries" value="1" onchange="getData( this.name, this.value)">spain <span class="badge">(30 136)</span></label>
<label><input type="checkbox" name="contries" value="2" onchange="getData( this.name, this.value)">italy <span class="badge">(15 244)</span></label>
<label><input type="checkbox" name="contries" value="3" onchange="getData( this.name, this.value)">norway <span class="badge">(13 885)</span></label>
</div>
<p><b>Diplomes</b></p>
<div class="checkbox">
<label><input type="checkbox" name="diplomes" value="1" onchange="getData(this.name, this.value)">a <span class="badge">(11 752)</span></label>
<label><input type="checkbox" name="diplomes" value="2" onchange="getData( this.name, this.value)">b <span class="badge">(11 752)</span></label>
<label><input type="checkbox" name="diplomes" value="3" onchange="getData( this.name, this.value)">c<span class="badge">(21 181)</span></label>
<label><input type="checkbox" name="diplomes" value="4" onchange="getData( this.name, this.value)">d <span class="badge">(32 870)</span></label>
<label><input type="checkbox" name="diplomes" value="5" onchange="getData( this.name, this.value)"> d <span class="badge">(794)</span></label>
</div>
<p><b>Ages</b></p>
<div class="checkbox">
<label><input type="checkbox" name="ages" value="1" onchange="getData( this.name, this.value)">20 - 30 years <span class="badge">(11 752)</span></label>
<label><input type="checkbox" name="ages" value="2" onchange="getData( this.name, this.value)">30 - 40 years <span class="badge">(11 752)</span></label>
<label><input type="checkbox" name="ages" value="3" onchange="getData( this.name, this.value)">40 - 50 years <span class="badge">(21 181)</span></label>
<label><input type="checkbox" name="ages" value="4" onchange="getData( this.name, this.value)">50 - 60 years <span class="badge">(32 870)</span></label>
<label><input type="checkbox" name="ages" value="5" onchange="getData( this.name, this.value)"> > 60 years <span class="badge">(794)</span></label>
<div name='showdata'>
</div>
</div> |
getAll.php
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
|
<?php
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
$field = $_REQUEST["q"];
$value = $_REQUEST["q"];
if ($field !== "" && $value !== "") {
if(!isset($_SESSION['sql']) && empty($_SESSION['sql'])) {
$_SESSION['sql'] = "SELECT * FROM mytable WHERE id > 0 ";
}else{
$_SESSION['sql'] .="AND $field = $value";
}
//$Db = PDO object et select() est ma function pour les selects
$hint = $this->Db->select($_SESSION['sql']);
}
?> |