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