Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    recupero valore checkbox dinamico

    ciao a tutti.ho un problema un po' complesso e non so se riuscirò a esprimermi bene:
    ho una pagina di visualizzione proprietà (proprietà di che cosa non è importante) che crea delle righe di tabella a seconda dei record del db e a scelta si possono modificare i valori delle proprietà.normalissimo.
    queste proprietà possono essere di tre tipi:testo,menù a tendina e checkbox,e il tipo è specificato da un campo della tabella del db.
    per il tipo testo e menù a tendina non ho problema.
    for each item in request.form me li recupera giusti e riesco anche a inserirli nella maniera corretta nella tabella di cross reference.
    il problema sorge sul checkbox.
    in caso il checkbox non sia spuntato e io lo voglia spuntare allora funziona bene.
    in caso il checkbox sia già spuntato e io voglia togliere la spunta ho dei problemi,perchè quando un checkbox non è spuntato il suo valore non passa.
    se facessi un request.form("nome_check") potrei forzare il valore "" del check a un valore che voglio io,ma visto che qui recupero dinamicamente i valori delle form della pagina precedente,se il checkbox non è spuntato io non lo vedo nemmeno!e quindi non posso forzare un eventuale valore vuoto.
    non so se mi sono spiegato bene...
    qualcuno sa consigliarmi qualcosa?ho provato anche con un javascript ma non ci sono riuscito...
    qualche idea? :master:
    grazie,ciao

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao quake_84,

    nel db il campo checkbox è un boolena? Dovresti verificare se passa sto valore o no, quindi dovresti sapere il nome del chekbox... in alternativa potresti creare un campo hidden per ogni checkbox e valorizzarlo a 1 o 0 a seconda dello stato del chek box

  3. #3
    nel db il campo è un bit,quindi i valori sono 1 per ceccato e 0 per non ceccato.
    ho già provato con gli hidden,ed era il javascript che dicevo,ma non ne sono stato capace...se hai qualcosa di già pronto mi faresti un grosso piacere...
    il nome del checkbox non lo so...o meglio,lo so,il nome è l'id della proprietà.ti faccio vedere lo script con cui recupero i valori così capisci meglio:

    codice:
    dim prop_name(128)
    dim prop_value(128)
    
    for each item in Request.Form
      strTemp = "prop_value(c) = Request.Form(""" & item & """)"
      Execute(strTemp)
      if isNumeric(item) then
        prop_name(c) = item
      end if 
      c = c + 1
    next
    
    sqlprop = "SELECT I_Props.ID_Properties FROM I_Props WHERE I_Props.ID_Item=" & id & ""
    set rs = conn.execute(sqlprop)
    
    do while not rs.EOF
      
      idproperties = rs("ID_Properties")
    
      set rsprop = Server.CreateObject("ADODB.Recordset")
      sql = "SELECT * FROM I_Properties WHERE ID=" & idproperties & ""
      rsprop.Open sql, conn, 1, 3
      nameproperties = rsprop("Name")
      rsprop.close
     
      set rs2 = Server.CreateObject("ADODB.Recordset")
      for i = LBound(prop_name) to UBound(prop_name)        
        
          if CInt(prop_name(i)) = CInt(idproperties) AND len(prop_name(i)) <> 0 then
       
          valore_curr = prop_value(i)
          prop_curr = prop_name(i)
          
          Response.Write "" & ("Nome Proprietà: ") & "" & nameproperties & "
    "
          Response.Write "" & ("Valore: ") & "" & valore_curr & "
    
    " 
          
          sqlver = "SELECT * FROM I_Properties WHERE ID=" & idproperties & ""
          set rsver = conn.execute(sqlver)
          tipo = rsver("Type")
          rsver.close
          
          if tipo = "check" then
            if valore_curr = "" then
              valore_curr = "OFF" 
            end if
          end if
          
          sql_prop = "Select * FROM I_Props WHERE ID_Properties=" & idproperties & "AND ID_Item=" & id & ""
          rs2.Open sql_prop, conn, 1, 3
    
          rs2("Value") = valore_curr
      
          rs2.update
          
        end if
      next
      
      i = 0
      rs.movenext
    loop
    
    set rs = nothing
    
                                      set rslast = Server.CreateObject("ADODB.Recordset")
                                      prova2 = Split(Session("idcategoria"), ";")
                                      int z
                                      z = UBound(prova2)
                                      h = 0
                                      for h = 0 to UBound(prova2)-1
                                        lastcategory = prova2(h)
                                      next
                                      
                                      if lastcategory <> "" then
                                      sql = "SELECT * FROM Categories WHERE Category = 1 AND Father=" & lastcategory & ""
                                      rslast.Open sql, conn, 1, 3
                                      contcat = 0
                                      do while not rslast.EOF
                                        contcat = contcat + 1
                                        rslast.movenext
                                      loop
                                      rslast.close
                                      
                                      if contcat = 0 then
                                        indirizzo = ("?scelta=" & lastcategory & "")
                                      else
                                        indirizzo = ("?idcategoria=" & lastcategory & "")
                                      end if
                                      end if
    nella riga rossa,se item è numerico allora riempio l'array,ma se item è il mio checkbox non spuntato anche se in realtà sarebbe numerico non passa proprio,e questo lo so di per certo perchè mi sono fatto stampare i valori nell'array.
    con altri tipi di proprietà funziona,con il checkbox c'è questo bug...

    grazie mille comunque per l'interessamento e se riesci a darmi una mano te ne sarei molto grato...

  4. #4
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    hum... secondo me si può risolvere più facilmente lato client con l'hidden per ogni checkbox... come crei i checkbox? posta il codice che vedo se riesco a modificarlo

  5. #5
    codice:
    <%                               
                      set rstabval = Server.CreateObject("ADODB.Recordset")
                      set rsp = Server.CreateObject("ADODB.Recordset")
                      if categoria <> "0" then
                        sqlTot = "SELECT I_properties.ID, I_Properties.Name, I_Props.[Value], I_Props.ID_Item FROM I_Properties INNER JOIN I_Props ON I_Properties.ID = I_Props.ID_Properties INNER JOIN Item ON I_Props.ID_Item = Item.ID WHERE (I_Props.ID_Item = " & itemid & ") AND I_Properties.ID IN (SELECT ID_Properties FROM I_Props)"
                      else
                        sqlTot = "SELECT I_properties.ID, I_Properties.Name, I_Props.[Value], I_Props.ID_Item FROM I_Properties INNER JOIN I_Props ON I_Properties.ID = I_Props.ID_Properties INNER JOIN Item ON I_Props.ID_Item = Item.ID WHERE I_Properties.ID IN (SELECT ID_Properties FROM I_Props)"
                      end if
                      
                      set RsTot = Server.CreateObject("ADODB.Recordset")
                      RsTot.Open sqlTot, conn, 1, 3
                      i = 0
                      do while not RsTot.EOF                   
                        
                        i = i + 1
                        if i MOD 2 = 0 then
                          colour = ("#E4ECFB")
                        else
                          colour = ("#FFFFFF")
                        end if             
                         
                        set rsvaldef = Server.CreateObject("ADODB.Recordset")                
                        nameproperties = RsTot("Name")   '''''''recupero il nome della proprietà usando il recordset vecchio 
                        sqlp = "SELECT * FROM I_Properties WHERE Name='" & nameproperties & "'"
                        set rsvaldef = conn.execute(sqlp)
                                            
                          idproperties = rsvaldef("ID")
                          mandatorio = rsvaldef("Mandatory") 
                          tipo = rsvaldef("Type") 
                          definito = rsvaldef("Defined_Value")  
                          editable = rsvaldef("Editable") 
                       
                        rsvaldef.close       
                        
                        if definito = true then
                        
                        sqldef = "SELECT * FROM Prop_Value WHERE ID_Properties=" & idproperties & "AND Table_Name='I_Properties'"
                        set rsp = conn.execute(sqldef)
                        do while not rsp.EOF
                          
                          cont = cont + 1
                          valore = rsp("Value")
                            Session("valori") = Session("valori") + valore & ";"
                          
                          rsp.movenext
                        loop
                        
                        end if
                        %>
                    <tr>
                      <td width="30%" bgcolor="<%=colour%>" style="border-left: 1px dotted #D3D3D3; border-right: 1px dotted #D3D3D3" align="left">
                        <font color="#014E82"><%=nameproperties%> </font>
                      </td>
                      <td width="45%" height="13" bgcolor="<%=colour%>" style="border-left: 1px dotted #D3D3D3; border-right: 1px dotted #D3D3D3">
                        <p align="center">
                        <%
                          if tipo = "stringa" then
                          if editable = True OR editable = "" then
                        %>
                        <input type="text" name="<%=idproperties%>" value="<%=RsTot("Value")%>" size="30">
                        <%
                          else
                        %>
                        <input type="text" name="<%=idproperties%>" value="<%=RsTot("Value")%>" size="30" disabled>
                        <%
                          end if
                          end if
                          
                          if tipo = "check" then
                          sqlprop2 = "SELECT * FROM I_Props WHERE ID_Item=" & itemid & "AND ID_Properties=" & idproperties & ""
                          set rstabval = conn.execute(sqlprop2)
                          table_value = rstabval("Value")
                          if table_value="ON" then
                            ck = "checked"
                          else
                            ck = ""
                          end if
                          if editable = True then
                        %>
                        <INPUT TYPE="checkbox" NAME="<%=idproperties%>" VALUE="ON" <%=ck%> onClick="verify(checkbox.value, <%=idproperties%>)">                    
                        <script language="javascript">
                        function verify(value, nome) {
    
                        if value == "ON" {
                        value = "OFF"   
                        } else {
                        value = "ON"
                        }
    
                        nome.value = value  
                        }
                        </script>
                        <%
                          else
                        %>
                        <input type="checkbox" name="<%=idproperties%>" value="ON" <%=ck%> disabled>                     <% 
                          end if
                          end if
                          if tipo = "menu" then
                          if definito = true then
                          valori = split(Session("valori"), ";")
                          c = UBound(valori)
                          redim ciccio(c)
                          k = 0
                        %>
                        <%
                          if editable = True then
                            ed = ""
                          else
                            ed = "disabled"
                          end if
                        %>
                        <select name="<%=idproperties%>" <%=ed%>>
                        <%
                          sqlprop2 = "SELECT * FROM I_Props WHERE ID_Item=" & itemid & "AND ID_Properties=" & idproperties & ""
                          set rstabval = conn.execute(sqlprop2)
                          table_value = rstabval("Value")
                          if mandatorio = False AND table_value = "" then
                        %>
                        <option></option>
                        <%
                          end if           
                          if table_value <> "" then
                        %>
                        <option value="<%=table_value%>"><%=table_value%></option>
                        <option></option>
                        <%
                          end if
                          
                          for k=0 to UBound(valori)-1
                          finale = valori(k)
                        %>
                        <option value="<%=finale%>"><%=finale%></option>
                        <%  
                          next
                        %>
                        </select>
                        <%
                          end if
                          end if
                        %>
                        </td>
                      <td width="13%" height="13" bgcolor="<%=colour%>" style="border-left: 1px dotted #D3D3D3; border-right: 1px dotted #D3D3D3" align="center">
                      <%
                        if mandatorio = true then
                      %>
                      <p align="center">
                      [img]../images/xyes.gif[/img]
                      <%
                        else
                      %>
                      [img]../images/xno.gif[/img]
                      <%
                        end if
                      %>
                      </td>
                      <td width="12%" height="13" bgcolor="<%=colour%>" style="border-left: 1px dotted #D3D3D3; border-right: 1px dotted #D3D3D3" align="center">
                      <%
                        if editable = true then
                      %>
                      [img]../images/xyes.gif[/img]
                      <%
                        else
                      %>
                      [img]../images/xno.gif[/img]
                      <%
                        end if
                      %>
                      </td>
                    </tr>
                    <%      
                        Session("valori") = ""          
                        RsTot.movenext  
                      loop                     
                    %>
                    <tr>
    la parte che ci interessa è quella in rosso...io c'ho provato così,che penso sia più o meno quello che dici tu.
    in parole il codice controlla il tipo di proprietà (variabile tipo) se è uguale a "check" ed è editabile allora mi da un checkbox normale,altrimenti uno uguale tranne che disabled.
    è un po' un casino fartelo vedere così ma era l'unico modo per fartelo capire bene (penso...e spero...)
    se ci riesci diventi il mio idolo...grazie mille,chiedimi pure qualsiasi dubbio hai sul codice

  6. #6
    up...

  7. #7
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    scusa ma sono parecchio incasinato oggi

    ti butto li una soluzione che secondo me potrebbe andare
    codice:
    if tipo = "check" then
    	sqlprop2 = "SELECT * FROM I_Props WHERE ID_Item=" & itemid & "AND ID_Properties=" & idproperties & ""
    	set rstabval = conn.execute(sqlprop2)
    	table_value = rstabval("Value")
    	if table_value="ON" then
    		ck = "checked"
    		valore="1"
    	else
    		ck = ""
    		valore="0"
    	end if
    	if editable = True then
    		disabled=""
    	else
    		disabled=" disabled"
    	end if
    %>
    <INPUT TYPE="checkbox" NAME="c<%=idproperties%>" VALUE="ON" <%=ck%> onClick="this.form.elements['<%=idproperties%>'].value=(this.checked)?1:0"<%=disabled%>>
    <input type="hidden" name="<%=idproperties%>" value="<%=valore%>"><%
    end if

  8. #8
    grazie mille,provo...

  9. #9
    ehm,ci sarebbe qualche problemino...tipo:se ci sono due checkbox e io tolgo il valore solo a uno automaticamente toglie il valore anche all'altro..
    però il valore lo toglie,e quindi già è un passo avanti...solo che adesso se voglio spuntare il checkbox non me lo fa più fare...
    però,ripeto,già è un enorme passo avanti...
    non capisco però perchè li toglie entrambi i valori anche se io ne ho spuntato solo uno...

  10. #10
    no,non è vero neanche che lo cambia il valore...adesso non cambia nemmeno se quando non è spuntato tento di spuntarlo...

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 © 2026 vBulletin Solutions, Inc. All rights reserved.