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 :

2 combos en ASP l'une initialisée selon la 1ere [Fait]


Sujet :

ASP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 16
    Points : 10
    Points
    10
    Par défaut 2 combos en ASP l'une initialisée selon la 1ere
    Bonjour tt le monde.
    En fait, j'ai essayé d'utiliser le code disponible pour faire, en ASP, un formulaire avec 2 combos box dont la 2ème est initialisée selon la sélection effectuée dans la première.
    Mon problème est que le 2ème combo est tjrs vide même si je change de selection dans le 1er: ce qui ne correspond pas à ce que j'ai dans ma base de données. Je pense que le request("Theme") est tjrs vide ?!

    Voici mon code sachant que j'ai deux tables:
    carrier(carrier_id, carrier_name, ...) et
    stat(N, carrier_id, product, ...)
    Bien merci d'avance pour votre aide !!!

    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
     
    <html>
    <head>
    <base target="milieu">
    </head>
    <script language="JavaScript">
    Function Val_Recherche()
    {
    rechercheform.submit();
    }
    </script>
    <%
    Set conn = Server.CreateObject("ADODB.Connection")
    connstring = 'chaine de connection ...
    conn.Open connstring 
    Set Doc_conn = conn
    Dim sql
    Dim NoTheme, NoSousTheme
    if (request("Theme")<>"") then
    NoTheme = cint(request("Theme"))
    else
    NoTheme = 0
    end if
    if (request("SousTheme")<>"") then
    NoSousTheme = cint(request("SousTheme"))
    else
    NoSousTheme = 0
    end if
    Dim rsTheme, rsSousTheme
    Set rsTheme=Server.CreateObject ("ADODB.Recordset")
    rsTheme.Open "carrier", Doc_conn, 1, 2 ,2
    sql = "SELECT distinct [N°], product FROM stat"
    sql = sql & " where carrier_id = " '& NoTheme
     
    Set rsSousTheme = Doc_conn.Execute (sql)
    %>
    <body leftmargin="0" topmargin="0">
    <form name="rechercheform">
    <table border="0" width="528">
    <tr> 
    <td valign="middle" height="22" width="59">Th&egrave;me</td>
    <td valign="top" height="22" width="191"><font face="Arial" size="1"> 
    <Select size="1" name="Theme" OnChange="rechercheform.target='_self';rechercheform.action='Theme.asp';Val_Recherche();">
    <Option selected value=""></Option>
    <%
    If Not (rsTheme.eof) Then 
    rsTheme.movefirst
    Do While Not(rsTheme.eof)
    If rsTheme.fields("carrier_id")= NoTheme then%>
    <Option value="<%=rsTheme.fields("carrier_id")%>" selected><font face="Arial" size="1"><%=rsTheme.fields("carrier_name")%></font></Option>
    <%else%>
    <Option value="<%=rsTheme.fields("carrier_id")%>"><font face="Arial" size="1"><%=rsTheme.fields("carrier_name")%></font></Option>
    <%end If
    rsTheme.movenext
    Loop
    End If
    rsTheme.close
    Set rsTheme = Nothing
    %>
    </Select>
    </font></td>
    <td valign="middle" height="22" width="82">Sous-th&egrave;me</td>
    <td valign="top" height="22" width="178"><font face="Arial" size="1"> 
    <Select size="1" name="SousTheme">
    <Option selected value=""></Option>
    <%
    If Not (rsSousTheme.eof) Then 
    rsSousTheme.movefirst
    Do While Not(rsSousTheme.eof)
    if rsSousTheme.fields("N°")=NoSousTheme then%>
    <Option value="<%=rsSousTheme.fields("N°")%>" selected><font face="Arial" size="1"><%=rsSousTheme.fields("product")%></font></Option>
    <%else%>
    <Option value="<%=rsSousTheme.fields("N°")%>"><font face="Arial" size="1"><%=rsSousTheme.fields("product")%></font></Option>
    <%end If
    rsSousTheme.movenext
    Loop
    End If
    rsSousTheme.close
    Set rsSousTheme = Nothing
    %>
    </Select>
    </font></td>
    </tr>
    </table>
    <%
    Doc_conn.close
    Set Doc_conn=Nothing
    %>
    </form>
    </body>
    </html>
    Edité par Immobilis : merci de ne pas oublier les balises de code

  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,

    Autant que possible, évite de mettre tout ton code. Essaye d'isoler la partie qui pose pb. Cela montre aussi que tu comprends ton code. As-tu une erreur sur un n° de ligne ?

    Pour faire ce que tu souhaites, il faut utiliser la méthode suivante:
    1 - 1 formulaire qui se soumet sur lui mm
    2 - Une combo liste dont les valeurs vont servir à établir la deuxième liste
    3 - Utiliser la propriété on change de la combo pour soumettre le formulaire la première fois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <form action="lapage.asp" methode="post" name="frm">
           recordset.open "SELECT ..."
                  (creation de la premiere liste)
           recordset.close
           if request.form <> "" then
                  recordset.open "SELECT ... WHERE = " & request.form("")
                         (creation de la deuxieme liste)
                  recordset.close
           end if
    </form>
    Tu vois le genre?
    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    En fait, mon problème est là:
    request("SousTheme") est toujours vide !
    je ne sais pas pourquoi ???
    à vous ?!

  4. #4
    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
    J'ai retravaillé ton code pour le rendre plus lisible (pas besoin de deux recordset ni de deux connections). Regarde bien les modif. Fais un copié collé dans une page vierge et dis moi.
    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
    <html>
    <head>
    </head>
    <%
    Dim sql
    Dim NoTheme, NoSousTheme
    Dim rs
    Set conn = Server.CreateObject("ADODB.Connection")
    Set rs =Server.CreateObject ("ADODB.Recordset")
    connstring = 'chaine de connection ...
    conn.Open connstring 
    if (request("Theme")<>"") then
     NoTheme = cint(request("Theme"))
    else
     NoTheme = 0
    end if
    if (request("SousTheme")<>"") then
     NoSousTheme = cint(request("SousTheme"))
    else
     NoSousTheme = 0
    end if
    %>
    <body leftmargin="0" topmargin="0">
     <form name="rechercheform" action="" method="post" target="_self">
      <table border="0" width="528">
       <tr> 
        <td valign="middle" height="22" width="59">Th&egrave;me</td>
        <td valign="top" height="22" width="191"><font face="Arial" size="1"> 
         <Select size="1" name="Theme" OnChange="Submit(this)">
          <Option selected value=""></Option>
          <%
          rs.Open "carrier", conn
           If Not (rs.eof) Then 
            Do While Not(rs.eof)
             If rs("carrier_id") = NoTheme then%>
              <Option value="<%=rs("carrier_id")%>" selected><font face="Arial" size="1"><%=rs("carrier_name")%></font></Option>
             <%else%>
              <Option value="<%=rs("carrier_id")%>"><font face="Arial" size="1"><%=rs("carrier_name")%></font></Option>
             <%end If
             rs.movenext
            Loop
           End If
          rs.close
          %>
         </Select>
         </font>
        </td>
        <td valign="middle" height="22" width="82">Sous-th&egrave;me</td>
        <td valign="top" height="22" width="178"><font face="Arial" size="1"> 
         <Select size="1" name="SousTheme">
          <Option selected value=""></Option>
          <%
          sql = "SELECT distinct [N°], product FROM stat where carrier_id = " & NoThem
          response.Write(sql & "<br>")
          rs.Open sql, conn, 1, 2 ,2
          If Not (rs.eof) Then 
           Do While Not(rs.eof)
            if rs("N°") = NoSousTheme then%>
             <Option value="<%=rs("N°")%>" selected><%=rs("product")%></Option>
            <%else%>
             <Option value="<%=rs("N°")%>"><%=rs("product")%></Option>
            <%end If
            rs.movenext
           Loop
          End If
          rs.close
          %>
         </Select>
         </font>
        </td>
       </tr>
      </table>
      <%
      Set rs = Nothing
      conn.close
      Set conn = Nothing
      %>
     </form>
    </body>
    </html>
    Je me demande si le pb ne se situe pas sur l'instructionTu utilises des frames?
    Si oui, le mieux serait de les faire en cascade : Theme soumet sur sous-theme qui soumet sur "milieu". Il te faudrait 3 frames.
    En fait je crois que tu essayes de faire trop de choses en mm temps. Si ça plante, tu devrais voir le principe des listes liées sur le forum javascript.
    A+

  5. #5
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    sinon jette un oeil à la FAQ javascript, il y a un tuto à se sujet normalement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplissage d'une ListBox selon affichage dans Combo
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/07/2010, 16h52
  2. [XL-2003] Accéder à une feuille selon choix dans Combo
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 28/05/2009, 17h19
  3. Executer de l'asp dans une fonction java
    Par ober dans le forum ASP
    Réponses: 2
    Dernier message: 03/01/2005, 10h31
  4. ASP rappeller une page
    Par pete007 dans le forum ASP
    Réponses: 2
    Dernier message: 02/04/2004, 16h41
  5. changer couleur d'une "case" selon clique
    Par Jéjé2reims dans le forum MFC
    Réponses: 4
    Dernier message: 05/02/2004, 13h19

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