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

    inserimento dati in db in successione

    ciao a tutti. ho un problema con l'inserimento in successione di dati nel mio db. cerco di spiegarvi brevemente cosa deve fare la mai pagina:

    l'utente sceglie un'area su cui effettuare un controllo. in base all'area ha delle domande a cui rispondere SI, NO, NA. il numero di domande è variabile in base all'area di verifica e vengono prese da una tabella del db. e fin qui tutto ok. i dati mi vengono visualizzati

    quando l'utente ha finito di rispondere alle domande e ha aggiunto eventuali commenti deve salvare il tutto..ogni domanda deve finire in un record diverso del db. quindi pensavo di fare un inserimento in successione.

    premetto che ho testato la pagina inserendo un solo record (cioè facevo apparire all'utente una sola domanda a cui rispondere) e l'inserimento avveniva correttamente. se però deve rispondere a tutte le domande contemporaneamente il sistema da errore.

    ho pensato di fare un ciclo ma..evidentemente commetto qualche errore.
    vi posto le due pagine.
    la prima è quella che mostra la form in cui l'utente scrive i risultati:

    pagina scrivi_db

    codice:
    <table width="90%" border="1" align="center" bgcolor="#bee3ef">
    
    <TR bgcolor="#000000">
    
    <td bordercolor="#000000" width="5"><font
    color="#FFFFFF">ID</font></td>
    
    <td bordercolor="#000000" width="30"><font
    color="#FFFFFF">Area</font></td>
    
    <td bordercolor="#000000" width="5"><font
    color="#FFFFFF">Item</font></td>
    
    <td bordercolor="#000000" width="50"><font
    color="#FFFFFF">Domanda</font></td>
    
    <td bordercolor="#000000" width="5"><font
    color="#FFFFFF">Risposta</font></td>
    
    <td bordercolor="#000000" width="20"><font
    color="#FFFFFF">Rilievo</font></td>
    
    <td bordercolor="#000000" width="20"><font
    color="#FFFFFF">Trattamento</font></td>
    
    <td bordercolor="#000000" width="20"><font
    color="#FFFFFF">Azione</font></td>
    
    <td bordercolor="#000000" width="5"><font
    color="#FFFFFF">Responsabile azione</font></td>
    
    <td bordercolor="#000000" width="5"><font
    color="#FFFFFF">Data scadenza</font></td>
    </TR>
    
    
    <%
    ' Verifico che la tabella contenga dati
    
    ' Se non ne contiene lancio un messaggio di avviso
    If rs.EOF = True Then
    %>
    
    
    
    Nessun dato trovato</p>
    
    
    <%
    ' Se invece ne contiene visualizzo i dati in funzione
    ' della query SQL specificata
    Else
    
    While rs.EOF = False
    %>
    
    
    <tr>
    <td width="5">
    <input readonly="readonly" type="text" name="id_sotto_insieme" width="5" value="<%=rs("id_sotto_insieme")%>" size="5">
    </td>
    
    <td width="30">
    <%=rs("Sotto_insieme_descr")%>
    </td>
    
    <td width="5">
    <input readonly="readonly" type="text" name="id_item" width="5" value="<%=rs("ID_Item")%>" size="5">
    </td>
    
    <td width="50">
    <%=rs("Domanda")%>
    </td>
    
    <td>
    <select name="risposta" class="campiform"> 
    <option>SI</option>
    <option>NO</option> 
    <option>NA</option>
    </select> 
    </td>
    
    <td>
    <textarea type="text" name="nota" rows="2" cols="10"></textarea>
    </td>
    
    <td>
    <textarea type="text" name="trattamento" rows="2" cols="10"></textarea>
    </td>
    
    <td>
    <textarea type="text" name="azione" rows="2" cols="10"></textarea>
    </td>
    
    <td>
    <input type="text" name="resp_azione" size="15"/>
    </td>
    
    <td>
    <input type="text" name="data_scadenza" size="10" />
    </td>
    </tr>
    
    
    <%
    rs.MoveNext
    Wend
    
    End If
    %>
    
    <tr>
    <td align="center" colspan="10">
    <input type="submit" value="Registra risultati">
    </td>
    </tr>
    
    </table>

    pagina registra_risultati

    codice:
    <%
    'Codice inserimento dati in database
    set OBJdbConnection=Server.CreateObject("ADODB.Connection")
    
    'Server.MapPath si riferisce alla directory corrente del dominio
    
     OBJdbConnection.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/SITO/database/verifichedisistema.mdb")
     Set rs=server.CreateObject("ADODB.Recordset")
     
     while rs.eof = false 
     
     rs.Open "cds_dettaglio",OBJdbConnection,3,3
     
      
     rs.AddNew
     
     rs("ID_cds") = request.form("id")
     
     rs("id_check_list") = request.form("check_list")
     
     rs("id_sotto_insieme") = request.form("id_sotto_insieme")
     
     rs("Item") = request.form("ID_Item")
     
     rs("Risposta") = request.Form("Risposta")
     
     rs("nota") = request.Form("nota")
     
     rs("trattamento") = request.Form("trattamento")
     
      rs("azione") = request.Form("azione")
      
      rs("resp_azione") = request.Form("resp_azione")
      
      rs("data_scadenza") = request.Form("data_scadenza")
      
      rs("Data_inserimento") = date()
    
     
     rs.update
      
     rs.Close
     
    rs.movenext
    wend 
     
     
     OBJdbConnection.Close
     %>
    a cosa può essere dovuto l'errore? al tipo di ciclo che ho usato?

    boh..è da stamattina che ci lavoro sopra e che cerco informazioni in giro ma nulla...
    ps: scusate ma l'essere sintetico non è il mio forte

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    togli queste righe
    while rs.eof = false
    rs.movenext
    wend
    facendo un nuovo inserimento non servono per capire meglio cosa intendo http://asp.html.it/guide/leggi/65/guida-asp/ (vedi sezione database)
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    innanzi tutto ti ringrazio per la risposta.

    però se anche se tolgo quella porzione di codice il tutto non funzione e mi restituisce l'errore

    codice:
    An error occurred on the server when processing the URL. Please contact the system administrator.
    
    If you are the system administrator please click here to find out more about this error.
    il problema è questo: tramite un click sul bottone..deve inserire contemporaneamente tutti i valori, ognuno in un record diverso del database.. la mia idea, quindi, era quella di creare un ciclo che aggiungesse il tutto...

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    devi fare un ciclo

    for each blabla
    'qui la query che inserisce
    next

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ma i campi del form nelle diverse righe (domande) hanno tutti gli stessi nomi?

    Come fai a capire da quale riga ti proviene "risposta", "nota", ... eccetera?

    Devi crearti il name dei campi aggiungendo loro una "coda" univoca, per esempio ricavandola dall'ID letto:

    ... name="risposta__<%=rs("ID_Item")%>" ...

    In fase di lettura dei dati dal form scorri tutti i dati ricevuti e quando trovi un campo di riferimento ricavati 'id corrispondente
    codice:
    For Each item in request.form
      campo = item
      if left(campo,10)="risposta__" then
        id = mid(campo,11)
        risposta = request.form(campo)
        nota = request.form("nota__"&id)
        ....
    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

  6. #6
    innanzi tutto vi ringrazio per i vostri suggerimenti più che utili. il mio problema era anche che, non avendo un ID univoco me lo son dovuto creare. quindi mi son creato un contatore che aumenta ad ogni record e scrivendo nella pagina con le form

    codice:
     
    <textarea type="text" name="nota_<%=contatore%>" rows="2" cols="10"></textarea>
    l'inserimento dei dati in successione avviene perfettamente.

    nella pagina registra_risultati.asp ho costruito un ciclo for - next



    codice:
     
    rs.Open "cds_dettaglio",OBJdbConnection,3,3
    
    dim contatore
    contatore=0
    
    For contatore=1 to 5 
    
    rs.AddNew
     conta = contatore
    rs("ID_cds") = request.form("id")
     
    rs("id_check_list") = request.form("check_list")
     
    rs("id_sotto_insieme") = request.form("id_sotto_insieme_"&conta)
     
     rs("Item") = request.form("ID_Item_"&conta)
     
    rs("Risposta") = request.Form("Risposta_"&conta)
     
    rs("nota") = request.Form("nota_"&conta)
     
    rs("trattamento") = request.Form("trattamento_"&conta)
     
    rs("azione") = request.Form("azione_"&conta)
      
    rs("resp_azione") = request.Form("resp_azione_"&conta)
      
    rs("data_scadenza") = request.Form("data_scadenza_"&conta)
      
    rs("Data_inserimento") = date()
    
     
     rs.update
     
    next
     
     rs.Close
    non l'ho costruito come mi avevi suggerito col for each next per il semplice fatto che non avendo i valori di contatore salvati in una tabella del db non sapevo come farli ricercare. ora il sistema funziona ma vorrei mettere al posto del valore finale (che ho segnato in rosso sul codice) un valore variabile in base al numero di record su cui vado a scrivere. come posso fare? pensavo di contare il numero di record e mettere quel valore come valore finale del ciclo. cosa mi potete suggerire?

    grazie comunqeu per tutto!
    Alessandro

  7. #7
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812


    ma tu lo sai che nei database esiste il campo "contatore" e che è autoincrementale?
    altrimenti non si spiega tutto sto meccanismo...
    mica devi per forza dare tu "a mano" un id univoco ai record

  8. #8
    si si..certo che lo so

    l'uncio problema è che chi mi ha fornito il db e il progetto mi ha chiesto di mantenere inalterata la struttura del db..e quindi non potrei aggiungere una nuovo campo a meno che non sia fondamentale..e il crearmi un contatore in questo modo mi è sembrata l'ide amigliore per risolvere il primo problema ma che adesso mi va a bloccare nel ciclo for..

  9. #9
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    Originariamente inviato da alessandrot84
    e quindi non potrei aggiungere una nuovo campo a meno che non sia fondamentale
    direi che lo è

    qualcosa mi dev'essere sfuggito...
    -dove lo scrivi questo id identificativo per ogni record?

    -per fare il ciclo di inserimento non necessariamente devi sapere quanti sono realmente.

    -devi sapere quanti record ci sono per operare? allora prima li conti ( Count(campo) ) e poi fai il resto

    vado a tentoni he!

  10. #10
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Segui il consiglio di Bruno fai un for each sul form
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.