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 :

Balise "<?" ou javascript côté serveur.


Sujet :

ASP

  1. #21
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Ben j'en pense que ça risque pas de marcher :
    entre autres, la fonction FctRazSelect, ou FctRempliSecondSelect, qui utilisent allègrement l'objet document, (qui est fourni par le navigateur), dans un script ASP (donc indépendamment du navigateur), ou mieux, l'objet document (client) et Response(Serveur) dans la même fonction. Il faut absolument distinguer les traitements clients et serveur, bien assimiler le fait que ces deux programmes (susnommés "client" et "serveur") tournent sur 2 machines différentes, même si en formation ou en développement, on utilise la plupart du temps une seule et même machine pour les deux.

    Il n'y a pas d'interaction entre le traitement serveur et la page.


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  2. #22
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Salut,

    Merci de ta réponse. Ah mince. Oui c'est vrai que dans le principe j'ai bien saisi le concept de la programmation Web côté client et côté serveur, mais effectivement je n'ai pas encore trop le compas dans l'oeuil pour savoir quel objet appartient à l'un ou à l'autre...

    Comment est-ce que tu pourrais le corriger pour que ça marche s'il te plait ?

    Par avance je te remercies.

    Marco.

  3. #23
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    522
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 522
    Points : 522
    Points
    522
    Par défaut
    Ma réponse, comme roro

    Javascript et ASP sont totalement mélangés.

    Par exemple, dans une de tes fonctions ASP, on retrouve ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var IntLongueur=document.formu.elements[StrListe].length;
    document est un objet Javascript et ne sera donc pas reconnu par le serveur. Y'a un mélange des genres.

  4. #24
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Si tu commences à lui parler d'objet javascript, notre ami, vu le contexte, va être complètement déboussolé . Précisons plutôt :

    document est un objet du navigateur (donc client)


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  5. #25
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    522
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 522
    Points : 522
    Points
    522
    Par défaut
    Citation Envoyé par cotmar Voir le message
    Comment est-ce que tu pourrais le corriger pour que ça marche s'il te plait ?
    Pour t'aider, il faudrait d'abord comprendre ce que tu souhaites faire sur ta page. Le code est bien commenté c'est bien (trop peut-être ?), mais ça reste assez dur à comprendre.

    Tu veux faire quoi ? Une liste SELECT initialisée à partir d'une base ?

    Commence par un petit bout de code qui fonctionne et ajouter progressivement de la complexité.

  6. #26
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Salut,

    Alors en fait je souhaite à partir d'une première combobox, créer dynamiquement une seconde qui se rempli en fonction du choix qui est fait dans la première...

    Ca c'est une chose, maintenant, comme vous l'avez sans doute remarqué, la première combo est remplie par une requête et la seconde va se remplir dynamiquement grace à une seconde requête (dont le paramètre est l'élément sélectionné dans la première combo).

    J'espère être assez clair.

    Après queleues petites modification, voici mon code-source :

    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
     
     
     
     
    <%@  Language=JavaScript %>
    <%Response.Expires=0;%>
    <!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>
        <title>V&eacute;rifier les saisies de formulaire</title>
    </head>
     
    <body>
     
        <h1>Sélection des secteurs</h1>
     
        <form 
            name="FrmSelection"
            method=post
        >
    <!--#INCLUDE VIRTUAL="/FFV/Includes/Connect.asp"-->
    <!--#INCLUDE VIRTUAL="/FFV/Includes/http.asp"-->
     
    <script>
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Fonction              :   FctRempliSecondSelect
    //Objet                 :   remplissage de la seconde combo
    //Type                  :   Client/Interface
    //Paramètres            :
    //  - StrListe          :   Nom de la combo à remplir
    //  - StrLibelle        :   Libellé de l'élément à remettre à zéro
    //Retourne              :   Néant
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    function FctRempliSecondSelect(StrListe, StrChoix){
        FctRazSelect(StrListe);
        document.FrmSelection.elements[StrListe].options[IntCpt]=StrChoix;
     
        for (IntCpt=0; IntCpt<ville[StrChoix].length; IntCpt++){
           new_option = new Option(document.FrmSelection.elements[StrListe][StrChoix][IntCpt][1],document.FrmSelection.elements[StrListe][StrChoix][IntCpt][0]);
           document.FrmSelection.elements[StrListe].options[document.FrmSelection.elements[StrListe].length]=new_option;
        }
    }
     
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Fonction              :   FctRazSelect
    //Objet                 :   Vide la combo sélectionnée 
    //Type                  :   Client/Interface
    //Paramètres            :
    //  - StrLibelle        :   Libellé de l'élément à remettre à zéro
    //Retourne              :   Néant
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    function FctRazSelect(StrLibelle){
    var IntLongueur=document.formu.elements[StrListe].length;
        Response.Write("Test : StrLibelle=" + StrLibelle + "<br>");    
     
        for (IntCpt=IntLongueur; IntCpt>=0; IntCpt--)
            document.FrmSelection.elements[StrListe].options[IntCpt]=null;
    }
    </script>
     
    <%
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Fonction              :   FctChargeRequeteEnTableau
    //Objet                 :   Création d'un tableau dynamique 
    //Type                  :   Serveur (Base de données/HTML)
    //Paramètres            :
    //  - StrSql1           :   Chaîne SQL
    //  - StrFl             :   Profil
    //  - StrFv             :   Champs visible (affiché)
    //  - StrFi             :   Champs invisibles (index)
    //  - ArrResultat       :   Tableau contenant les valeurs à afficher
    //Retourne              :   Le tableau contenant les valeurs renvoyées par la requête
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    function FctChargeRequeteEnTableau(StrSql1, StrFl, StrFv, StrFi){
    var rs = ExecuteSqlServer_Client(StrFl, StrSql1);
    var IntCpt=0;
    var ArrResultat=new Array;
     
        while (!rs.BOF && !rs.EOF)
        {
            IntCpt++;
            ArrResultat[IntCpt] = new Array;
            ArrResultat[IntCpt] = new Array(rs.Fields(StrFi), rs.Fields(StrFv));
            rs.MoveNext();        
        }
        return ArrResultat;
        rs.close();  
    }
     
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Fonction              :   FctRemplirCombo
    //Objet                 :   Création d'une combo dynamiquement 
    //Type                  :   Serveur (Base de données/HTML)
    //Paramètres            :
    //  - StrId             :   Identifiant de la combo
    //  - StrSql1           :   Chaîne SQL
    //  - StrFl             :   Profil
    //  - StrFv             :   Champs visible (affiché)
    //  - StrFi             :   Champs invisibles (index)
    //  - StrDefaultValue   :   Valeur par défaut
    //Retourne              :   Chaîne HTML de création de la combo
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    function FctRemplirCombo(StrId, StrSql1, StrFl, StrFv, StrFi, StrDefaultValue)
    {
    var StrHtml='<select id="' + StrId + '" name="' + StrId + '" onchange="FrmSelection.submit()";>';
    var rs = ExecuteSqlServer_Client(StrFl, StrSql1);
     
        while (!rs.BOF && !rs.EOF)
        {
            StrHtml += '<option value= "' + rs.Fields(StrFi) + '">' + rs.Fields(StrFv);
            if (String(rs.fields(StrFv))==StrDefaultValue) StrHtml+=" Selected";
            StrHtml+=' </option>';
    	    rs.MoveNext();
        }
        StrHtml+='</select>';    	
        rs.close();
        Response.Write(StrHtml);
    }
     
    TestEnveloppeHTTP();
    %>
     
    <%
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Fonction      :   main
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
        var StrSQL ="SELECT [SECTEUR_CODE], [SECTEUR_LIBELLE] FROM [SECTEUR] WHERE SECTEUR_CODE !='?'";
        var ArrCol = new Array();
     
    //-> Je remplis la combo "appelante"
        FctRemplirCombo("CboSecteurCode", StrSQL, "FFV_IIS_SPORT", "SECTEUR_LIBELLE", "SECTEUR_CODE", String(Request.Form("CboSecteurCode")));
    //  - StrId             :   Identifiant de la combo
    //  - StrSql1           :   Chaîne SQL
    //  - StrFl             :   Profil
    //  - StrFv             :   Champs visible (affiché)
    //  - StrFi             :   Champs invisibles (index)
    //  - StrDefaultValue   :   Valeur par défaut
    //    Response.Write("Test : CboSecteurCode=" + Request.Form("CboSecteurCode") + "<br>");    
        StrSQL ="SELECT [CODE_BATEAU], [CODE_BATEAU_LIBELL] FROM [CODE_BATEAU] WHERE [SECTEUR_CODE]='" + String(Request.Form('CboSecteurCode')) + "'";
     
    //-> Je lance la requête pour récupérer le contenu de la seconde combo 
        ArrResultat = FctChargeRequeteEnTableau(StrSQL, "FFV_IIS_SPORT", "CODE_BATEAU_LIBELL", "CODE_BATEAU");
        Response.Write("Test : StrSQL=" + StrSQL + "<br>");    
    //  - StrSql1           :   Chaîne SQL
    //  - StrFl             :   Profil
    //  - StrFv             :   Champs visible (affiché)
    //  - StrFi             :   Champs invisibles (index)
    //  - ArrResultat       :   Tableau contenant les valeurs à afficher
    //Retourne              :   Le tableau contenant les valeurs renvoyées par la requête
     
    //-> Je crée dynamiquement la seconde combo
        FctRemplirCombo("CboBateau", StrSQL, "FFV_IIS_SPORT", "CODE_BATEAU_LIBELL", "CODE_BATEAU", String(Request.Form("CboSecteurCode")));
    //-> Je remplis la seconde combo
    //-> Je remplis la combo "appelante"
        FctRempliSecondSelect("CboBateau", String(Request.Form('CboSecteurCode')));
    //  - StrListe          :   Nom de la combo à remplir
    //  - StrChoix          :   Libellé de l'élément sélectionné
     
    %>
     
        <input id="Submit1" name="Submit1" type="submit" value="submit" />  
      </form>
    </body>
     
    </html>

    J'ai l'erreur suivante :


    Erreur d'exécution Microsoft JScript error '800a138f'

    Objet attendu

    /FFV/ZTests/EssaiTextboxDynamique/Combo2Combos.asp, line 152


    Par avance merci.

    Marco.

  7. #27
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    je pense avoir trouvé ce qui n'allait pas. je pense qu'à force d'essayer différents trucs, j'ai bien dû m'emmêler un peut les pinceaux.

    Le code corrigé supprime les fonctions entre les balises scripts (et bien sûr les appels correspondants).

    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
     
     
    <%@  Language=JavaScript %>
    <%Response.Expires=0;%>
    <!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>
        <title>V&eacute;rifier les saisies de formulaire</title>
    </head>
     
    <body>
     
        <h1>Sélection des secteurs</h1>
     
        <form 
            name="FrmSelection"
            method=post
        >
    <!--#INCLUDE VIRTUAL="/FFV/Includes/Connect.asp"-->
    <!--#INCLUDE VIRTUAL="/FFV/Includes/http.asp"-->
     
    <%
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Fonction              :   FctChargeRequeteEnTableau
    //Objet                 :   Création d'un tableau dynamique 
    //Type                  :   Serveur (Base de données/HTML)
    //Paramètres            :
    //  - StrSql1           :   Chaîne SQL
    //  - StrFl             :   Profil
    //  - StrFv             :   Champs visible (affiché)
    //  - StrFi             :   Champs invisibles (index)
    //  - ArrResultat       :   Tableau contenant les valeurs à afficher
    //Retourne              :   Le tableau contenant les valeurs renvoyées par la requête
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    function FctChargeRequeteEnTableau(StrSql1, StrFl, StrFv, StrFi){
    var rs = ExecuteSqlServer_Client(StrFl, StrSql1);
    var IntCpt=0;
    var ArrResultat=new Array;
     
        while (!rs.BOF && !rs.EOF)
        {
            IntCpt++;
            ArrResultat[IntCpt] = new Array;
            ArrResultat[IntCpt] = new Array(rs.Fields(StrFi), rs.Fields(StrFv));
            rs.MoveNext();        
        }
        return ArrResultat;
        rs.close();  
    }
     
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Fonction              :   FctRemplirCombo
    //Objet                 :   Création d'une combo dynamiquement 
    //Type                  :   Serveur (Base de données/HTML)
    //Paramètres            :
    //  - StrId             :   Identifiant de la combo
    //  - StrSql1           :   Chaîne SQL
    //  - StrFl             :   Profil
    //  - StrFv             :   Champs visible (affiché)
    //  - StrFi             :   Champs invisibles (index)
    //  - StrDefaultValue   :   Valeur par défaut
    //Retourne              :   Chaîne HTML de création de la combo
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    function FctRemplirCombo(StrId, StrSql1, StrFl, StrFv, StrFi, StrDefaultValue)
    {
    var StrHtml='<select id="' + StrId + '" name="' + StrId + '" onchange="FrmSelection.submit()";>';
    var rs = ExecuteSqlServer_Client(StrFl, StrSql1);
     
        while (!rs.BOF && !rs.EOF)
        {
            StrHtml += '<option value= "' + rs.Fields(StrFi) + '">' + rs.Fields(StrFv);
            if (String(rs.fields(StrFv))==StrDefaultValue) StrHtml+=" Selected";
            StrHtml+=' </option>';
    	    rs.MoveNext();
        }
        StrHtml+='</select>';    	
        rs.close();
        Response.Write(StrHtml);
    }
     
    TestEnveloppeHTTP();
    %>
     
    <%
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Fonction      :   main
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
        var StrSQL ="SELECT [SECTEUR_CODE], [SECTEUR_LIBELLE] FROM [SECTEUR] WHERE SECTEUR_CODE !='?'";
        var ArrCol = new Array();
     
    //-> Je remplis la combo "appelante"
        FctRemplirCombo("CboSecteurCode", StrSQL, "FFV_IIS_SPORT", "SECTEUR_LIBELLE", "SECTEUR_CODE", String(Request.Form("CboSecteurCode")));
    //  - StrId             :   Identifiant de la combo
    //  - StrSql1           :   Chaîne SQL
    //  - StrFl             :   Profil
    //  - StrFv             :   Champs visible (affiché)
    //  - StrFi             :   Champs invisibles (index)
    //  - StrDefaultValue   :   Valeur par défaut
    //    Response.Write("Test : CboSecteurCode=" + Request.Form("CboSecteurCode") + "<br>");    
        StrSQL ="SELECT [CODE_BATEAU], [CODE_BATEAU_LIBELL] FROM [CODE_BATEAU] WHERE [SECTEUR_CODE]='" + String(Request.Form('CboSecteurCode')) + "'";
     
    //-> Je lance la requête pour récupérer le contenu de la seconde combo 
    ////    ArrResultat = FctChargeRequeteEnTableau(StrSQL, "FFV_IIS_SPORT", "CODE_BATEAU_LIBELL", "CODE_BATEAU");
        Response.Write("Test : StrSQL=" + StrSQL + "<br>");    
    //  - StrSql1           :   Chaîne SQL
    //  - StrFl             :   Profil
    //  - StrFv             :   Champs visible (affiché)
    //  - StrFi             :   Champs invisibles (index)
    //  - ArrResultat       :   Tableau contenant les valeurs à afficher
    //Retourne              :   Le tableau contenant les valeurs renvoyées par la requête
     
    %>
     
        <input id="Submit1" name="Submit1" type="submit" value="submit" />  
      </form>
    </body>
     
    </html>
    Maintenant petite question : les fonctions que je viens de supprimer étaient entre balises "<script>...</script>". Faut-il que dans la partie "main" donc au niveau des appels, ce soit aussi entre balise script (cette question me vient maintenant, mais ça peut m'être utile dans un autre développement) ?

    Un autre point c'est que maintenant que cette partie marche, j'aimerais savoir si il est possible de charger autant de combos de second niveu qu'il y a d'option dans la première combo (le premier "select") et de n'afficher que celle qui est sélectionnée dans la première combo ?

    EDIT : Je précise juste que la personne veut que je charge toutes les combos d'un seul coups, de manière à ne plus faire appel au serveur par la suite (d'où la création de toutes les combos en même temps dès le départ).

    Par avance merci.

    Marco.

  8. #28
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    les fonctions que je viens de supprimer étaient entre balises "<script>...</script>". Faut-il que dans la partie "main" donc au niveau des appels, ce soit aussi entre balise script
    'Pouvez répéter la question ?

    je précise juste que la personne veut que je charge toutes les combos d'un seul coups, de manière à ne plus faire appel au serveur par la suite (d'où la création de toutes les combos en même temps dès le départ)
    Que ne le disais-tu plus tôt ?

    Il s'agit donc, si je comprends bien, de pouvoir alimenter une liste déroulante (j'aime pas beaucoup le mot "combo" ) à partir de la sélection dans une autre ? Genre je choisis "Peugeot" dans la première, et la deuxième me donne le choix entre "207", "307", "404" ... ?

    C'est un classique, mais ce n'est pas ASP qui va te permettre de le faire, mais plutot javascript (coté client donc, si tu as suivi). Il faut savoir qu'a partir du moment où tes select se sont affichés à l'écran, la script asp, là bas, sur le serveur qui est peut-être à l'autre bout du monde, a terminé sa tâche (Je schématise, mais c'est çà). Dés lors, tout se passe sur le navigateur du client. c'est donc javascript qui prends le relais, ASP ayant "préparé" le travail. Comment ?

    Voici un bout de 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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    <script language="JavaScript" type="text/JavaScript">
    var mod=new Array();
    mod[1]=new Array("Alcatel 1", "Alcatel 2");
    mod[2]=new Array("LG 1", "LG 2");
    mod[3]=new Array("Maxon 1", "maxon 2");
    mod[4]=new Array("Nec 1", "nec 2");
    mod[5]=new Array("Nokia 1", "Nokia 2");
    mod[6]=new Array("Panasonic 1", "Panasonic 2");
    // etc...
     
     
    /**
    * mise a jour du select "selectmodele" à partir de la selection de "selectmarque"
    */
    function updateMod()
        {
    // une variable
        var newOpt;
    // récupération de la marque du téléphone
        var cl_=document.getElementById("selectmarque").value;
     
     
        clearMod(); // Voir plus bas
    // Définition d'une nouvelle option, cf la doc de javascript client
        newOpt=new Option("<modele>", 0);
    // ajout de l'option au select "selectmodele"
        document.getElementById("selectmodele").options[0]=newOpt;
     
    // ajout des options du tableaux correspondant dans "selectmodele"
        if (cl_!=0)
            {
            for (i_=0; i_<mod[cl_].length; i_++)
                {
                newOpt=new Option(mod[cl_][i_], mod[cl_][i_]);
                document.getElementById("selectmodele").options[document.getElementById("selectmodele").length]=newOpt;
                }
            }
        }
     
    /**
    * "vidage" du "selectmodele"
    */
    function clearMod()
        {
     
        while (document.getElementById("selectmodele").options.length>0)
            document.getElementById("selectmodele").options[document.getElementById("selectmodele").options.length-1]=null;
        }
     
    </script>
    </head>
     
    <body>
    <FORM name="frm" method="POST">
    <select id="selectmarque" onchange="updateMod()">
    <option value="0" selected><Marque></option>
    <option value="1">Alcatel</option>
    <option value="2">LG</option>
    <option value="3">Maxon</option>
    <option value="4">Nec</option>
    <option value="5">Nokia</option>
    <option value="6">Panasonic</option>
    </select>
     
    <select id="selectmodele" >
    </select>
     
    </FORM>
    Il n'y a que du HTML, et du javascript client, pas d'ASP. Si tu copie ça dans un fichier texte que tu appelle "test.htm", et que tu lances ça dans un navigateur, ça devrait répondre à tes attentes. (Il existe d'autres manières de le faire, évidemment, notamment en utilisant AJAX, mais cela sortirait du cahier des charges, puisque
    de manière à ne plus faire appel au serveur par la suite
    le role d'ASP, ici va être de générer les tableaux ici :
    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
    mod[1]=new Array("Alcatel 1", "Alcatel 2");
    mod[2]=new Array("LG 1", "LG 2");
    mod[3]=new Array("Maxon 1", "maxon 2");
    mod[4]=new Array("Nec 1", "nec 2");
    mod[5]=new Array("Nokia 1", "Nokia 2");
    mod[6]=new Array("Panasonic 1", "Panasonic 2");
     
     
     
    et : 
     
    <option value="0" selected>&lt;Marque&gt;</option>
    <option value="1">Alcatel</option>
    <option value="2">LG</option>
    <option value="3">Maxon</option>
    <option value="4">Nec</option>
    <option value="5">Nokia</option>
    <option value="6">Panasonic</option>
    Je te laisses méditer ça, en fonction de l'endroit d'où viennent tes données. Un truc : il est tout à fait possible de mélanger du code ASP et du javascript, dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <script language="javascript">
    var a=new Array();
    <%
    for (var i=0; i<10; i++)
    {
    %>
    a[<%= i %>] = <%= i %>;
    <%
    }
    %>
    </script>
    Execute çà et regarde la source de la page générée.


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  9. #29
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonjour,

    Merci de ta réponse Roro. C'est effectivement ce que je voulais savoir

    Je n'ai pas dis celà plus tôt dans la mesure où je voulais "commencer doucement" dans la question et la complexifier au fur et à mesure.

    J'appelle ça des "combos" car à la base, je suis plutôt un développeur VB et plus récemment VBA.

    Ce sont effectivement des objets HTML de type "select" en l'occurence en monosélection.

    L'environnement est caractérisé par les éléments suivants : de l'ASP un serveur IIS et configuré pour travailler en Javascript côté client ET côté serveur... J'insiste sur ce point, même si ça paraît un peut incongru (en tous les cas, un syntaxe de type Javascript).

    J'ai trouvé des choses sur ce point dans un livre qu'ils avaient de Wrox/Eyrolles concernant Javascript très intéressant. En fait c'est le collègue qui me l'a indiqué. J'avoue être encore assez troublé par l'emploi de Javascript côté serveur mais bon.

    Ceci dit tes indications sont très intéressantes. Le boulot s'est terminé hier mais j'avoues que compte tenu de tout ce que j'ai découvert, je vais essayer de continuer à essayer tout ça

    L'idée que j'ai en tête est de me faire un CV en ligne avec une interface type "dynamique" en fonction des langages, des contextes (fonctionnels) des années...

    Tu penses que l'on peut faire ça en Javascript/DHTML ?

    Verrais tu une autre idée pour développer un petit site dynamique ?

    EDIT : Je viens d'aller voir du coté de la discussion sur Javascript et en fait c'est pas tout à fait ça : la personne voulait que je créé autant de "select" qu'il y a d'options dans un premier select. Les select de second niveau (si on peut les appeler ainsi), sont cachées et n'apparaissent que en fonction de la sélection qui est faite dans le premier... De cette manière, les accès à la base sont tous faits au début pour remplir tous les select et on n'a plus besoin d'y revenir. Tu vois ce que je veux dire ?

    Par avance merci.

    Marco.

  10. #30
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    L'environnement est caractérisé par les éléments suivants : de l'ASP un serveur IIS et configuré pour travailler en Javascript côté client ET côté serveur... J'insiste sur ce point, même si ça paraît un peut incongru (en tous les cas, un syntaxe de type Javascript).
    Pour l'info, j'ai arrété tout nouveau developpement en vbscript au profit du javascript. donc tu vois ...

    Je viens d'aller voir du coté de la discussion sur Javascript et en fait c'est pas tout à fait ça : la personne voulait que je créé autant de "select" qu'il y a d'options dans un premier select. Les select de second niveau (si on peut les appeler ainsi), sont cachées et n'apparaissent que en fonction de la sélection qui est faite dans le premier... De cette manière, les accès à la base sont tous faits au début pour remplir tous les select et on n'a plus besoin d'y revenir. Tu vois ce que je veux dire ?
    Dans ce cas, le "mécanisme" sera géré en javascript sur le navigateur ( ou DHTML, j'ai jamais trop fait le distingo entre les deux). Vois plutot du côté des tutos javascript et du forum adapté. ASP, ici, se contentera de générer les "combos" , je suppose à partir d'une base de données. Si tu débutes dans le développement web, je pense que ça fait un excellent exercice.


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  11. #31
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonjour Roro,

    Je te remercies de toutes ces informations. Au besoin, je repasserais pour poster d'autres questions. Dis moi sinon, existe t-il un environnement de développement gratuit en ASP (qui couvre la configuration que je te citais plus ahut) pour que je puisse me former depuis chez moi s'il te plait ?

    Par avance merci.

    Marco.

  12. #32
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Bonjour

    Il n'y a malheureusement pas ou peu d'IDE pour ASP, d'autant que c'est un technologie abandonnée par son créateur (Microsoft).

    Regarde quand-même :

    http://hapedit.free.fr/index.php


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  13. #33
    Poumtschak
    Invité(e)
    Par défaut
    Un IDE ? Quelle horreur !

    Perso, je bricole mon ASP avec un éditeur à coloration syntaxique classique, en l'occurrence la v0.97.3 de Context, qui a la particularité de bien mettre en évidence le code délimité par les balises <% et %> par « surlignage » du bloc entier. Plus facile pour s'y retrouver dans une page surchargée.

    Avec la doc VBScript pour la syntaxe et un bouquin couvrant bien les bases de l'ASP3, on se passe allègrement de la complétion automatique de code. Le nombre d'instructions est quand même suffisamment limité pour qu'on apprenne très vite de ses erreurs, plutôt que d'être dépendant des béquilles d'un IDE.

    Avant de focaliser sur les outils, ne pas oublier de bons bouquins de vulgarisation sur le HTML/CSS, Javascript, le DOM, etc. puisqu'après tout in fine le but est de programmer des navigateurs web.

    D'ailleurs, j'ai remarqué qu'il m'est souvent plus profitable de lire un ouvrage à tête reposée, plutôt que de foncer tête baissée pour chercher compulsivement sur internet la solution au premier problème rencontré en codant (ce qui semble être le sport national sur ces forums ).

    Pour l'avoir expérimenté depuis quelques années, on peut certes faire du copier/coller de code récupéré à droite et à gauche et l'adapter façon créature de Frankenstein, mais le résultat est toujours plus satisfaisant quand on comprend - ne serait-ce qu'un peu - ce que l'on a fait.

    Mes 0.02€.
    Dernière modification par Poumtschak ; 17/03/2009 à 17h36.

  14. #34
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonsoir,

    Merci pour ces réponses roro et Poumtschak.

    De mon côté, j'en avais trouvé un pas mal qui s'appelle PsPad et qui est gratuit...

    Je vais regarder celui dont tu mer parles Poumtschak.

    A bientôt.

    Marco.

  15. #35
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 112
    Points : 112
    Points
    112
    Par défaut
    Citation Envoyé par Poumtschak Voir le message
    D'ailleurs, j'ai remarqué qu'il m'est souvent plus profitable de lire un ouvrage à tête reposée, plutôt que de foncer tête baissée pour chercher compulsivement sur internet la solution au premier problème rencontré en codant (ce qui semble être le sport national sur ces forums ).

    Pour l'avoir expérimenté depuis quelques années, on peut certes faire du copier/coller de code récupéré à droite et à gauche et l'adapter façon créature de Frankenstein, mais le résultat est toujours plus satisfaisant quand on comprend - ne serait-ce qu'un peu - ce que l'on a fait.

    Mes 0.02€.
    Houla que c'est vrai tout ça !
    Je me marre toujours quand j'entends des dev prier leur machine pour que ça marche :
    Juste avant le F5, les mains jointes => "Allez ! Fais-moi plaisir ! Fais que ça marche"

    Rien ne vaut la compréhension, même si ça parait un peu plus long au début : que de temps et d'énergie gagnée (et terminées les prières au dieu de la chance !)

    Ne me parlez pas d'Eclipse (php certes), une horreur ! On râlait fut un temps sur la lourdeur de Frontpage et aujourd'hui "on" se pâme devant ce machin ? Comme quoi...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Balise "<?" ou javascript côté serveur.
    Par cotmar dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 26/12/2008, 17h28

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