Bonjour
J'aimerai faire évoluer ma requête multicritère (fournit par Celira - merci).
Je peux via ma requête comparer des données de ma BDD à la recherche multicritères de l'utilisateur.
ex : cherche M. Dupont (fixe) - Masculin (fixe) - Année de naissance (fixe) => résultat de la requête
Cependant, aujourd'hui je suis confronté au problème suivant;
J'ai un formulaire de suivi anthropométrique dans lequel je peux rentrer à différentes dates, l'évolution de la taille d'un contact.
Contact 1 : (8 dates max)
A une date1 => taille1
A une date2 => taille2
A une date 3 => taille3
A une date4 => taille4
A une date5 => taille5
A une date6 => taille6
A une date7 => taille7
A une date8 => taille8
Comment comparer le critère de recherche Taille de l'utilisateur avec le "dernier champ Taille" renseigné dans la BDD (évolutif)
ex :
if (!empty(taille8)) => comparer avec la taille saisie par l'utilisateur
else (!empty(taille7)) => comparer avec la taille saisie par l'utilisateur
else (!empty(taille6)).....
form.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <form action="post_form.php" method="post"> <p> NOM : <input type="text" name="nom" id="nom"></p> <label for="sexe">SEXE</label> <select id="sexe" name="sexe"> <option></option> <option>MASCULIN</option> <option>FEMININ</option> </select></p> <table class="table_anthropo"> <tr> <td class="titre_anthropo">Date</td> <td class="titre_anthropo">Taille</td> </tr> <tr> <td><input type="date" id="date1" name="date1"></td> <td><input type="number" id="taille1" name="taille1"></td> </tr> <tr> <td><input type="date" id="date2" name="date2"></td> <td><input type="number" id="taille2" name="taille2"></td> </tr> <tr> <td><input type="date" id="date3" name="date3"></td> <td><input type="number" id="taille3" name="taille3"></td> </tr> </table> <p><input type="submit" name="envoyer" value="envoyer"></p> </form>
form_SearchMulti.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <form action="Search.php" method="post"> <h1> RECHERCHE MULTICRITERES </h1> <p> <label for="nom"> NOM : </label> <input type="text" name="nom" id="nom" placeholder="MAJUSCULE"/></p> <p> <p><label for="H"> HOMME : </label> <input type="radio" name="sexe" value="H" id="H"/> <label for="F"> FEMME : </label> <input type="radio" name="sexe" value="F" id="F"/></p> </p> <p> <label for="taille"> TAILLE SUPERIEURE A : </label><input type="text" name="taille" id="taille"/></p> // A COMPARER AVEC LA DERNIERE DATE SAISIE DANS LA BDD <p><input type="submit" name="envoyer" value="RECHERCHER"/> <p><input type="reset" name="effacer" value="RESET"/></p> </form>
ContactManager.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php class ContactManager { //....... public function search(contact $contact) { $sql_select = "SELECT * FROM joueur"; $criteres = []; $params = []; if (!empty($_POST['nom'])) { // on crée un critère sur la colonne nom $criteres[] = " nom= :nom"; $params[':nom'] = $_POST['nom']; } if (!empty($_POST['sexe'])) { // on crée un critère sur la colonne sexe $criteres[] = " sexe= :sexe"; $params[':sexe'] = $_POST['sexe']; } if (!empty($_POST['taille'])) { $criteres[] = " ...?.... >= :taille"; COMMENT FAIRE POUR OBTENIR LA DERNIERE TAILLE SAISIE DANS LA BDD $params[':taille'] = $_POST['taille']; } // on concatène $sql_where = ''; if (!empty($criteres)) { $sql_where .= ' WHERE '.implode(' AND ', $criteres); } $this->pdoStatement = $this->pdo->prepare($sql_select.$sql_where); $executeIsOK = $this->pdoStatement->execute($params); $contacts = []; while ($contact = $this->pdoStatement->fetchObject('Contact')) { $contacts [] = $contact; // tableau des contacts renseignés par la variable $contact (les contacts trouvés) } return $contacts; } }
Search.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php var_dump($_POST); //require_once '../CLASS/Contact.php'; //require_once '../CLASS/ContactManager.php'; //$contact = new Contact(); //contactManager = new ContactManager(); //$contacts = $contactManager->search($contact); ?> <!DOCTYPE html> <html lang='fr'> <head> <meta charset="utf-8"> <title> LISTE DE TOUS LES CONTACTS </title> </head> <body> <h1> RESULTAT DE LA RECHERCHE MULTICRITERES </h1> <?php if (empty($contacts)): ?> <p> Il n'y a aucun contact à afficher </p> <?php else: ?> <?php if($contacts === false): ?> <p> Une erreur est survenue </p> <?php else: ?> <table > <thead> <tr> <th>NOM</th> <th>SEXE</th> <th>TAILLE</th> </tr> </thead> <tbody> <?php $i=0; foreach ($contacts as $contact) { echo '<tr class="ligne'.($i % 2).'">'; echo( "<td>".$contact->getNom()."</td>" ); //echo( "<td>".$contact->getTaille()."</td>" ); echo( "</tr>" ); $i++; } ?> </tbody> </table> <?php endif; ?> <?php endif; ?> </body> </html>
Merci pour votre aide
Partager