IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

Réservation d'une salle, savoir si les heures sont déjà occupées


Sujet :

ASP

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Réservation d'une salle, savoir si les heures sont déjà occupées
    Bonsoir tout le monde,

    J'ai une page asp qui récupère dans des variables des données choisies par des listes déroulantes.

    C'est en fait la réservation d'une salle et les données récoltées sont :

    Jour de la réservation, mois de la réservation, heure de début et heure de fin de la réservation et nom de l'utilisateur qui réserve.

    Quand une personne réserve la salle, le code de ma page envoi sélectionne la table du mois, ensuite le jour, et met dans les différents champs de la table l'heure de début jusqu'à l'heure de fin.

    Ex: Monsieur Durand réserve la salle le 01 janvier de 12 à 16h00, le code réserve alors la table janvier, sélectionne le jour 01 et ensuite met durand dans 12, 13, 14 et 15 (pas 16 car à 15h59 la salle est libre pour quelqu'un d'autre)

    Il y'a donc une grosse partie du travail qui est fait.

    Maintenant, si une personne réserve la salle le 01 janvier, j'aimerais d'abord vérifier que la salle n'est pas déjà réservé par quelqu'un d'autre.

    Pour ce faire, j'ai trouvé le moyen de savoir si le mois, le jour et l'heure de début est déjà prise, idem pour l'heure de fin.

    Voici le code pour savoir si l'heure de début et l'heure de fin est déjà prise :

    Début :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if len(rst2("debut")) <> 0 then
    %>
    <script language= "javascript">
    alert('La salle informatique est déjà réservée, merci de vérifier la disponibilité') ;
    </script>
    <%
    response.End()
    End if
    Fin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if len(rst2("fin")) <> 0 then
    'response.write(rst2("fin"))
    '%>
    <script language= "javascript">
    alert('La salle informatique est déjà réservée, merci de vérifier la disponibilitée') ;
    </script>
    <%
    response.End()
    End if
    La chaîne SQL qui filtre les données et qui renomme les champs est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    checkSQL = "select [" & hfdebut & "] as debut, [" & hffin & "] as fin  from " & hfmois & " where jour = '" & hfjour & "' "
    Ma question :

    Comment savoir si les heures entre l'heure de début et l'heure de fin sont déjà occupées ?

    C'est là que je coince et ça fait maintenant presque deux semaines.

    Je perds vraiment beaucoup de temps sur la conception de cette application.

    Je vous remercie d'avance pour l'aide que vous m'apporterez.

    beegees

  2. #2
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Salut,

    Tu as une colonne par heure pour chaque jour?

    A+

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut Immobilis,

    Oui j'ai une collone pour chaque heure.

    Tu crois que je pourrai faire ce que je veux ?

    Merci
    beegees

  4. #4
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Tu te souviens de ce que je t'avais dit ? Les problèmes commencent !
    Si tu avais une table de ce genre :

    IdUser
    LaDate
    HDeb
    Hfin

    Tu faisais un select qui vérifie pour la date que les heures saisies ne chevauchent pas les heures dans ta table.

    Mais bon, pour ta question, je ferai une boucle dans ce genre là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Tant que debut <= fin
       select debut.....
       debut = debut + 1
    Fin tant que

  5. #5
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut PC75,

    Merci pour ton pseudo-code et pour ton avertissement

    J'ai suivi ton conesil niveau pseudo-code et voici ce que ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    do while fin <= debut
    fin = fin - 1
    checkSQL = "select [" & hffin & "] as fin  from " & hfmois & " where jour = '" & hfjour & "' "
    if len(rst2("fin")) <> 0 then
    %>
    <script language= "javascript">
    alert('La salle informatique est déjà réservée, merci de vérifier la disponibilité') ;
    </script>
    <%
    response.End()
    End if
    loop
    Le problème est que ça à l'air de tourner fou.
    Active Server Pages (ASP) erreur 'ASP 0113'

    Délai d'exécution du script dépassé

    /RSI/recup_rsi.asp

    Le délai maximal d'exécution d'un script a été dépassé. Vous pouvez changer cette limite en donnant une nouvelle valeur à la propriété Server.ScriptTimeout ou en changeant la valeur dans les outils d'administration d'IIS.

    En plus, je sais pas où mettre le select car il me dit "Case attendu".

    Qu'en penses-tu ?

    Merci d'avance.

    beegees

  6. #6
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Re-bonjour,

    Quand je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    do while varhffin <= varhfdebut
    varhffin = varhffin - 1
    response.write("ok")
    loop
    varhffin correspond à la valeur récupérée par la liste déroulante de la page HTML.

    J'ai mis le suffixe var devant les variables car j'avais donné le même nom aux tables et à mes variables.

    Et voici l'erreur que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Microsoft OLE DB Provider for ODBC Drivers erreur '80040e14' 
     
    [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans la clause FROM. 
     
    /RSI/recup_rsi.asp, ligne 50
    La ligne 50 correspond à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rst2.open checkSQL, "RSI"
    La chaîne SQL utilisée est la suivante (ligne 47):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    checkSQL = "select [" & hfdebut & "] as debut, [" & hffin & "] as fin  from " & hfmois & " where jour = '" & hfjour & "' "
    Qu'en pensez-vous ?

    Merci d'avance pour votre aide.

    beegees

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 367
    Points : 414
    Points
    414
    Par défaut
    Salut,

    j'en pense qu'il ne reconnait pas ta chaine SQL comme valide.

    Fais un response.write de checkSQL et mets l'ouverture en commentaire, ca t'affichera la chaine, tu pourra vérifier d'eventuelles erreurs de syntaxe.

  8. #8
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut Gwenn,

    Merci pour ta réponse.

    Quand je ne met pas la boucle, le response.write me donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select [11] as debut, [13] as fin from janvier where jour = '01'
    Dès que je met la boucle, j'ai le message d'erreur.

    Je ne pense donc pas que c'est dû à la chaîne SQL mais à cette boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    do while hffin <= hfdebut
    hffin = hffin - 1
    response.write("ok")
    loop
    response.write(hffin) me donne 14 par exemple et response.write(hfdebut) me donne 10, donc il y'a des valeurs dans ces deux variables.

    Qu'en penses-tu ?

    Merci
    beegees

  9. #9
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bon,

    J'ai changé do while par do until et là ça va mieux (plus de message d'erreur, de tampon ou de chaîne SQL).

    Par contre la boucle n'est pas prise en compte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    do until hffin <= hfdebut
    hffin = hffin - 1
    response.write(hffin)
     
    loop
    En sachant par exemple que hffin vaut 18, hfdebut vaut 14 il devrait afficher "17,16,15" mais il ne le fait pas, vous comprenez pourqoi ?

    Merci pour votre précieuse aide.

    beegees

  10. #10
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Et si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    hffin2 = cInt(hffin)
    hfdebut2 = cInt(hfdebut)
    do until hffin2 <= hfdebut2
    hffin2 = hffin2 - 1
    response.write(hffin2)
     
    loop

  11. #11
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Re,

    Tu es vraiment, très très fort Pc75.

    La boucle s'enclenche maintenant.

    Donc, maintenant, je dois essayer de mettre dans cette boucle les instructions qui check si les cases sont vides.

    Je te recontacte dès que c'est fait.

    Mes plus grand respects à toi.

    beegees

  12. #12
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Re-salut PC75,

    Voici ce que j'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    hffin2 = cInt(hffin)
    hfdebut2 = cInt(hfdebut)
    do until hffin2 <= hfdebut2
    hffin2 = hffin2 - 1
    if len(rst2("fin")) <> 0 then
    'response.write(rst2("fin"))
    %>
    <script language= "javascript">
    alert('La salle informatique est déjà réservée, merci de vérifier la disponibilitée') ;
    </script>
    <%
    response.End()
    End if
    loop
    Ma question :

    Dois-je insérer une chaîne SQL ? Il me semble qu'il n'est pas sensé connaître rst2("fin") ?

    J'ai fais après hffin2 ! hffin2 -1 un response.write(checkSQL) et voici le résultat :

    select [10] as debut, [13] as fin from janvier where jour = '01' select [10] as debut, [13] as fin from janvier where jour = '01' select [10] as debut, [13] as fin from janvier where jour = '01'
    C'est inquiétant car fin ne diminue pas de 1.

    Qu'en penses-tu ?

    Merci pour tout.

    beegees

  13. #13
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Dans ta boucle, tu détermine les heures comprises dans la plage.
    Donc, il faut que tu fasses un select avec la nouvelle valeur hffin2 à l'intérieur de ta boucle pour tester sur la nouvelle colonne.

    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
    hffin2 = cInt(hffin)
    hfdebut2 = cInt(hfdebut)
    do until hffin2 <= hfdebut2
    hffin2 = hffin2 - 1
    
    checkSQL = "select [" & hffin2 & "] ......
    
    if len(rst2("fin")) <> 0 then
    'response.write(rst2("fin"))
    %>
    <script language= "javascript">
    alert('La salle informatique est déjà réservée, merci de vérifier la disponibilitée') ;
    </script>
    <%
    response.End()
    End if
    loop

  14. #14
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut PC75,

    Merci pour ta réponse.

    J'ai fais ce que tu as dis :

    hffin2 = cInt(hffin)
    hfdebut2 = cInt(hfdebut)
    do until hffin2 <= hfdebut2
    hffin2 = hffin2 - 1
    checkSQL = "select [" & hfdebut2 & "] as debut, [" & hffin2 & "] as fin from " & hfmois & " where jour = '" & hfjour & "' "
    'response.Write(checkSQL)
    if len(rst2("fin")) <> 0 then
    'response.write(rst2("fin"))
    %>
    <script language= "javascript">
    alert('La salle informatique est déjà réservée, merci de vérifier la disponibilitée') ;
    </script>
    <%
    response.End()
    End if
    loop

    Par contre, je présume que c'est pas normal qu'il ne m'envoie pas une alerte lorsqu'il rencontre une case non vide.

    Exemple :

    X réserve la salle de 10 à 15
    Y la réserve la même date de 11 à 14

    Dans ce cas, il devrait réagir, mais il réagit pas.

    Voci la response.write(checkSQL) :

    select [10] as debut, [13] as fin from janvier where jour = '01' select [10] as debut, [12] as fin from janvier where jour = '01' select [10] as debut, [11] as fin from janvier where jour = '01' select [10] as debut, [10] as fin from janvier where jour = '01'
    Chose importante :

    11, 12 et 13 étaient différents de vide.

    Qu'en penses-tu ?

    Merci pour ton aide.

    beegees

  15. #15
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Dans ta boucle, tu génères ta requête SQL, mais tu ne l'éxécutes pas. Donc, tu ne peux pas tester les valeurs.

  16. #16
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par pc75
    Re,

    Dans ta boucle, tu génères ta requête SQL, mais tu ne l'éxécutes pas. Donc, tu ne peux pas tester les valeurs.
    Re,

    Je ne comprends pas bien ce que tu veux dire.

    Je dois faire genre cnn.execute(checkSQL) ?

    Il me semble que je l'ai déjà fait ça.

    Je laisse mon code, pourrais-tu stp regarder si je l'ai fais ?

    J'ai mis la partie du code en rouge.

    Merci et désolé....

    beegees

    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
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Document sans titre</title>
    </head>
     <%
    response.Buffer = true
    dim hfjour
    hfjour = request.form("hfjour")
    'response.Write(hfjour)
    dim hfmois
    'récupère la valeur de la variable hdCI1 qui contient le nom du cours
    hfmois = request.Form("hfmois")
    'response.Write(hfmois)
    dim hfdebut
    'récupère la valeur de la variable hdCI1TH qui contient le nombre d'ECTS pour la théorie pour le 1er cours isolé.
    'response.Write(hfdebut)
    hfdebut = request.form("hfdebut")
    'response.Write(hfdebut & "-")
    dim hffin
    hffin = request.form("hffin")
    hffin = hffin - 1
    'response.write(hffin)
    'response.Write("la valeur de hffin est " & hffin )
    dim hfuser
    hfuser = request.form("hfuser")
    'response.Write(hfuser & "-")
    dim dateauj
    dateauj = now
    'response.write(dateauj)
    dim rst
    dim rst2
    dim cnn
    dim cnn2
    dim checkSQL
    set cnn2 = server.CreateObject("ADODB.CONNECTION")
    set cnn = server.CreateObject("ADODB.CONNECTION")
    set rst = Server.CreateObject("ADODB.Recordset")
    set rst2 = server.CreateObject("ADODB.Recordset")
    cnn.open "RSI"
    cnn2.open "RSI"
    mysql = "select * FROM  [RSI]"
    rst.open mysql, "RSI"
    'response.Write(checkSQL)
    checkSQL = "select [" & hfdebut & "] as debut, [" & hffin & "] as fin  from " & hfmois & " where jour = '" & hfjour & "' "
    'checkSQL = "select * from rsi"
    'response.Write("checkSQL vaut " & checkSQL)
    rst2.open checkSQL, "RSI"
    'rs = rst2.fields.count
    'response.Write("rs vaut " & rs)
    %> 
    
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Document sans titre</title>
    </head>
    
    <body>
    <%
    'on vérifie ici si l'heure de début n'est pas déjà occupée.
    'si tel est le cas, une alerte se lance et rien ne se passe, donc pas de mise à jour de la table (response.end)
    if len(rst2("debut")) <> 0 then
    %>
    <script language= "javascript">
    alert('La salle informatique est déjà réservée, merci de vérifier la disponibilité') ;
    </script>
    <%
    response.End()
    End if
    
    'on vérifie ici si l'heure de fin n'est pas déjà occupée.
    'si tel est le cas, une alerte se lance et rien ne se passe, donc pas de mise à jour de la table (response.end)
    'Ce qui est important est qu'on vérife l'heure de début et l'heure de fin avant même de mettre la table à jour
    'donc si l'un ou l'autre est pas disponible (debut ou fin) le traitement du code s'arrête.
    if len(rst2("fin")) <> 0 then
    'response.write(rst2("fin"))
    '%>
    <script language= "javascript">
    alert('La salle informatique est déjà réservée, merci de vérifier la disponibilitée') ;
    </script>
    <%
    response.End()
    End if
    
    'response.Write("hfdebut vaut" & hfdebut )
    'response.Write("hffin vaut " & hffin)
    
    hffin2 = cInt(hffin)
    hfdebut2 = cInt(hfdebut)
    do until hffin2 <= hfdebut2
    hffin2 = hffin2 - 1
    checkSQL = "select [" & hfdebut2 & "] as debut, [" & hffin2 & "] as fin  from " & hfmois & " where jour = '" & hfjour & "' "
    
    response.Write(checkSQL)
    if len(rst2("fin")) <> 0 then
    'response.write(rst2("fin"))
    %>
    <script language= "javascript">
    alert('La salle informatique est déjà réservée, merci de vérifier la disponibilitée') ;
    </script>
    <%
    response.End()
    End if
    loop
    
    
    dim selecttable
    selecttable = ""
    selecttable = "update " & hfmois & " set " & hfdebut & " = '" & hfuser & "' WHERE jour =  '"& hfjour & "' "
    'response.Write("ICI" & selecttable)
    cnn.Execute(selecttable)
    
    
    'C'est ici qu'on entre les heues de fin jusqu'au début exemple réservation de 8 à 12 on entre 12,11,10,9
    'dim checkhffin
    'checkhffin = rst2("fin")
    'dim i 
    'i = à la valeur de la variable hffin, variable qui contient la valeur du champ HTML de la liste déroulante hffin
    'i = hffin 
    
    'fait tant que i (hffin) est supérieur à l'heure de début
    
    'tu met à jour la table
    'selecttable = "update " & hfmois & " set " & i & " = '" & hfuser & "' WHERE jour =  '"& hfjour & "' "
    'response.Write(selecttable)
    'il faut exécuter à chaque fois et non faire un update globale autrement ça plante
    'cnn.Execute(selecttable)
    'je retitre de i 1 (donc hffin = hffin - 1)
    
    %>
    </body>
    </html>

  17. #17
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Je dois faire genre cnn.execute(checkSQL) ?
    Tu construis un select pour chaque heure dans ta boucle mais tu ne l'éxécutes pas.
    Si tu veux pouvoir lire le résultat de ces requêtes, il faut que tu les éxécutes pour récupérer les valeurs dans un recordset non ?
    Alors il faut que tu fasses le cnn.execute et ensuite, tu testes.

  18. #18
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Re,

    PC75, merci pour ta patience légendaire.

    J'ai donc édité mon code, ça donne ceci :

    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
    hffin2 = cInt(hffin)
    hfdebut2 = cInt(hfdebut)
    do until hffin2 <= hfdebut2
    hffin2 = hffin2 - 1
    checkSQL = "select [" & hfdebut2 & "] as debut, [" & hffin2 & "] as fin  from " & hfmois & " where jour = '" & hfjour & "' "cnn.execute(checkSQL)
    response.Write(checkSQL)
    if len(rst2("fin")) <> 0 then
    'response.write(rst2("fin"))
    %>
    <script language= "javascript">
    alert('La salle informatique est déjà réservée, merci de vérifier la disponibilitée') ;
    </script>
    <%
    response.End()
    End if
    loop
    Je fais en sorte de réserver la salle pour qu'une heure entre le début et la fin soit déjà occupé.

    Le code ne s'occupe pas de ce champ qui est différent de rien, il me donne ceci :

    select [12] as debut, [18] as fin from janvier where jour = '01' select [12] as debut, [17] as fin from janvier where jour = '01' select [12] as debut, [16] as fin from janvier where jour = '01' select [12] as debut, [15] as fin from janvier where jour = '01' select [12] as debut, [14] as fin from janvier where jour = '01' select [12] as debut, [13] as fin from janvier where jour = '01' select [12] as debut, [12] as fin from janvier where jour = '01'
    Pourtant dans 13, j'ai mis un nom, il aurait normalement dû envoyer une alerte.

    J'édite ici car supplément d'information important :

    J'ai fais un responsse.write(rst2("fin")) et là j'obtiens :

    rst2 vaut
    Aucune valeur dans le rst2...

    Est-ce que tu vois pourquoi il ne l'a pas fait ?

    Merci ta très précieuse aide.

    beegees

  19. #19
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Waaa, déjà deux pages! Et ben...
    Pff chuis paresseux. Je balance mon idée sans lire. On verra bien
    Bon machin veut réserver la salle au mois de mars le jour 4 de 11 à 14H. Comment vérifier?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM [3] WHERE JOUR = 4;
    Je dois donc passer en revue les heures 11, 12 et 13.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    FOR i = hfdebut2 to hffin2
           IF len(rs.fields(i).value) <> 0 THEN%>
                  <script language= "javascript">
                  alert('La salle informatique est déjà réservée, merci de vérifier la disponibilitée') ;
                  </script>
    <%       response.End()
           END IF
    NEXT
    Qu'en penses-tu?
    A+

  20. #20
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour Monsieur le Modérateur

    ça fait longtemps que j'avais plus eu une réponse aussi complète de ta part

    C'est pour rire

    Bon, merci pour ta réponse qui me semble aussi intéressante que celle de PC75.

    Mais, car il y'a un mais, quand tu mets ceci :

    SELECT * FROM [3] WHERE JOUR = 4;
    Je présûme qu'on peut changer le 3 et le 4 par les ['" & hfdebut & "'].... ?

    Je vais le tester dès que j'arrive au boulot et je te dis quoi.

    Une très bonne journée à toi et merci encore.

    beegees

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/05/2009, 14h45
  2. Réponses: 1
    Dernier message: 14/05/2007, 20h35
  3. Réponses: 6
    Dernier message: 27/09/2006, 20h31
  4. Comment savoir si les ScrollBar sont visibles sur un TRichEdit ?
    Par vanquish dans le forum Composants VCL
    Réponses: 2
    Dernier message: 16/10/2003, 11h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo