Bonjour,
Je souhaite faire une recherche sur des annonces, j'ai donc un formulaire avec quelques critères de recherche :
Ensuite je souhaite afficher les annonces qui correspondent à mes critères 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 <div id="content"> <form method="post" action="recherche.xql"> <p> <label>Marque :</label> <select name="make" id="make"> <option value="">Tous...</option> { let $annonces := collection("annonces/Simple") for $make in distinct-values($annonces/ns:Ad/ns:Make) return <option value="{data($make)}">{data($make)}</option> } </select> </p> <p> <label>Modèle :</label> <input type="text" name="model" id="model" /> </p> <p> <label>Prix :</label> <select name="prixMin" id="prixMin"> <option value="">Tous...</option> <option value="0">0 CHF</option> <option value="1000">1000 CHF</option> <option value="2000">2000 CHF</option> <option value="5000">5000 CHF</option> <option value="10000">10000 CHF</option> <option value="20000">20000 CHF</option> <option value="30000">30000 CHF</option> <option value="40000">40000 CHF</option> <option value="50000">50000 CHF</option> <option value="100000">100000 CHF</option> <option value="200000">200000 CHF</option> <option value="300000">300000 CHF</option> </select> à <select name="prixMax" id="prixMax"> <option value="">Tous...</option> <option value="0">0 CHF</option> <option value="1000">1000 CHF</option> <option value="2000">2000 CHF</option> <option value="5000">5000 CHF</option> <option value="10000">10000 CHF</option> <option value="20000">20000 CHF</option> <option value="30000">30000 CHF</option> <option value="40000">40000 CHF</option> <option value="50000">50000 CHF</option> <option value="100000">100000 CHF</option> <option value="200000">200000 CHF</option> <option value="300000">300000 CHF</option> </select> </p> <p> <label>Carburant :</label> <select name="carburant" id="carburant"> <option value="">Tous...</option> { let $annonces := collection("/db/annonces/Simple") for $carb in distinct-values($annonces/ns:Ad/ns:GeneralData/ns:Motorization) order by $carb return <option value="{data($carb)}">{data($carb)}</option> } </select> </p> <p> <label>Statut :</label> <select name="statut" id="statut"> <option value="">Tous...</option> { let $annonces := collection("/db/annonces/Simple") for $status in distinct-values($annonces/ns:Ad/ns:GeneralData/ns:Status) order by $status return <option value="{data($status)}">{data($status)}</option> } </select> </p> <p> <input type="submit" value="Rechercher" /> </p> </form> </div>
Le problème est le suivant, j'ai une parse error mais impossible de trouver où :
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 xquery version "1.0" encoding "utf-8"; declare default element namespace "http://www.w3.org/1999/xhtml"; declare namespace ns = "http://ns.clic.ch/cours/XML/AdVehicleSimple"; declare option exist:serialize "method=xhtml media-type=text/html omit-xml-declaration=yes encoding=utf-8 indent=yes doctype-public=-//W3C//DTD XHTML 1.0 Strict//EN doctype-system=http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"; declare variable $make := (request:get-parameter('make', '')); declare variable $model := (request:get-parameter('model', '')); declare variable $prixMin := (request:get-parameter('prixMin', '')); declare variable $prixMax := (request:get-parameter('prixMax', '')); declare variable $carburant := (request:get-parameter('carburant', '')); declare variable $statut := (request:get-parameter('statut', '')); <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Index</title> <link rel="stylesheet" type="text/css" href="css/stylesheet.css" media="screen" /> <script type="text/javascript" src="js/fonctions.js"></script> </head> <body> <div id="main"> <div id="header"> <h1>Annonce(s)</h1> </div> <div id="content"> <p>{request:get-parameter('make', '')}</p> <p>{request:get-parameter('model', '')}</p> <p>{request:get-parameter('prixMin', '')}</p> <p>{request:get-parameter('prixMax', '')}</p> <p>{request:get-parameter('carburant', '')}</p> <p>{request:get-parameter('statut', '')}</p> </div> <div class="annonce"> let $annonces := collection("annonces/Simple") let $where := concat("1=1", if($make != "") then concat("and $ad/ns:Make =", $make) else (), if($model != "") then concat("and $ad/ns:Model =", $model) else (), if($prixMin != "") then concat("and $ad/ns:GeneralData/ns:Amount >", $prixMin) else (), if($prixMax != "") then concat("and $ad/ns:GeneralData/ns:Amount <", $prixMax) else (), if($carburant != "") then concat("and $ad/ns:GeneralData/ns:Motorization =", $carburant) else (), if($statut != "") then concat("and $ad/ns:Status =", $statut) else ()) for $ad in $annonces/ns:Ad where ($where) return (<img src="{data($ad/ns:Image)}" alt="{data($ad/ns:Make)}"/>, <p>{data($ad/ns:Make)}</p>, <p>{data($ad/ns:Model)}</p>, <p>{data($ad/ns:GeneralData/ns:Status)}</p>, <p>{data($ad/ns:GeneralData/ns:Cm3)} cm3</p>, <p>{data($ad/ns:GeneralData/ns:Transmission)}</p>, <p>{data($ad/ns:GeneralData/ns:Motorization)}</p>, <p>{data($ad/ns:GeneralData/ns:Km)} KM</p>, <p>{data($ad/ns:GeneralData/ns:Amount)} CHF</p>) </div>
Avez-vous une idée de ce qui peut être faux ?
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 Error found err:XPST0003: Parse error: element name containing whitespace: unexpected token: , $prixMax) else (), if($carburant != ") then concat( at line: 43 column: 107 Java Stack Trace: Class Name Method Name File Name Line org.exist.xquery.parser.XQueryParser elementConstructor XQueryParser.java 8607 org.exist.xquery.parser.XQueryParser elementContent XQueryParser.java 10052 org.exist.xquery.parser.XQueryParser mixedElementContent XQueryParser.java 9665 org.exist.xquery.parser.XQueryParser elementWithAttributes XQueryParser.java 9520 org.exist.xquery.parser.XQueryParser elementConstructor XQueryParser.java 8589 org.exist.xquery.parser.XQueryParser elementContent XQueryParser.java 10052 org.exist.xquery.parser.XQueryParser mixedElementContent XQueryParser.java 9665 org.exist.xquery.parser.XQueryParser elementWithAttributes XQueryParser.java 9520 org.exist.xquery.parser.XQueryParser elementConstructor XQueryParser.java 8589 org.exist.xquery.parser.XQueryParser elementContent XQueryParser.java 10052 org.exist.xquery.parser.XQueryParser mixedElementContent XQueryParser.java 9665 org.exist.xquery.parser.XQueryParser elementWithoutAttributes XQueryParser.java 9612 org.exist.xquery.parser.XQueryParser elementConstructor XQueryParser.java 8594 org.exist.xquery.parser.XQueryParser elementContent XQueryParser.java 10052 org.exist.xquery.parser.XQueryParser mixedElementContent XQueryParser.java 9665 org.exist.xquery.parser.XQueryParser elementWithoutAttributes XQueryParser.java 9612 org.exist.xquery.parser.XQueryParser elementConstructor XQueryParser.java 8594 org.exist.xquery.parser.XQueryParser directConstructor XQueryParser.java 7302 org.exist.xquery.parser.XQueryParser primaryExpr XQueryParser.java 7001 org.exist.xquery.parser.XQueryParser filterStep XQueryParser.java 6147
Merci beaucoup pour votre aide
Partager