Bonjour à tous,
je débute en php et malgré avoir cherché pas mal et lu plusieurs tutos, je n'arrive toujours pas à résoudre mon problème, que voici :
Je cherche à référencer des dispositifs médicaux, en l'occurrence des implants dentaires qui ont tous peu ou prou les mêmes caractéristiques, a savoir, j'ai choisi huit critères différents. Par exemple pour le premier critère "Forme générale" on peut avoir trois valeurs différentes : cylindrique, conique et mixte. Pour chaque critères j'ai entre deux et quatre valeurs possibles. J'ai donc créer ma base avec une table de treize champs : un champ index, huit champs pour les caractéristiques à décrire et quatre champs qui contiennent la marque, le modèle, l'url d'une image et l'url d'une page d'info.
Je voudrais pour voir faire une recherche dans la base sur un, plusieurs ou tous les critères défini.
Pour l'instant j'ai réussi a faire (en suivant et adaptant un tuto trouvé sur le net) un moteur de recherche qui fonctionne mais uniquement lorsque l'on a choisi une valeur pour chaque critères. Par exemple, je n'arrive pas à avoir un résultat pour une recherche où le premier critère (la forme) n'est pas défini mais tous les autres le sont, c'est à dire faire une recherche dans la base pour tous les implants qui sont de forme cylindrique, conique ou mixte mais dont tous les autres critères sont uniques. Et ceci pour chaque critères. Je ne sais pas si je suis très clair…
Bref, voici le code source de mon formulaire et la page de résultats.
Le formulaire :
Et le moteur de recherche :
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
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 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Module de recherche</title> </head> <body> <form method="POST" action="resultat.php"> <center> <table border="1" id="table1"> <tr> <td align="center" bgcolor="#808080"><font color="#FFFF00"><b>Forme Générale</b></font></td> <td> <select name="forme"> <option value="*">--Non défini--</option> <option value="Cylindrique">Cylindrique</option> <option value="Conique">Conique</option> <option value="Mixte">Mixte</option> </select> </td> </tr> <tr> <td align="center" bgcolor="#808080"><font color="#FFFF00"><b>Connexion prothétique</b></font></td> <td> <select name="connexion"> <option value="*">--Non défini--</option> <option value="Interne">Interne</option> <option value="Externe">Externe</option> </select> </td> </tr> <tr> <td align="center" bgcolor="#808080"><font color="#FFFF00"><b>Forme du col</b></font></td> <td> <select name="forme_col"> <option value="*">--Non défini--</option> <option value="Droit">Droit</option> <option value="Large">Large</option> <option value="Evasé">Evasé</option> </select> </td> </tr> <tr> <td align="center" bgcolor="#808080"><font color="#FFFF00"><b>Aspect du col</b></font></td> <td> <select name="aspect_col"> <option value="*">--Non défini--</option> <option value="Lisse">Lisse</option> <option value="Spires">Spires</option> <option value="Microspires">Microspires</option> </select> </td> </tr> <tr> <td align="center" bgcolor="#808080"><font color="#FFFF00"><b>Forme du filetage</b></font></td> <td> <select name="filetage"> <option value="*">--Non défini--</option> <option value="En V">En V</option> <option value="Carré">Carré</option> <option value="Asymétrique">Asymétrique</option> <option value="Double">Double</option> </select> </td> </tr> <tr> <td align="center" bgcolor="#808080"><font color="#FFFF00"><b>Forme de l'apex</b></font></td> <td> <select name="forme_apex"> <option value="*">--Non défini--</option> <option value="Plat">Plat</option> <option value="Arrondi">Arrondi</option> </select> </td> </tr> <tr> <td align="center" bgcolor="#808080"><font color="#FFFF00"><b>Caractéristique apicale</b></font></td> <td> <select name="caract_apex"> <option value="*">--Non défini--</option> <option value="Aucune">Aucune</option> <option value="Présence d'un évent">Présence d'un évent</option> <option value="Présence d'une chambre et d'un évent">Présence d'une chambre et d'un évent</option> <option value="Autre">Autre</option> </select> </td> </tr> <tr> <td align="center" bgcolor="#808080"><font color="#FFFF00"><b>Platform Switching</b></font></td> <td> <select name="platform"> <option value="*">--Non défini--</option> <option value="Oui">Oui</option> <option value="Non">Non</option> </select> </td> </tr> <tr> <td align="center" bgcolor="#808080"><input type="submit" value="Recherche"><input type="reset" value="Réinitialiser la recherche"></td> </tr> </table> </form> </body> </html>
Pour chaque critères j'ai rajouté une option "non défini" avec la valeur "*" en pensant que la recherche se ferait comme ça sur toutes les valeurs mais ça ne marche pas, j'ai aussi essayé, en vain, avec "%". Malheureusement mes connaisssances en php et mysql sont très limités et je ne sais pas comment m'en sortir, c'est pourquoi je solicite votre aide. En vous remerciant par avance.
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 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Module de recherche</title> </head> <body> <?php try { $bdd = new PDO('mysql:host=localhost;dbname=rxid', 'root', ''); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } $req = $bdd->prepare(' SELECT marque,modele,rx,info FROM implants WHERE forme = :forme AND connexion = :connexion AND forme_col = :forme_col AND aspect_col = :aspect_col AND filetage = :filetage AND forme_apex = :forme_apex AND caract_apex = :caract_apex AND platform = :platform') or die(print_r($bdd->errorInfo())); $req->execute(array('forme' => $_POST['forme'], 'connexion' => $_POST['connexion'], 'forme_col' => $_POST['forme_col'], 'aspect_col' => $_POST['aspect_col'], 'filetage' => $_POST['filetage'], 'forme_apex' => $_POST['forme_apex'], 'caract_apex' => $_POST['caract_apex'], 'platform' => $_POST['platform'])); echo '<center><table bgcolor="#669999">'."\n"; echo '<caption>Il peut s\'agir de cet (ou ces) implant(s)</caption>'; echo '<tr>'; echo '<th bgcolor="#669999"><b><u>Marque</u></b></td>'; echo '<th bgcolor="#669999"><b><u>Modèle</u></b></td>'; echo '<th bgcolor="#669999"><b><u>Radio</u></b></td>' ; echo '<th bgcolor="#669999"><b><u>Informations</u></b></td>' ; echo '</tr>'."\n"; echo '<tr>'; while ($donnees = $req->fetch()) { echo '<td bgcolor="#CCCCCC">'. $donnees["marque"] .'</td>'; echo '<td bgcolor="#CCCCCC">'. $donnees["modele"] .'</td>'; echo '<td bgcolor="#CCCCCC"><img src='. $donnees["rx"] .' /></td>'; echo '<td bgcolor="#CCCCCC"><a href='. $donnees["info"] .'>Informations</a></td>'; echo '</tr>'."\n"; } echo '</table></center>'."\n"; $req->closeCursor(); ?> </body> </html>
Partager