Bonjour,

J'ai un formulaire de recherche :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<form id="monform2"  method="get" action="liste.php"> 
 
      <input type="text" class="inputRecherche" name="clesearch"  value="<?php if(isset($_GET['clesearch'])) echo $_GET['clesearch']; ?>" />
 
	<input type="radio" class="bl_radio" name="search" value="scontrib"  checked="checked"  /> <label for="contributeur" class="bl_radio_label">contributeur</label>
	<input type="radio" class="br_radio" name="search" value="stitre" <?php if (isset($_GET['search']) && $_GET['search'] == "stitre" ) {echo 'checked="checked"';} ?>  /> <label for="titre" class="br_radio_label">titre</label>
 
<input type="image" src="styles/img/btn2_ok.png" class="bt_ok" id="" name="">
 
 </form>
et le code suivant :

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
if ( $clesearch != null &&  $search == "scontrib") { // POUR GERER RECHERCHE PAR CONTRIBUTEUR
 
$select_livre  = " SELECT L.TITRE AS titre, L.ID_LIVRE AS id_livre,
YEAR(L.DATE_ACHAT)AS date_achat,YEAR(L.DATE_PUBLICATION)AS date_publication,YEAR(L.DATE_LECTURE)AS date_lecture, L.miniatures AS miniatures,
ED.NOM_EDITEUR AS editeur,ED.ID_EDITEUR AS id_editeur,LIB.NOM_LIBRAIRIE AS librairie,LIB.ID_LIBRAIRIE AS id_librairie,FORM.NOM_FORMAT AS format,FORM.ID_FORMAT AS id_format,
L.RESUME AS resume, L.STATUT_LECTURE AS statut_lecture, L.APPRECIATION AS appreciation,L.NB_PAGES AS nb_pages,
CB.NOM_CONTRIBUTEUR, CB.PRENOM_CONTRIBUTEUR, F.NOM_FONCTION, CB.ID_CONTRIBUTEUR, F.ID_FONCTION
 
FROM LIVRE L
 
INNER JOIN PARTICIPE P ON P.ID_LIVRE = L.ID_LIVRE
INNER JOIN CONTRIBUTEURS CB ON CB.ID_CONTRIBUTEUR = P.ID_CONTRIBUTEUR      
INNER JOIN FONCTION F ON F.ID_FONCTION = P.ID_FONCTION
 
INNER JOIN EDITEUR ED		
ON ED.ID_EDITEUR = L.ID_EDITEUR	
 
INNER JOIN LIBRAIRIE LIB		
ON LIB.ID_LIBRAIRIE = L.ID_LIBRAIRIE
 
INNER JOIN FORMAT FORM		
ON FORM.ID_FORMAT = L.ID_FORMAT
 
WHERE NOM_CONTRIBUTEUR LIKE '%".$_GET['clesearch']."%' 
ORDER BY date_achat DESC
 
";
}
 
if ( $clesearch != null  &&  $search == "stitre") { // POUR GERER RECHERCHE PAR TITRE
 
$select_livre  = " SELECT L.TITRE AS titre, L.ID_LIVRE AS id_livre,
YEAR(L.DATE_ACHAT)AS date_achat,YEAR(L.DATE_PUBLICATION)AS date_publication,YEAR(L.DATE_LECTURE)AS date_lecture, L.miniatures AS miniatures,
ED.NOM_EDITEUR AS editeur,ED.ID_EDITEUR AS id_editeur,LIB.NOM_LIBRAIRIE AS librairie,LIB.ID_LIBRAIRIE AS id_librairie,FORM.NOM_FORMAT AS format,FORM.ID_FORMAT AS id_format,
L.RESUME AS resume, L.STATUT_LECTURE AS statut_lecture, L.APPRECIATION AS appreciation,L.NB_PAGES AS nb_pages
 
 
FROM LIVRE L
 
 
INNER JOIN EDITEUR ED		
ON ED.ID_EDITEUR = L.ID_EDITEUR	
 
INNER JOIN LIBRAIRIE LIB		
ON LIB.ID_LIBRAIRIE = L.ID_LIBRAIRIE
 
INNER JOIN FORMAT FORM		
ON FORM.ID_FORMAT = L.ID_FORMAT
 
WHERE TITRE LIKE '%".$_GET['clesearch']."%' 
ORDER BY date_achat DESC
 
";
}
Mon formulaire de recherche est opérationnel tant que le ou les mots recherchés ne contiennent pas d'apostrophe. En revanche, si par exemple je recherche un mot tel que l'île, j'ai une erreur de syntaxe sql. Je comprends que l'erreur se situe au niveau du WHERE de la requête en raison des apostrophes...Comment faire pour échapper les apostrophes des mots recherchés ? Je précise que je travaille sous MySql. Merci d'avance de votre aide.