Tu as lu mon message de 11h48 ?
Oui, pardon, à vouloir aller trop vite, je t'ai envoyé l'avant-dernière version (je garde des copies de mes erreurs et je l'avais pas enregistré là où je l'avais):
Entre autre il y a à la fin ce que tu m'avais dis dans le message à savoir:
Le reste était fais il me semble...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 rs_choix.Open SQL,bd,3,3 'Demande si l'utilisateur veut que sa salle soit affichée sur l'écran de l'accueil if Len(request("CK_Affichage")) > 0 then 'Si oui sql = sql & "and H_Affichage = '" & request.form("CK_Affichage") & " ' " 'alors on rajoute l'affichage Ã* Where end if rs_choix.Close SQL,bd,3,3 set rs_choix = nothing
J'ai beau eu mettre
avant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 'Demande si l'utilisateur veut que sa salle soit affichée sur l'écran de l'accueil if Len(request("CK_Affichage")) > 0 then 'Si oui sql = sql & "and H_Affichage = '" & request.form("CK_Affichage") & " ' " 'alors on rajoute l'affichage Ã* Where end if rs_choix.Close SQL,bd,3,3 set rs_choix = nothing
ça marche toujours pas... et même si je l'enleve ça change rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part sql = "order by ASC, R_Visio = 1" 'ordonne par ordre alphabetique et par salle visio
Montre le code de la page en entier, stp.
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174 <%@ Language=VBScript %> <%if (session("ID_User") = "") then response.redirect "../index.asp" End if%> <html> <head> <!-- #include file="../../parametresAutan.asp"--> <title> Projet </title> <link rel="stylesheet" type="text/css" href="../../style.css" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script language="Javascript" src="../../javascript/javascript.js"></script> <script language="Javascript"> function Dispo(type) { var salDi = ""; for (i=0; i < document.F_Reserv.elements.length; i++) { if (document.F_Reserv.elements[i].name.indexOf("R_Salle") >= 0 ) { if (document.F_Reserv.elements[i].checked) { sup_elt = salDi + document.F_Reserv.elements[i].value; } } } if (salDi.length <= 0) { alert("Vous devez sélectionner une salle pour réserver !"); } else { document.F_Reserv.submit(); } } var arrayLignes = document.getElementById("Reservations").rows; //l'array est stocké dans une variable var longueur = arrayLignes.length; //on peut donc appliquer la propriété length var i=1; //on définit un incrémenteur qui représentera la clé while(i<longueur) { if(i === 2) // si la ligne est égal à* 2 { arrayLignes[i].style.backgroundColor = "#008080"; // alors la ligne 2 prend la couleur verte } else if(i % 2 == 0) // si la clé est paire { arrayLignes[i].style.backgroundColor = "#bdcbf5"; // alors la ligne prendra la couleur violet claire } else // elle est impaire { arrayLignes[i].style.backgroundColor = "#829eeb"; // alors la ligne prendra la couleur violet foncé } i++; } </script> </head> <body> <div id="conteneur"> <!-- #include file="../../javascript/calendrier1mois.asp"--> <!-- #include file="../../MiseEnForme/header.asp"--> <!-- #include file="../../MiseEnForme/menuHorizontal.asp"--> <div id="conteneur2"> <!-- #include file="../../MiseEnForme/menuVerticalPrive.asp"--> <div id="centre"> <form name="F_Reserv" method="post" action="recapReservationSalle.asp"> <input type="hidden" name="H_Lieu" value="<%=request.form("S_Lieu")%>" /> <input type="hidden" name="H_Cap" value="<%=request.form("S_Cap")%>" /> <input type="hidden" name="H_Visio" value= "<%=request.form("S_Visio")%>"/> <input type="hidden" name="H_Comment" value="<%=request.form("T_Comment")%>" /> <input type="hidden" name="H_Affichage" value="<%=request.form("CK_Affichage")%>"/> <input type="hidden" name="H_Salle" /> <center> <!-- response.write rs_choixSalle("Salle") & rs_choixSalle("Lieu") & rs_choixSalle("S_Cap") & rs_choixSalle("S_Visio") %> --> <br/><br/> <table class="miniCorps" width="800"> <tr> <td colspan="6" class="entete"> Liste des salles disponibles </td> </tr> <tr align="center"> <td width="175"> <b>Salle</b> </td> <td width="175"> <b>Etage</b> </td> <td width="175"> <b>Localisation</b> </td> <td width="175"> <b>Capacité</b> </td> <td width="175"> <b>Info</b> </td> <td width="100"> <b>Réserver</b> </td> </tr> <tr><td> </td><tr> <tr> <td colspan="6" align="center"> <input type="button" name="B_Dispo" value="Voir les disponibilités" onclick="Dispo('');" /> <br/> </td> </tr> </table> </center> </form> </div> </div> </div> </body> </html> <% ' On récupère les infos du formulaire de saisie 'sql = "" 'Pour les espaces... mais vu que c'est dans une liste déroulante pas besoin Set rs_choix = Server.CreateObject("ADODB.Recordset") sql = "Select * from Salle S " 'Sélectionner tous les éléments de la salle dans la table salle sql = sql & "where 1 = 1 " 'pour que la condition soit toujours vraie if Len(Trim(request.form("S_Lieu"))) > 0 then 'Si l'utilisateur choisi un lieu sql = sql & "and H_Lieu = '" & request.form("S_Lieu") & "' " 'alors on rajoute le lieu à Where end if if Len(Trim(request.form("S_Cap"))) > 0 then 'Si l'utilisateur choisi une capacité sql = sql & "and H_Cap = '" & request.form("S_Cap") & "' " 'alors on rajoute la capacité à Where end if if Len(Trim(request.form("S_Visio"))) > 0 then 'Si l'utilisateur veut la visio sql = sql & "and H_Visio = '" & request.form("S_Visio") & "' " 'alors on rajoute la visio à Where end if 'Demande si l'utilisateur veut que sa salle soit affichée sur l'écran de l'accueil 'if Len(request("CK_Affichage")) > 0 then 'Si oui ' sql = sql & "and H_Affichage = '" & request.form("CK_Affichage") & " ' " 'alors on rajoute l'affichage Ã* Where 'end if sql = "order by ASC, R_Visio = 1" 'ordonne par ordre alphabetique et par salle visio if not rs_choix.eof then 'Si le choix correspond à* une requete do while not rs_choix.eof response.write "<tr><td>" & rs_choix("S.Nom") & "</td><td> " & rs_choix("S.Etage") & "</td><td> " & rs_choix("S.Lieu") & "</td><td> " & rs_choix("S.Capacite") & "</td><td> " & rs_choix("S.Visio") & "</td><td align=""center""> <input type=""radio"" name=""R_Salle"" value="" " & rs_choix("ID_Salle") & " "" /></td></tr>" rs_choix.MoveNext loop else 'Sinon afficher un message d'erreur. response.write "<tr><td colspan=""3"" align=""center""><br/><b><font color=""red"">Aucune salle ne correspond à* vos critères, veuillez réitérer votre recherche.</font></b><br/> </td></tr>" end if rs_choix.Open SQL,bd,3,3 rs_choix.Close SQL,bd,3,3 set rs_choix = nothing %>
Il faut que la ligne :
soit placée avant de tester le eof. C'est cette commande qui exécute la requête et rempli le recordset.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 rs_choix.Open SQL,bd,3,3
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 <% ' On récupère les infos du formulaire de saisie 'sql = "" 'Pour les espaces... mais vu que c'est dans une liste déroulante pas besoin Set rs_choix = Server.CreateObject("ADODB.Recordset") sql = "Select * from Salle S " 'Sélectionner tous les éléments de la salle dans la table salle sql = sql & "where 1 = 1 " 'pour que la condition soit toujours vraie if Len(Trim(request.form("S_Lieu"))) > 0 then 'Si l'utilisateur choisi un lieu sql = sql & "and H_Lieu = '" & request.form("S_Lieu") & "' " 'alors on rajoute le lieu à Where end if if Len(Trim(request.form("S_Cap"))) > 0 then 'Si l'utilisateur choisi une capacité sql = sql & "and H_Cap = '" & request.form("S_Cap") & "' " 'alors on rajoute la capacité à Where end if if Len(Trim(request.form("S_Visio"))) > 0 then 'Si l'utilisateur veut la visio sql = sql & "and H_Visio = '" & request.form("S_Visio") & "' " 'alors on rajoute la visio à Where end if 'Demande si l'utilisateur veut que sa salle soit affichée sur l'écran de l'accueil 'if Len(request("CK_Affichage")) > 0 then 'Si oui ' sql = sql & "and H_Affichage = '" & request.form("CK_Affichage") & " ' " 'alors on rajoute l'affichage Ã* Where 'end if sql = "order by ASC, R_Visio = 1" 'ordonne par ordre alphabetique et par salle visio rs_choix.Open SQL,bd,3,3 if not rs_choix.eof then 'Si le choix correspond à* une requete do while not rs_choix.eof response.write "<tr><td>" & rs_choix("S.Nom") & "</td><td> " & rs_choix("S.Etage") & "</td><td> " & rs_choix("S.Lieu") & "</td><td> " & rs_choix("S.Capacite") & "</td><td> " & rs_choix("S.Visio") & "</td><td align=""center""> <input type=""radio"" name=""R_Salle"" value="" " & rs_choix("ID_Salle") & " "" /></td></tr>" rs_choix.MoveNext loop else 'Sinon afficher un message d'erreur. response.write "<tr><td colspan=""3"" align=""center""><br/><b><font color=""red"">Aucune salle ne correspond à* vos critères, veuillez réitérer votre recherche.</font></b><br/> </td></tr>" end if rs_choix.Close SQL,bd,3,3 set rs_choix = nothing %>
Okay je pensais que tu parlais du if affichage autant pour moi.
Mais il n'y a pas d'améliorations:
Le message d'erreur:
Microsoft OLE DB Provider for ODBC Drivers erreur '80040e14'
[Microsoft][Pilote ODBC Microsoft Access] Instruction SQL non valide; 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' ou 'UPDATE' attendus.
/Reservation/choixV.asp, ligne 132
Ligne 132 qui renvoie toujours à la fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function ds_gettop(el) { var tmp = el.offsetTop; el = el.offsetParent while(el) { tmp += el.offsetTop; el = el.offsetParent; } return tmp; }
Ce message d'erreur indique clairement une erreur de syntaxe dans la requête SQL.
Avant la ligne:
Peux-tu ajouter cette ligne et poster le résultat ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 rs_choix.Open SQL,bd,3,3
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 response.write sql
Le résultat:
order by ASC, R_Visio = 1
Microsoft OLE DB Provider for ODBC Drivers erreur '80040e14'
[Microsoft][Pilote ODBC Microsoft Access] Instruction SQL non valide; 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' ou 'UPDATE' attendus.
/Reservation/choix.asp, ligne 155
et si je mets en commentaire le order by ça me donne une nouvelle erreur:
Select * from Salle S where 1 = 1 and H_Lieu = '1' and H_Cap = '1' and H_Visio = 'SO'
Microsoft OLE DB Provider for ODBC Drivers erreur '80040e10'
[Microsoft][Pilote ODBC Microsoft Access] Trop peu de paramètres. 3 attendu.
/Reservation/choix.asp, ligne 155
Déjà, il faut que tu mettes :
Ensuite, essaye de tester cette requête directement dans Access.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 sql = sql & "order by ASC, R_Visio"
Oui, j'ai changé après avoir posté ^^ Je commence à comprendre maintenant !
D'accord, je testerai ça ce week-end ! Je te remercie pour tes réponses (et ta grande patience) et je te donne des nouvelles dès que c'est fait
Bon week-end !
Bonjour !
Alors j'ai testé sur le Access avec cette requête SQL:
Et il me donne bien le résultat. Du coup j'ai changé deux/trois choses de mon code (exemple au lieu de mettre Order By S_Visio = 1, ASC j'ai plutôt mis Order by S_Visio = true, S_Lieu. J'ai également changé la base de données des Capacité vu que c'était en texte et non en numérique (du coup au lieu d'afficher "12 personnes" il n'y aura que 12 parce que j'ai pas trouver pour convertir un texte). Mais il n'en reste pas moins que ça ne marche toujours pas, et ça me met la même erreur qu'avant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT * FROM Salle WHERE (Salle.Lieu <> null ) AND (Salle.Capacite > 0) ORDER BY Salle.Visio = true, Salle.lieu;
Voici le code:
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 <% ' On récupère les infos du formulaire de saisie 'sql = "" 'Pour les espaces... mais vu que c'est dans une liste déroulante pas besoin Set rs_choix = Server.CreateObject("ADODB.Recordset") sql = "Select * from Salle S " 'Sélectionner tous les éléments de la salle dans la table salle 'sql = sql & "where 1 = 1 " 'pour que la condition soit toujours vraie if Len(Trim(request.form("S_Lieu"))) > 0 then 'Si l'utilisateur choisi un lieu sql = sql & "Where H_Lieu = '" & request.form("S_Lieu") & "' " 'alors on rajoute le lieu à Where end if if Len(Trim(request.form("S_Cap"))) > 0 then 'Si l'utilisateur choisi une capacité sql = sql & "and H_Cap = '" & request.form("S_Cap") & "' " 'alors on rajoute la capacité à Where end if if Len(Trim(request.form("S_Visio"))) = true then 'Si l'utilisateur veut la visio sql = sql & "and H_Visio = '" & request.form("S_Visio") & "' " 'alors on rajoute la visio à Where end if 'Demande si l'utilisateur veut que sa salle soit affichée sur l'écran de l'accueil 'if Len(request("CK_Affichage")) > 0 then 'Si oui ' sql = sql & "and H_Affichage = '" & request.form("CK_Affichage") & " ' " 'alors on rajoute l'affichage Ã* Where 'end if sql = sql & "order by S_Visio = true, S_Lieu;" 'ordonne par ordre alphabetique et par salle visio response.write sql rs_choix.Open SQL,bd,3,3 if not rs_choix.eof then 'Si le choix correspond à* une requete do while not rs_choix.eof response.write "<tr><td>" & rs_choix("S.Nom") & "</td><td> " & rs_choix("S.Etage") & "</td><td> " & rs_choix("S.Lieu") & "</td><td> " & rs_choix("S.Capacite") & "</td><td> " & rs_choix("S.Visio") & "</td><td align=""center""> <input type=""radio"" name=""R_Salle"" value="" " & rs_choix("ID_Salle") & " "" /></td></tr>" rs_choix.MoveNext loop else 'Sinon afficher un message d'erreur. response.write "<tr><td colspan=""3"" align=""center""><br/><b><font color=""red"">Aucune salle ne correspond à* vos critères, veuillez réitérer votre recherche.</font></b><br/> </td></tr>" end if rs_choix.Close SQL,bd,3,3 set rs_choix = nothing %>
Bonjour,
Il y a quelque chose que je ne comprends pas.
Tu testes cette requête qui apparemment fonctionne :
Pourquoi dans ton code, tu utilises des noms de champ différents ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT * FROM Salle WHERE (Salle.Lieu <> null ) AND (Salle.Capacite > 0) ORDER BY Salle.Visio = true, Salle.lieu;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 sql = sql & "Where H_Lieu = '" & request.form("S_Lieu") & "' " sql = sql & "and H_Cap = '" & request.form("S_Cap") & "' " etc, ...
Il s'agit du HTML:
J'ai gardé le principe qu'avait fait l'ancienne personne pour les dates... Mais même en mettant uniquement "Lieu" "Capacite" etc... ça ne marche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <div id="centre"> <form name="F_Reserv" method="post" action="recapReservationSalle.asp"> <input type="hidden" name="H_Lieu" value="<%=request.form("S_Lieu")%>" /> <input type="hidden" name="H_Cap" value="<%=request.form("S_Cap")%>" /> <input type="hidden" name="H_Visio" value= "<%=request.form("S_Visio")%>"/> <input type="hidden" name="H_Comment" value="<%=request.form("Comment")%>" /> <!-- <input type="hidden" name="H_Affichage" value="<%=request.form("CK_Affichage")%>"/> --> <input type="hidden" name="H_Salle" /> <center>
Quelle est la description de ta table "Salle" (Nom des champs, type, longueur) ?
Id_Salle, NumeroAuto
Nom, Texte, 30
Etage, Texte, 50
Visio, Oui/Non avec l'expression Vrai/Faux
Lieu, Texte, 50
Capacite, Numérique (sachant que je ne sais pas comment le mettre en texte pour qu'ensuite il reconnaisse les chiffres donc plus simple de mettre en numérique).
Tu as une idée ? Tu penses que ça vient d'où ?
Alors, je répète ma question :
Pourquoi tu n'utilises pas les noms de champ de ta table quand tu construis ta requête ?
J'ai changé le code tout à l'heure et peut être que je n'ai pas attendu assez longtemps mais ça ne faisait pas de changement.
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 ' On récupère les infos du formulaire de saisie 'sql = "" 'Pour les espaces... mais vu que c'est dans une liste déroulante pas besoin Set rs_choix = Server.CreateObject("ADODB.Recordset") sql = "Select * from Salle " 'Sélectionner tous les éléments de la salle dans la table salle 'sql = sql & "where 1 = 1 " 'pour que la condition soit toujours vraie if Len(Trim(request.form("S_Lieu"))) <> 0 then 'Si l'utilisateur choisi un lieu sql = sql & "Where Salle.Lieu = '" & request.form("S_Lieu") & " ' " 'alors on rajoute le lieu à Where end if if Len(Trim(request.form("S_Cap"))) <> 0 then 'Si l'utilisateur choisi une capacité sql = sql & "And Salle.Capacite = '" & request.form("S_Cap") & " ' " 'alors on rajoute la capacité à Where end if if Len(Trim(request.form("S_Visio"))) = true then 'Si l'utilisateur veut la visio sql = sql & "And Salle.Visio = '" & request.form("S_Visio") & " ' " 'alors on rajoute la visio à Where end if 'Demande si l'utilisateur veut que sa salle soit affichée sur l'écran de l'accueil 'if Len(request("CK_Affichage")) > 0 then 'Si oui ' sql = sql & "and H_Affichage = '" & request.form("CK_Affichage") & " ' " 'alors on rajoute l'affichage Ã* Where 'end if sql = sql & "Order By Salle.Visio = true, Salle.Lieu" 'ordonne par ordre alphabetique et par salle visio %>
Cependant, maintenant que j'ai changé, il me met un mixte de ça marche/ça marche pas:
Select * from Salle Where Salle.Lieu = '8 ' And Salle.Capacite = '1 ' Order By Salle.Visio = true, Salle.Lieu
Aucune salle ne correspond à vos critères, veuillez réitérer votre recherche.
Microsoft VBScript runtime erreur '800a01c2'
Wrong number of arguments or invalid property assignment: 'Close'
/Reservation/choix.asp, ligne 171
Voilà l'erreur sachant que le message d'erreur ne devrait pas s'afficher ici d'une part, et ne devrait pas s'affiche du tout puisque les données que j'ai rentrées donnent des résultats !
Tu as des espaces en trop après le 8 et après le 1.
Je vois aussi une erreur dans le order by
Ca devrait être mieux comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Select * from Salle Where Salle.Lieu = '8 ' And Salle.Capacite = '1 ' Order By Salle.Visio = true, Salle.Lieu
Enfin, la ligne 46 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Select * from Salle Where Salle.Lieu = '8' And Salle.Capacite = '1' Order By Salle.Visio, Salle.Lieu
Code : Sélectionner tout - Visualiser dans une fenêtre à part rs_choix.Close
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager