Application web réservation de salle ASP

Nouveau WRInaute
Bonjour,

Normalement ça devrait être ici pour poster mon sujet, en espérant que l'ASP soit un peu connu dans la région ^^

Alors voilà je vous explique: je dois améliorer une application de réservations de salles. Celle qui existe consiste à ce que l'utilisateur rentre une date de début et de fin, ainsi qu'une heure de début et de fin avec un message expliquant pourquoi il réserve.

Je dois le coder en ASP (VB) que j'apprend sur le tas (contrainte supplémentaire donc car je perds beaucoup de temps).

Moi je dois faire une application "par critères" pour que l'utilisateur rentre non pas des dates mais des critères: il y a donc sa localisation (ville), sa capacité (nb_personne), si c'est une salle informatique ou non (sélecteur oui/sans importance) et la raison de sa réservation. C'est le fichier saisie.asp . Après avoir validé, l'utilisateur est dirigé vers la page choix.asp où il y a un tableau avec la liste des salles qui existent en fonction des critères qu'il a rentré.

Le premier problème est le suivant: je voudrais afficher un message d'erreur s'il n'existe aucune salle, et pour ça je ne sais d'une part pas où le faire (est-ce dans saisie.asp ou dans choix.asp) et pas le mettre en forme (requête sql).

Ensuite, pourriez vous me donner votre opinion sur mon code (aurais-je fais des erreurs ?) car mon server ne marche pas... du coup je ne peux rien tester et je code à l'aveugle (minimum jusqu'à lundi).

Fichier saisie.asp

Code:
<%@ Language=VBScript %>
<%
If (session("ID_User") = "") Then
	response.redirect "../index.asp"
End if
%>

<html>
<head>
	<title>Projet </title>
	<link rel="stylesheet" type="text/css" href="../../style.css" />
	<script language="Javascript" src="../../javascript/javascript.js"></script>
	<script language="Javascript">
	function Valider()
	{
		if (document.F_Res.T_Comment.value.length < 3)
		{
			alert('Motif obligatoire !');
			document.F_Res.T_Comment.focus();
		}
		else
		{
			document.F_Res.submit();
		}
	}
	</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">
			<center>
			<form name="F_Res" action="./Reservation/choix.asp" method="post">
			<table class="corps">
				<tr>
					<td colspan="3" class="entete">
						Réservation d'une salle par critères
					</td>
				</tr>
				<tr><td>&nbsp;</td></tr>
				
				<td>
					<form method="post" >
						<Font color = #000000 Style= "margin-left:15px"> Lieu: <SELECT id="lieu" name="S_Lieu" style= "width:135px; margin-left:10px">
													<OPTION value="1"> Non-renseigné
													<OPTION value="2"> A
													<OPTION value="3"> B
													<OPTION value="4"> C
													<OPTION value="5"> D							
													<OPTION value="6"> E
													<OPTION value="7"> F								
													<OPTION value="8"> G
													<OPTION value="9"> H

												</SELECT>
							
						<Font color = #000000 Style= "margin-left:25px">Capacité: <SELECT id="capacite" name="S_Cap" style= "width:135px; margin-left:10px">
													<OPTION value="1"> Non-renseigné
													<OPTION value="2"> 3 personnes
													<OPTION value="3"> 8 personnes
													<OPTION value="4"> 10 personnes
													<OPTION value="5"> 11 personnes
													<OPTION value="6"> 12 personnes
													<OPTION value="7"> 15 personnes
													<OPTION value="8"> 19 personnes
													<OPTION value="9"> 20 personnes
													<OPTION value="10"> 22 personnes
													<OPTION value="11"> 23 personnes
													<OPTION value="12"> 40 personnes
												</SELECT>
									
						<Font color = #000000 Style= "margin-left:25px">Salle info: 	<input type="radio" name="S_Info" value="Oui" /> Oui 
																						<input type="radio" name="S_Info" value="PI" checked /> Sans Importance
												
					</form>	
				</td>
										
				<tr>
					<td>
						<Font color = #FF0000 Style="margin-left:15px;" >Raison : </font> <textarea name="T_Comment" rows="4" cols="50" style= "margin-left:150px"></textarea>
					</td>
				</tr>
				
				<tr>
					<td>
						</br> <input type="checkbox" name="CK_Affichage" value="Oui" checked Style="margin-left:11px;" /> Pour que votre réservation <b>n'apparaisse pas</b> sur l'écran à l'accueil, <b>décochez</b> cette case.</b>
					</td>
				</tr>
				<tr><td>&nbsp;</td></tr>
				<tr>
					<td colspan="3" align="center">
						<input type="button" value="Valider" name="B_Valider" onClick="Valider();" />
						&nbsp;&nbsp;
						<input type="reset" value="Annuler" name="B_Reset" />
					</td>
				</tr>
				<tr><td>&nbsp;</td></tr>
			</table>
			</form>
			</center>
			</div>
		</div>
	</div>
</body>
</html>

Fichier choix.asp

Code:
<%@ Language=VBScript %>

<%if (session("ID_User") = "") then
       response.redirect "../index.asp"
End if%>

<html>
<head>
       <title> Projet </title>
       <link rel="stylesheet" type="text/css" href="../../style.css" />
       <script language="Javascript" src="../../javascript/javascript.js"></script>

<script language="Javascript">
function Dispo(type)
{	
	if (sup_elt.length <= 0)
       {
		   alert("Vous devez sélectionner une salle pour voir ses disponibilités !");
       }
       else
       {
		   document.F_Reserv.submit();
       }
}
</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_Info" value= "<%=request.form("S_Info")%>"/>
					   <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>
                       <b> Réserver une salle </b>
                       <br/>
                       à <%=request.form("S_Lieu")%> <br/> pouvant contenir <%=request.form("S_Cap")%> avec salle info ? <%=request.form("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>&nbsp;</td><tr>
                                       <tr>
                                               <td colspan="6" align="center">
                                                       <input type="button" name="B_Dispo" value="Voir les disponibilités" onclick="Dispo('');" />
                                                       <br/>&nbsp;
                                               </td>
                                       </tr>
                           
						res_choixSalle.Close
			
                       </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
	
	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("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("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("S_info"))) > 0 then%> 				  								'Si l'utilisateur veut la info
		sql = sql & "and H_info = '" & request.form("S_info") & "' "							'alors on rajoute la salle info à Where
	<%end if%>
		
	sql = sql & "order by ASC, R_Info = 1"                              						'résultat ordonné par odre alphabétique et ensuite par salle qui sont informatisées.                     
	MesEr = " Aucune salle ne correspond à votre requête. Veuillez réitérer votre recherche. "  'Message d'erreur si la requête ne trouve rien.
	
	
	'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%> 
	 
%>

Je précise que ma base de données regroupent les tables suivantes: User, User_Droits, Salles, Reservations.

Merci d'avance :)
 
WRInaute impliqué
If (session("ID_User") = "") Then

en vb comme dans les autres langages, = c'est pour affecter, == pour comparer
 
Nouveau WRInaute
loubet a dit:
If (session("ID_User") = "") Then

en vb comme dans les autres langages, = c'est pour affecter, == pour comparer

En asp.net oui, en asp (tout court) non.
L'opérateur = utilisé dans un bloc conditionnel implique une comparaison et non une affectation.

cf. https://msdn.microsoft.com/fr-fr/library/9hck4s70%28v=vs.84%29.aspx

Dans l'exemple evoqué cela semble bien être de l'asp/vbscript.

@Yana20:

sql = sql & "where 1 = 1 " 'pour que la condition soit toujours vraie
Je doute que cette condition soit utile puisqu'elle est toujours vraie.

Sauf erreur de ma part tu construis bien ta requête dans ta variable "sql" mais je ne vois pas son exécution ni le traitement des résultats.
Tu peux afficher sur la page choix.asp ton "message d'erreur" et indiquer à l'utilisateur de réaliser une nouvelle saisie avec de nouveaux critères avec un lien vers la page saisie.asp. Pour ta mise en forme elle n'est pas liée à SQL mais doit être gérée via les CSS.
Par contre à ta place et ça n'est que mon avis, je ne maitrise pas toutes les contraintes liées à ton projet, j'aurais fait une unique page de recherche avec en première partie de page le formulaire de recherche et en dessous les résultats.

Enfin pour finir, je déconseillerai l'emploi des technologies asp dont la dernière release date d'environ une quinzaine d'années, ce language ayant été abandonné au profit des technologies .net (asp.net & c#/vb.net ...). Si tu dois/veux rester sur des technologies miscrosoft je te conseille de passer au .net (Ne connaissant pas le contexte du projet je ne peux cependant me prononcer sur les contraintes de migration technique que tu peux rencontrer).

Bon courage & a dispo au besoin.
Cordialement.
 
Nouveau WRInaute
Bonjour !

Je vous remercie à tous les deux pour vos réponses. D'accord pour ce qui concerne

If (session("ID_User") = "") Then

en vb comme dans les autres langages, = c'est pour affecter, == pour comparer

c'est bien le égal qui marche (j'en suis sur, je l'ai repris de l'existant) mais merci quand même loubet :)

Pour le fichier choix.asp voici mon code normalement finalisé (mon server plante toujours donc pas moyen de vérifier si ça marche...):

Code:
<%@ 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" />
       <script language="Javascript" src="../../javascript/javascript.js"></script>

<script language="Javascript">
function Dispo(type)
{	
	if (sup_elt.length <= 0)
       {
		   alert("Vous devez sélectionner une salle pour voir ses disponibilités !");
       }
       else
       {
		   document.F_Reserv.submit();
       }
}
</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>
                       <b> Réserver une salle </b>
                       <br/>
                       à <% response.write rs_choixSalle("S_Lieu") %> <br/> 
					   pouvant contenir <% response.write rs_choixSalle("S_Cap") %> <br/> 
					   avec Visio ? <% response.write 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>&nbsp;</td><tr>
                                       <tr>
                                               <td colspan="6" align="center">
                                                       <input type="button" name="B_Dispo" value="Voir les disponibilités" onclick="Dispo('');" />
                                                       <br/>&nbsp;
                                               </td>
                                       </tr>
                           
						res_choixSalle.Close
			
                       </table>
                       </center>
                       </form>
                       </div>
               </div>
       </div>
</body>
</html>


<script language="Javascript">
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>


<%
' 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
	
	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
	
	sql = "order by ASC, R_Visio = 1"  															'ordonné par ordre alphabetique et par salle visio
	
	if not rs_choixSalle.eof then																'Si le choix correspond à une requete
		
		do while not rs_choix.eof

			response.write "<tr><td>" 
			& rs_choixSalle("S.Nom")

			& "</td><td> " 
			& rs_choixSalle("S.Etage") 		
			
			& "</td><td> " 
			& rs_choixSalle("S.Lieu")

			& "</td><td> " 
			& rs_choixSalle("S.Capacite") 
		
			& "</td><td> " 
			& rs_choixSalle("S.Visio") 
		
			& "</td><td align=""center""> <input type=""radio"" name=""R_Salle"" value="" " 
			& rs_choixSalle("ID_Salle") 
			
			& " "" /></td></tr>" 
			
			rs_choixSalle.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/>&nbsp;</td></tr>"
	
	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
	 
%>

Par contre à ta place et ça n'est que mon avis, je ne maitrise pas toutes les contraintes liées à ton projet, j'aurais fait une unique page de recherche avec en première partie de page le formulaire de recherche et en dessous les résultats.

Je trouve que c'est une très bonne idée, je n'y avais pas pensé :) Donc si je comprend bien, à la validation du formulaire, au lieu de changer de page, ça me l'affiche sur la même page ce qui est plus simpa pour l'utilisateur j'imagine ?

Enfin pour finir, je déconseillerai l'emploi des technologies asp dont la dernière release date d'environ une quinzaine d'années, ce language ayant été abandonné au profit des technologies .net (asp.net & c#/vb.net ...). Si tu dois/veux rester sur des technologies miscrosoft je te conseille de passer au .net (Ne connaissant pas le contexte du projet je ne peux cependant me prononcer sur les contraintes de migration technique que tu peux rencontrer).

Mon cher rienneseperd, je pense exactement la même chose que toi, et j'avoue que pour moi, le php reste le meilleure langage pour développer sur du web (avec js/html/css quoi). Malheureusement, je n'ai pas le choix, je suis obligée de continuer avec ce langage pour plusieurs raisons (entre autre le fait qu'il y a une cinquantaine de fichier asp sans parler de mon travail actuel, que je ne peux pas migrer, et ensuite pour une question de temps, je dois boucler ce projet avant le 10 juin...).

Est-ce que tu t'y connais en ce qui concerne les agendas/calendrier en asp ? Car voilà mon deuxième soucis: après avoir validé le formulaire, et vue les salles qui correspondaient à leur critères, l'utilisateur clique sur une des salles et doit s'afficher un agenda de cette salle. Là, il peut choisir un créneau en cliquant sur l'agenda, et réserver une salle. Est-ce que tu crois pouvoir m'aider ? J'ai commencer le html.
 
Discussions similaires
Haut