Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Ovviare form nel form

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630

    Ovviare form nel form

    Salve,
    dovrei avere la possibilità di inserire un campo select con invio valore a alta pagina per aggiornare valore nel db, però questo si trova già all'interno di un form, come possio ovviare o utilizzare altro per poter recuperare questo dato dalla select senza modificare il form base?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592
    presumo debba chiamare uno script Javascript lato client per fare una chiamata Ajax a un subprogram sul server per allineare il valore della select nel DB... ... immagino anche se non ho ben capito cosa vuoi intendere ..
    Se ti spieghi meglio...
    ciao
    Vic53

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630
    Ho un form, nel suo interno devo mettere una select con un tasto per richiamare una pagina esterna per aggiornare un db con il solo valore selezionato della select, qui dovrei mettere un form all'interno del form principale perchè devo passare il valore della select, io chiedevo se c'è un alternativa (anche in altri linguaggi) che mi permetta di passare questo dato ricavato dalla select, grazie

  4. #4
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592
    Quote Originariamente inviata da djjunior Visualizza il messaggio
    Ho un form, nel suo interno devo mettere una select con un tasto per richiamare una pagina esterna per aggiornare un db con il solo valore selezionato della select, qui dovrei mettere un form all'interno del form principale perchè devo passare il valore della select, io chiedevo se c'è un alternativa (anche in altri linguaggi) che mi permetta di passare questo dato ricavato dalla select, grazie
    sarò io che non capisco ma scusa se io metto una select all'interno del tuo form e aggiungo un bottone per fare il save del solo campo della select...perchè dovrei inserire un altro form?
    mi basta l'evento onclick per lanciare uno script ajax per fare il save del campo nel db....
    cosa dovrebbe servire il form nel form?
    Vic53

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630
    Grazie VIC53, puoi farmi un esempio di come potrei fare tramite ajax?
    grazie

  6. #6
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592
    Ciao, premesso che non so cosa vuoi registrare nel form, ti faccio l'esempio che ho usato io per registrare nella tendina "professioni"
    che è una select, tramite un campo prompt un nuovo valore e nello stesso tempo registrarlo nel DB via Ajax. Supponiamo che la select sia questa che mostro qui come codice
    codice:
    <select name="professione" id="professione" size="1" 
                style="width: 300px; background-color: #EBEBEB; color: #000099;"  <%=crsx%> >
                            <%    SQL="select * from Professioni order by Descrizione ASC;"
                        RS.Open SQL, conn, 3, 3
                        Do until RS.EOF 
                        if professione = RS.fields("codice") then
                             sele=" selected "
                        else
                             sele=""     
                        end if %>
                            <option value="<%= RS.Fields("codice")%>" <%=sele%>><%=UCASE(RS.Fields("Descrizione"))%></option>
                            <% RS.Movenext
                       loop
                       RS.Close
            %>
    </select>
    <img alt="" src="ICONE/equip.ico" style="width:22px; height:22px;"  onmouseOver="this.src='ICONE/editorw.ico'" onmouseout="this.src='ICONE/equip.ico'" onClick="AggiungiProfessione()"  title="Aggiungere una professione cliente? ..." />
    ora di fianco alla select ci sta una immagine piccola e cliccando sull'immagine attivo la procedura di registrazione nuovo record nel DB
    e ora ti posto lo script jscript che si chiama AggiungiProfessione()....e che chiama l'altro script AggiungiVoce()...che per serve solo a verificare di non inserire un doppione ma che alla fine chiama la parte che ti interessa cioe InserimentoTabella(...)
    codice:
    function AggiungiProfessione() {
     var categ = "..."; 
     var cat="professione";
     categ = window.prompt("Digita la professione", categ, 200, 200);
     if (categ!=null)
     AggiungiVoce(cat,categ.substr(0,50));
    }
    function AggiungiVoce(cat,testo_selezionato){
        num_option=document.getElementById(cat).options.length; 
        indice_selezionato = document.getElementById(cat).selectedIndex;
        if(indice_selezionato>=0){
            duplicato=0;
            for(a=0;a<num_option;a++){
                if(document.getElementById(cat).options[a].value==testo_selezionato){
                    duplicato=1;
                }
            }
            if(duplicato==0){
                document.getElementById(cat).options[num_option]=new Option('',escape(testo_selezionato),false,false);
                document.getElementById(cat).options[num_option].innerHTML = testo_selezionato;
                InserimentoTabella(cat,testo_selezionato);
            }
        }
    }
    function InserimentoTabella(cat,txt) {
    var datiform ="cat="+cat+"&des="+txt;
    //alert(datiform);
    $.get("InserimentoTB.asp?"+datiform,function(data, status){
          document.getElementById("msg").value=data;  
        });
    }
    
    ...
    Be questo è un pezzo di codice ma u devi estrapolare quello che serve a te...
    io ho fatto uno script generico per registrare piu tipi di record e ti posto lo script chiamato...InserimentoTB.asp
    codice:
    <!-- #include file="Connessioni.asp" -->
    <%
    dim cat,des, PK, TB, SWERR
    cat=request.QueryString("cat")
    des=request.QueryString("des")
    'response.write "cat=" & cat
    
    select case cat
     case "categoria"
      TB="CategorieClienti"
      PK="codicecategoria"
     case "nazione"
      TB="nazioni"
      PK="codicenazione"
     case "professione"
      TB="professioni"
      PK="codice"
     case "categoriafornitore"
      TB="categoriefornitori"
      PK="codicecategoria"
     case "categoriamerce"
      TB="categoriemerce"
      PK="codicecategoria"
     case "causale"
      TB="causali"
      PK="causale"
    end select
    
    SQL="Select * from " & TB & " order by " & PK & " DESC"
    RS.Open SQL, conn, 3, 3
    if not RS.EOF then
       PK = RS(PK) + 1
    else
       PK = 1
    end if
    RS.Addnew
    RS(0) = PK
    RS(1) = des
    RS.Update
    RS.Close
    response.write("INSERIMENTO RECORD IN TABELLA " & cat & " ESEGUITO...")
    response.end()
    %>
    <!-- #include file="Disconnessioni.asp" -->
    ...
    Nei miei programmi ci sono in testa e in coda i file di include che fanno la connessione e la disconnessione dal database naturalmente e predispongono in automatico 3 recordset RS, RS1 e RS2 + la connessione
    le tabelle sono simili hanno due campi una chiave numerica e una testo che sono rispettivamente i campi
    RS(0) e RS(1) e li punto senza il nome...ok?
    spero ti basti l'esempio...
    ciao
    Ultima modifica di vic53; 23-05-2016 a 14:11
    Vic53

  7. #7
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592
    A se non lo avessi notato alla select viene aggiunto il campo inserito inline....oltre che registrarlo nel DB...
    queste chiamate usano Ajax via Jquery ma se vuoi ti posto un esempio senza Jquery... solo chiamata XMLTTTP... fatta in un altro programma cosi puoi decidere come fare
    questo script è piu vecchio ma usa la stessa tecnologia su un altro programma naturalmente...
    codice:
    ...
    function RegistraProfessione(txt) {
     var datiform="professione="+escape(txt);
     datiform = datiform + "&finecampi=1";
     if (window.XMLHttpRequest) {
            update_record = new XMLHttpRequest();
            update_record.onreadystatechange = ElaboraRisposta;
            update_record.open("GET","InsProfessione.asp?"+datiform, true);
            update_record.send(null);
        // branch for IE/Windows ActiveX version
        } else if (window.ActiveXObject) {
            update_record= new ActiveXObject("Microsoft.XMLHTTP");
            if (update_record) {
                update_record.onreadystatechange = ElaboraRisposta;
                update_record.open("GET","InsProfessione.asp?"+datiform, true);
                update_record.send();
            }
        }
    var x=document.getElementById("professione");
    var option=document.createElement("option");
    option.text=txt;
    try
      {
      // for IE earlier than version 8
      x.add(option,x.options[null]);
      }
    catch (e)
      {
      x.add(option,null);
      }    
    
    }
    function ElaboraRisposta() {
       var risposta;       
       if (update_record.readyState == 4) {        
              risposta=update_record.responseText;
              document.<%=formname%>.msg.value = risposta;
      }
    }
    CIAO BUON LAVORO
    Ultima modifica di vic53; 23-05-2016 a 14:18
    Vic53

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.