Jump to content
Sign in to follow this  
P.O.K

ASP : Empêcher de sélectionner deux fois une même date

Rate this topic

Recommended Posts

Bonjour à tous,

je suis en train de créer une application permettant de réserver du matériel dans une entreprise.

Pour cela, les utilisateurs doivent sélectionner le matériel et indiquer ensuite les dates de reservation. Bien entendu, le même appareil ne peut pas être réservé deux fois le même jour. J'aimerai donc qu'un message apparaisse si quelqu'un sélectionne une date déjà prise. Malheureusement, je ne sais pas du tout comment faire...

Voici le code de ma page :

<%
NoPretReservation = request.QueryString("NoPretReservation")
NomReservation = request.QueryString("NomReservation")
LoginReservation = request.QueryString("LoginReservation")
DateDebutReservation = request.QueryString("DateDebutReservation")
DateFinReservation = request.QueryString("DateFinReservation")
NoPretMateriel = request.QueryString("NoPretMateriel")
Valider = request.QueryString("Valider")

set RS = Server.CreateObject("ADODB.recordset")
ConnString ="driver={SQL Server}; server=XXXXX;uid=dbIntraInterHevs; pwd=XXX;database=XXX"

if request.QueryString("Supp") = "ok" then
RS.Open "select * from PretReservation", ConnString, 2, 3, 8
RS.Find "NoPretReservation =" &NoPretReservation
RS.Delete
RS.Close

Response.Redirect("index.asp?nocategorie="&request.QueryString("nocategorie")&"&NoPage=1501&nolangue="&request.QueryString("nolangue")&"&noDomaine="&request.QueryString("noDomaine")&"&NoPretMateriel="&NoPretMateriel)
end if
%>
<%
if Valider = "Valider" then

RS.Open "select * from PretReservation", ConnString, 2, 3, 8
RS.addnew()

rs("DateDebutReservation") = DateDebutReservation
rs("DateFinReservation") = DateFinReservation
rs("NomReservation") = NomReservation
rs("LoginReservation") = session("Login")
rs("NoPretMateriel") = NoPretMateriel
RS.update
RS.close
%>
Réservation effectuée !<br>
<br>
<a href="index.asp?nocategorie=<%=request.QueryString("nocategorie")%>&NoPage=1501&nolangue=<%=request.QueryString("nolangue")%>&noDomaine=<%=request.QueryString("noDomaine")%>&NoPretMateriel=<%=request.QueryString("NoPretMateriel")%>">Retour</a>
<%
else
RS.Open "select * from PretMateriel where NoPretMateriel="&NoPretMateriel, ConnString, 2, 3, 8
%>
<form name="FormMateriel" method="get" action="index.asp">
<table border="0" cellpadding="0" cellspacing="5">
<tr>
<td valign="top" width="15%"><b>Matériel</b></td>
<td valign="top"><b>:</b></td>
<td valign="top"><b><%= rs("NomMateriel")%></b></td>
</tr>
<tr><td valign="top"> </td></tr>
<tr>
<td valign="top" width="15%">Description</td>
<td valign="top">:</td>
<td valign="top" align="justify"><em><%= rs("DescriptionMateriel")%></em></td>
</tr>
<tr><td valign="top"> </td></tr>
<tr>
<td valign="top" width="15%">Login</td>
<td valign="top">:</td>
<td valign="top"><%= session("login")%></td>
</tr>
<tr><td valign="top"> </td></tr>
<input type="hidden" name="nocategorie" value="<%=request.QueryString("nocategorie")%>">
<input type="hidden" name="NoPage" value="<%=request.QueryString("NoPage")%>">
<input type="hidden" name="nolangue" value="<%=request.QueryString("nolangue")%>">
<input type="hidden" name="noDomaine" value="<%=request.QueryString("noDomaine")%>">
<input type="hidden" name="NoPretMateriel" value="<%=NoPretMateriel%>">
<tr>
<td valign="top">Nom</td>
<td valign="top">:</td>
<td valign="top"><input type="text" name="NomReservation"></td>
</tr>
<tr><td valign="top"> </td></tr>
<%session.lcid = 2048%>
<tr>
<td valign="top" width="15%">Date de début</td>
<td valign="top">:</td>
<td valign="top">
<select name="DateDebutReservation">
<%
for i = 1 to 365
DateDebut = date() + i
%>
<option value="<%= DateDebut %>"><%= DateDebut %></option>
<%next%>
</select>
</td>
</tr>
<tr><td valign="top"> </td></tr>
<tr>
<td valign="top" width="15%">Date de fin</td>
<td valign="top">:</td>
<td valign="top">
<select name="DateFinReservation">
<%
for i = 1 to 365
DateFin = date() + i
%>
<option value="<%= DateFin %>"><%= DateFin %></option>
<%next%>
</select>
</td>
</tr>
<tr><td valign="top"> </td></tr>
</table>
<input type="submit" name="Valider" value="Valider"><input type="reset">
</form>
<%
RS.Close
%>
<a href="index.asp?nocategorie=<%=request.QueryString("nocategorie")%>&NoPage=1500&nolangue=<%=request.QueryString("nolangue")%>&noDomaine=<%=request.QueryString("noDomaine")%>">Retour</a>
<hr>
<%session.lcid = 1033%>
<%RS.Open "select * from PretMateriel, PretReservation where PretMateriel.NoPretMateriel = PretReservation.NoPretMateriel and PretMateriel.NoPretMateriel="&NoPretMateriel&" order by DateDebutReservation", ConnString, 2, 3, 8%>
<%session.lcid = 2048%>
<p class="titre2">Dates réservées :</p>
<%if rs.eof = true then%>
Il n'y a aucune réservation pour l'instant.
<%else%>
<table border="0" bordercolor="#047cb4" cellpadding="5" cellspacing="0">
<tr>
<td align="center" width="25%"> </td>
<td align="center"><b>Début</b></td>
<td align="center"><b>Fin</b></td>
<td align="center" width="25%"> </td>
</tr>
<%do while rs.eof = false%>
<%if rs("DateFinReservation") >= date then%>
<tr>
<td align="center" width="25%"> </td>
<td align="center"><%=rs("DateDebutReservation")%></td>
<td align="center"><%=rs("DateFinReservation")%></td>
<td align="center" width="25%"><%if rs("LoginReservation") = session("Login") then%><a href="index.asp?nocategorie=<%=request.QueryString("nocategorie")%>&NoPage=1501&nolangue=<%=request.QueryString("nolangue")%>&noDomaine=<%=request.QueryString("noDomaine")%>&NoPretMateriel=<%=rs("NoPretMateriel")%>&NoPretReservation=<%=rs("NoPretReservation")%>&Supp=ok">Effacer</a><%else%> <%end if%></td>
</tr>
<%end if%>
<%
rs.movenext
loop
%>
</table>
<%end if
RS.Close
Set rs = nothing
end if
%>

Et voici à quoi ressemble ma page :

reservv.jpg

w573.png

Pouvez-vous m'aider ?

Merci beaucoup ;)

Share this post


Link to post
Share on other sites

Bonjour,

Si la donnée est stockée en base, pourquoi ne pas allez la chercher ?

Dim sql
sql = "select date_matos from matable where lacle = '" & lacle & "'"
set rs = ConnString.execute(sql)
if not rs.eof then
'mon traitement si le matériel est déjà pris
else
'sinon on insert
end if

Remarques en passant :

1 - Evite de faire du "select *". Sélectionne les champs dont tu as besoin

2 - Rs.Addnew et autre : pas super terrible. Utilise plutôt le SQL comme si dessous :

'Update ou insert ou autre...
sql = "update ma table set monchp = '"&mavaleur&"' where lacle = "& cle &""
set rs = connstring.execute(sql)

Ensuite, renomme connstring en "conn", tu gagneras du temps.

Pour finir, utilises les includes et fais des fonctions ou Sub.

Bon courage

Portekoi

Share this post


Link to post
Share on other sites

Merci beaucoup pour votre réponse !

J'ai essayé d'aller chercher la date sur la base mais le message d'erreur suivant apparait :

Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near '.2009'.

/src/ReservationMateriel/Materiel.asp, line 25

Le problème doit sûrement venir du fait que dans la base les dates sont stockées de la manière suivant : "17.04.2009 00:00:00"

Savez-vous comment faire pour régler ce problème ?

Merci

Share this post


Link to post
Share on other sites

Re,

Si vous êtes sous Sql Server, la date doit être ainsi :05/04/2007 15:48:33

il faut remplacer les "." par des "/" dans ta requête avec la fonction ASP : replace soit :

sql = "select truc from bidule where cle = '"&cle&"' and madate = '"&replace(madate, ".", "/") &"'"
set rs = ...

Share this post


Link to post
Share on other sites

Re,

pourtant, dans ma base, les données sont comme ceci : "23.04.2009 00:00:00"...

Comment pourrais-je faire pour modifier ça ?

Merci

Share this post


Link to post
Share on other sites

Tu as bien un format datetime ?

C'est quoi ta version de Sql Server ? Quelle langue?

Share this post


Link to post
Share on other sites

Non j'ai le format "smalldatetime". Je vais essayer de le changer.

J'ai SQL Server 2005, en français.

Share this post


Link to post
Share on other sites

Je ne connais pas sous 2005 mais une chose, n'oublie pas de mettre des quotes (') pour entourer ta date :

sql = "select champ from table where madate = '"&madate&"'"

Share this post


Link to post
Share on other sites

J'ai modifié le format des champs et ajouté les quotes. Voici l'erreur qui apparait :

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][sql Server]The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

/src/ReservationMateriel/Materiel.asp, line 25

Share this post


Link to post
Share on other sites

Fais un response.Write de ta requête.

Share this post


Link to post
Share on other sites

Bonjour,

excusez-moi pour le retard, j'ai eu un empêchement...

Je crois qu'il y a un problème avec la solution que vous me proposez. Dans ma base de données, je stocke uniquement la date de début de la réservation et la date de fin et non pas toutes les dates réservées...

Cela pose donc un problème non ?

Share this post


Link to post
Share on other sites

Euh non, il suffit de faire une requete pour trouver si la date demandée est supérieure à la date début et inférieure à la date de fin :)

sql = "select monchamp from matable where madatedebut <= '"& mavardate &"' and madatefin >= '"& mavardate &"' and macle = '"& macle &"'"

Share this post


Link to post
Share on other sites

As tu avancé? Si tu as du code, montre le moi si tu veux :)

Share this post


Link to post
Share on other sites

Bonjour,

désolé de ne plus avoir répondu, on m'a chargé d'un autre projet qui m'a pris pas mal de temps.

J'ai cependant trouvé une solution à mon problème, voici le code :

RS.Open "select * from PretMateriel, PretReservation where ((DateDebutReservation <= '"&DateDebutReservation&"' and DateFinReservation >= '"&DateDebutReservation&"') or (DateDebutReservation <= '"&DateFinReservation&"' and DateFinReservation >= '"&DateFinReservation&"') or (DateDebutReservation >= '"&DateDebutReservation&"' and DateFinReservation <= '"&DateFinReservation&"') ) and  PretReservation.NoPretMateriel="&NoPretMateriel&" and PretMateriel.NoPretMateriel ="&NoPretMateriel, ConnString, 2, 3, 8

Merci beaucoup pour l'aide apportée.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By kevinjoseph
      Bonjour, j’ai un gros problème sur mon site Wordpress . Du jour au lendemain, mon site wordpress fais une redirection vers un autre site wordpress que j’ai crée ,sans que je touche à quoi que ce soit. Quand j’essai d’aller sur l’admin pour désactiver les plugins et voir d’où peut venir le problème. Impossible d’accéder, sa me redirige vers l’admin de l’autre site. Au final il est impossible que j’accède au site via (google, la bare de recherche, les favoris, l’admin…) pour voir ce qu’il fonction pas, j’ai juste accès au FTP. J'ai essayé de voir d'où pouvez venir ce bug en supprimant les plugins, le théme, mes derniers modifications, regarder sur le .htaccess si il y avais quelque par le nom de domaine de l'autre site écrit. Ca n'a rien changer, le site continue de ce rediriger automatiquement vers l'autre site. Si vous avez une idée d’où sa peut venir ou comment faire pour arranger ça et surtout comment éviter que sa ce reproduise. Sa m’aiderai beaucoup, merci d’avance.
      voici le code du .htaccess:
       
      # BEGIN WordPress
      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      RewriteRule ^index\.php$ - [L]
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /index.php [L]
      </IfModule>

      # END WordPress
      ~   Ludovic • 16:28    
    • By leobk
      Bonjour,
       
      J'ai un sous-domaine www.fr.monsite.com dédié pour la réservation des vols
      j'ai redirigé récemment ce sous-domaine vers le site principal www.monsite.com et le nombre des erreurs 404 a explosé
      un nombre énorme d'URLs de type :
      www.fr.monsite.com/fr/vols/index?f_type=01&f_departure=TLS&f_destination=DJE&f_date_from=08/09/2013&f_date_to=22/09/2013&f_flexibility=3&f_paxs_adults=2&f_paxs_childs=0&f_paxs_infants=0
      redirigent vers :
      www.monsite.com/fr/vols/index?f_type=01&f_departure=TLS&f_destination=DJE&f_date_from=08/09/2013&f_date_to=22/09/2013&f_flexibility=3&f_paxs_adults=2&f_paxs_childs=0&f_paxs_infants=0
       
      L'URL de destination est biensur introuvable 404, puisque les variables utilisés dans les deux sites ne sont pas identiques
      Voici la structure d'URL si on fait une recherche de vol sur le site principal :
      https://www.monsite.com/fr/resa?depart=SXF&arrivee=NBE&aller=2017-11-10&retour=2017-11-30&adultes=1&enfants=1&bebes=0&departureDateTime_D=&arrivalDateTime_D=&departureDateTime_R=&arrivalDateTime_R=&fareGroupName=&fareGroupName_R=&sens=2&currency=EUR&airline=&flightNumber=&flight=&flight_retour=&webview=0&felxibilite=2
       
       
      existe-il un moyen pour rediriger l'ensemble des URLs dynamiques du sous-domaines vers une URL statique du domaine principale (autre que l'accueil)?
       
       
    • By PieceMobile
      Bonjour,



      J'espère que vous allez tous bien.



      Auriez vous une solution pour rediriger ( via une règle htaccess par exemple ) :



      http://www.mon-site.com/blabla.html?ps_mobile_site=1



      vers : http://www.mon-site.com/blabla.html



      A mon avis, s'agissant d'un paramètre d'URL, de ce que j'ai cru comprendre -a mon petit niveau- c’était pas possible, mais ça me dépannerai pas mal si l'un d'entre vous avait une idée.



      Merci d'avance





    • By aurelien59
      Bonjour, Je me permet de poster ce problème sur ce forum en plus de l'avoir posté sur un autre. Le problème survient sur un site codé en dur. Depuis plusieurs mois après la mise en place de redirection, je rencontre un problème. La redirection a été mise en place pour rediriger simplement les pages ayant un underscore vers un tiret. Par exemple page_1.php vers page-1.php Dans Google webmasters tools, zone "Exploration", > Erreurs d'exploration > le nombre des URL non suivies à augmenter de manière considérable sur ordinateurs et smartphone.

      Voici un exemple de page contenant l'erreur : page-1.php/page-a.php (alors que la page correcte est page-1.php, la page page-a.php est présente sur le site en racine). Lorsque je clic sur l'url d'erreur, dans l'onglet "Référencée sur". Les url qui apparaissent sont : http://www.monsite.fr/page-2.php/page-b.php'>>http://www.monsite.fr/page-2.php/page-b.php et http://www.monsite.fr/page-2.php/page-c.php'>>http://www.monsite.fr/page-2.php/page-c.php (non indexés sur Google). Voici l'extrait du .htaccess ErrorDocument 404 http://www.monsite.fr/404.phpRewriteEngine onRewriteCond %{HTTP_HOST} ^monsite.fr$RewriteRule ^(.*) http://www.monsite.fr/$1 [QSA,L,R=301]RewriteRule ^([^_]*)_([^_]*)$ /$1-$2 [L,R=301]RewriteRule ^(.*)\.php/$ http://www.monsite.fr/$1.php[L,R=301]RewriteRule ^(.*)\.php/(.*)\.php$ http://www.monsite.fr/$1.php[R=301]RewriteCond %{REQUEST_FILENAME} -s [OR]RewriteCond %{REQUEST_FILENAME} -l [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteRule ^.*$ - [NC,L]RewriteRule ^.*$ /404.php [NC,L] Merci beaucoup pour votre aide.
×
×
  • Create New...