Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    708

    Stesso recordset utilizzato più volte

    Ciao

    mi date un aiuto sulla logica di questa mia pagina?
    Vorrei utilizzare lo stesso recordset per estrarre dei valori in 3 punti diversi della mia pagina.

    In pratica devo estrarre dalla TabSquadre tutte le squadre che hanno id_torneo uguale a quello che gli passo in Request.Querystring. Fatto questo devo riempire due select option (menù a tendina) con gli stessi valori, ovvero con i nomi delle squadre, che mi aiuteranno a creare gli incontri di un calendario:

    select optin 1: estrae i valori per la squadra 1
    select optin 2: estrae i valori per la squadra 2

    Detto questo il codice che vi propongo sotto non mi estrae i valori nella seconda option. C'è un modo diverso per aprire e chiudere un recordset?

    codice:
    <%
    Dim id_v
    id_v = request.querystring("ID_TORNEO")' è la variabile che recupera il valore dall'url
    %>
    
    <%
    	'Dichiaro il recordset
    	Dim rs
    	'Creo il recordset
    	Set rs = Server.CreateObject("ADODB.Recordset")
    	
    	'Dichiaro la stringa Sql
    	Dim sql
    	
    	'Creo la stringa Sql.
    	sql = "SELECT * from TabSquadre where ID_TORNEO = "&id_v&" "
    	
    	rs.Open sql, cn, 1
    %>
    Qui inserisco un controllo

    codice:
    If not rs.eof Then
    ...poi inserisco la prima select option

    codice:
    <form id="form" method="post">
    <input name="NOME_TORNEO" value="<%=rs("NOME_TORNEO")%>" type="text">
    
    <td>
       <select name="squadra1" id="squadra1" >
          <option value="-"></option>
          
          <% While Not rs.EOF%>
             <option value="<%=rs("ID")%>">
                 <%=rs1("NOME_SQUADRA")%>
              </option>
          <%
              'Vai al prossimo
    	   rs.MoveNext
               Wend
    	%>
       </select>
    </td>
    poi inserisco la seconda

    codice:
    <td>
       <select name="squadra2" id="squadra2" >
          <option value="-"></option>
          
          <% While Not rs.EOF%>
             <option value="<%=rs("ID")%>">
                 <%=rs1("NOME_SQUADRA")%>
              </option>
          <%
              'Vai al prossimo
    	   rs.MoveNext
               Wend
    	%>
       </select>
    </td>
    chiudo form, controllo, recordset e connessione
    codice:
    <%
    
    </form>
    
      End If
    
    	'Chiudo il recordset
    	rs.Close 
    	Set rs = Nothing
    
            'Chiudo la connessione
            cn.Close
            Set cn = Nothing
    %>
    Come posso risolvere utilizzando un recordset solo?

    Utilizzando 3 recordset riesco a valorizzare sia la input che le due option ma non mi pare una cosa corretta utilizzare 3 recordset...o no?

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Invece di stampare direttamente le option crea una stringa e poi usala:
    codice:
    <% 
    str_opt = ""
    While Not rs.EOF
        str_opt = str_opt & "<option value="""&rs("ID")&""">"&rs("NOME_SQUADRA")&"</option>"
        rs.moveNext
    loop
    %>
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    ma rs1 da dove salta fuori?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    708
    rs1

    ... mi son dimenticato di cancellare l'1

    quindi in tutte e 2 le option il campo è così:

    <%=rs("NOME_SQUADRA")%>

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Comunque segui il consiglio di Bruno che mi sembra l'operazione più pulita e corretta
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    708
    Non potete farmi un esempio?

    Ho provato a completare la stringa creando la select option x valorizzarla, ma non riesco a recuperare i valori al suo interno!

    ...scusatemi!

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    708
    Ciao

    se non si fosse ancora capito questa pagina è un inserimento partite per un calendario di calcio.

    Ho inserito in una form 2 select option che recuperano dalla stessa TabSquadre i valori delle squadre per poi inserirle nel db.

    Le select option sono identiche ed hanno questo codice:

    codice:
    <select name="ID_SQUADRA" id="ID_SQUADRA" >
       <option value="-"></option>
       
          <%While Not rs.EOF%>
          
          <option value="<%=rs("ID_SQUADRA")%>-<%=rs("NOME_SQUADRA")%>">
    	   <%=rs("NOME_SQUADRA")%>
          </option>
    
          <%
               'Vai al prossimo
    	   rs.MoveNext
    	   Wend
          %>
    
    </select>
    Il primo problema è che tutte e due le option ricevono gli stessi valori dalla stessa tabella:

    codice:
    sql = "SELECT * from TabSquadre where ID_TORNEO = "&id_v&" "
    detto questo, nelle option recupero 2 valori x ognuna che sono:

    ID_SQUADRA ed NOME_SQUADRA che andranno scritti nel db.

    Questi 2 valori, 2 e x option, li separo con un funzione split:

    codice:
    function dividi(variabile,separatore,posizione) 
            if posizione = 1 then
            	dividi2=split(variabile,separatore)
    			dividi=dividi2(0)
    			if dividi=""then
    			dividi=0
    			end if		
    		end if
    		if posizione = 2 then
            	dividi2=split(variabile,separatore)
    			dividi=dividi2(1)	
    		end if
    		if posizione = 3 then
            	dividi2=split(variabile,separatore)
    			dividi=dividi2(2)		
    		end if
    		if posizione = 4 then
            	dividi2=split(variabile,separatore)
    			dividi=dividi2(3)		
    		end if
    end function
    Poi mi creo le variabili per l'inserimento:

    codice:
    'Select Option Squadra_1
    id_squadra_1=dividi(request.form("ID_SQUADRA"),"-",1) 'Numerico che proviene select
    nome_squadra_1=dividi(replace(request.form("ID_SQUADRA"), "'", "''"), "-",2)'Testo che proviene select
    
    'Select Option Squadra_2
    id_squadra_2=dividi(request.form("ID_SQUADRA"),"-",3) 'Numerico che proviene select
    nome_squadra_2=dividi(replace(request.form("ID_SQUADRA"), "'", "''"), "-",4)'Testo che proviene select
    ...il secondo problema si presenta al momento dell'inserimento nel db xchè ottengo questo errore:

    codice:
    * Campo obbligatorio
    Microsoft VBScript runtime error '800a0009'
    Subscript out of range: '[number: 2]'
    ...secondo me xchè il codice che ho creato confonde i valori che provengono dalle 2 option.

    Il codice di inserimento è questo:

    codice:
    sql_calendario = "INSERT INTO TabCalendario (NOME_TORNEO, ID_TORNEO, DATA, ORA, NUM_GIORNATA, FASE, GIRONE, ID_SQUADRA_1, NOME_SQUADRA_1, ID_SQUADRA_2, NOME_SQUADRA_2) Values ('"&nome_torneo&"', "&id_v&","
    
    if giorno="" OR mese="" OR anno="" then
     sql_calendario = sql_calendario&"null,"
    else
     sql_calendario = sql_calendario&"#"&data&"#,"
    End if
    
    sql_calendario=sql_calendario&"#"&ora&"#,"&num_giornata&",'"&fase&"','"&girone&"',"&id_squadra_1&",'"&nome_squadra_1&"',"&id_squadra_2&",'"&nome_squadra_2&"')"
    Vi garantisco che il codice funziona con option che ricevono valori da tabelle diverse anche con il recupero di 4 valori contemporaneamente!

    Spero possiate aiutarmi!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.