Filter une requete avec AJAX

Mammouth du PHP | 643 Messages

29 août 2019, 14:49

Salut tout le monde,
J'ai terminé mon projet mais je but sur une technologie que je suis loin de maitrisé malheureusement pour moi.
Le but est de permettre à des associations de filtrer les résultat de la requête avec des checkboxes ( wifi, parking, handicap, ...)

Coté Base de donnée j'ai une colonne pour chaque type: wifi, parking, handicap .... qui vaut 1 ou 0 du coup.
Ma requête est :
// Traitement de la pagination
	$page = (!empty($_GET['page']) ? (int)$_GET['page'] : 1);
	$limite = 4; // Nombre d'élément à afficha dans la page
	$debut = ($page - 1) * $limite;
	
	// Requetes bars selon option
	$sql = 'SELECT SQL_CALC_FOUND_ROWS * FROM associations WHERE ville = :ville';   
        if (isset($_POST['terasse'])) {
            $sql .= ' AND terasse = 1';
        } else if (isset($_POST['parking'])) {
            $sql .= ' AND parking = 1';
        } else if (isset($_POST['wifi'])) {
            $sql .= ' AND wifi = 1';
        } else if (isset($_POST['restauration'])) {
            $sql .= ' AND restauration = 1';
        }
    
    $sql .= ' LIMIT :limite OFFSET :debut'; // limite à 5
    $sql = $bdd->prepare($sql);
    $sql->bindParam(':ville', $ville, PDO::PARAM_STR);
    $sql->bindValue('debut', $debut, PDO::PARAM_INT);
    $sql->bindValue('limite', $limite, PDO::PARAM_INT);
    $sql->execute();
	// Calcul de la pagination
	$resultFoundRows = $bdd->query('SELECT found_rows()');
	$nombredElementsTotal = $resultFoundRows->fetchColumn();
	$nombreDePages = ceil($nombredElementsTotal / $limite);
	//var_dump($sql);
Coté checkboxes actuellement:
<form id="form" method="post" action="">
									<li><label class="container_check">Terrasse 
										<input type="checkbox" name="terrasse" class="checkbox" <?=(isset($_POST['terrasse'])?' checked':'')?>/><span class="checkmark"></span>
									</label></li>

									<li><label class="container_check">Wifi 
										<input type="checkbox" name="wifi" class="checkbox" <?=(isset($_POST['wifi'])?' checked':'')?>/><span class="checkmark"></span>
									</label></li>

									<li><label class="container_check">Parking 
										<input type="checkbox" name="parking" class="checkbox" <?=(isset($_POST['parking'])?' checked':'')?>/><span class="checkmark"></span>
									</label></li>

									<li><label class="container_check">Restauration
										<input type="checkbox" name="restauration" class="checkbox" <?=(isset($_POST['restauration'])?' checked':'')?>/><span class="checkmark"></span>
									</label></li>
								</form>
Du coup j'ai conscience que c'est en ajax que je dois faire ça mais je n'y comprends pas grand chose pour le coup, merci pour votre aide

Mammouth du PHP | 2703 Messages

29 août 2019, 15:11

utiliser de l'ajax utilise trop de ressources inutilement et ce sera plus lent.
avec https://datatables.net/examples/api/mul ... elect.html
tu affiches toutes les données et permets de filtrer les champs de ton choix. dans l'exemple, c'est une liste déroulante mais il est possible de mettre une checkbox à la place.

Mammouth du PHP | 643 Messages

29 août 2019, 15:15

Oui ça me va aussi,
Faut encore adapter le truc maintenant à mes checkboxes.

C'est parfait, je cherche exactement ça avec la pagination, c'est tout à fait ce que je souhaite.
Je suis loin d'être expert mais moi ce n'est pas des table que je souhaite affiché c'est mon code html et php ca pose problème ?

Mammouth du PHP | 643 Messages

29 août 2019, 19:12

Bon en fait nan, pour le coup je dois passé en AJAX, si je pouvais avoir un petit coup de pouce :)

Mammouth du PHP | 2703 Messages

29 août 2019, 19:40

ton code php fait la recherche par ville, affiche un tableau en html. le javascript que tu ajoutes permet de filtrer le contenu de ce tableau, pas besoin d'ajax, de faire un appel au serveur pour retourner des données que le navigateur a déjà.

Mammouth du PHP | 643 Messages

29 août 2019, 22:43

La je n'ai pas du js.
Je cherche à ce que ca filtre au clik sans submit ... pour ca que je parle d'ajax...

Mammouth du PHP | 2703 Messages

29 août 2019, 23:02

dans l'exemple, cela filtre bien sans submit.
une façon simple car proche de l'exemple, c'est d'avoir une liste déroulante oui / non, donc oui non dans les cases du tableau. plus compliqué, c'est de n'avoir des cases à cocher que pour les bonnes colonnes.

Mammouth du PHP | 643 Messages

30 août 2019, 03:36

Non mon code ne marche pas, c'est pour illustré ce que je souhaite faire,
après je veut passer par ajax car j'ai ensuite un champ qui permet de filtrer avec un rayon de km autour de la ville saisie

Mammouth du PHP | 643 Messages

30 août 2019, 08:50

L'object est d'avoir une zone de recherche selon la zone kilometrique et les chekboxes et letout sans submit
https://www.malt.fr/s?q=consultant+seo ... press&p=1