• User

    come aggiornare database da form dinamico

    Ciao ragazzi ho un database DB.mdb il quale ha una tabella utenti e una annunci .
    In utenti ho i campi:
    ID-----utente ----password----tipo---nome---indirizzo----

    in Annunci i campi:
    ID ------ID_utenti-------AnnuncioF--------- AnnuncioV

    presupponendo che ho le due tabelle compilate così:
    Tabella Utenti
    ID-----utente ----password----tipo---nome---indirizzo----
    1------Daniele----password----Bar ---Milton--Via lemandalnaso

    Tabella Annunci
    ID ------ID_utenti-------AnnuncioF--------- AnnuncioV
    1 ------- 1 ------nutella party-------pigiama party
    2 ------- 1 -------gina canta----------pino suona

    A questo punto creo un form con la funzione di contare tutti i record Annunci di Daniele con l'associazione dell ID di tabella Utenti con l'ID_utenti di tabella Annunci

    Il mio problema è che non riesco ,dopo aver fatto il submit del form, a identificare i vari record che mi vengono mostrati dallo stesso

    Se non sono stato chiaro chiedetemi pure


  • ModSenior

    Cioè riesci solo a stamparli a video, ma ad esempio non riesci ad assegnare un pulsante cancella che cancelli il messaggio riferito al pulsante?


  • User

    @marcocarrieri said:

    Cioè riesci solo a stamparli a video, ma ad esempio non riesci ad assegnare un pulsante cancella che cancelli il messaggio riferito al pulsante?
    si non ho problemi di visualizzazione e neanche di inserimento ma semplicemente di aggiornamento del database (un dettaglio che avevo omesso, sorry!)


  • ModSenior

    Quindi tu ha un forum (ad esempio) in lato amministrazione, attraverso il quale, in ogni riga è presente la possibilità di editare i dati in una text box o una textarea (per ogni riga della tabella annunci).
    Il tuo problema quindi è quello di ricreare un pulsante che aggiorni la riga iesima?

    P.S Attenzione qua nel forum ad iniziare le frasi con la lettera maiuscola.


  • User

    @marcocarrieri said:

    Quindi tu ha un forum (ad esempio) in lato amministrazione, attraverso il quale, in ogni riga è presente la possibilità di editare i dati in una text box o una textarea (per ogni riga della tabella annunci).
    Il tuo problema quindi è quello di ricreare un pulsante che aggiorni la riga iesima?

    P.S Attenzione qua nel forum ad iniziare le frasi con la lettera maiuscola.
    No
    Dunque rispiego, anzi spiego ,perchè non mi sono spiegato per via della fretta!
    Ho un database formattato come sopra ho descritto
    Ho una pagina modulo.asp, il quale non ci si accede se non si è loggati
    Dentro a questa pagina ho un form che in codice recita così

    
    <%
    dim intCodice1g
    intCodice1g = session("MM_nome")
    %>
    <%
    Dim Rec2
    Dim Rec2_cmd
    Dim Rec2_numRows
    Set Rec2_cmd = Server.CreateObject ("ADODB.Command")
    Rec2_cmd.ActiveConnection = MM_conn_STRING
    Rec2_cmd.CommandText = "SELECT * FROM Annunci,Utenti WHERE utenti.ID= annunci.ID_Utenti AND utenti.nome = '" & intCodice1g& "'"
    Rec2_cmd.Prepared = true
    Rec2_cmd.Parameters.Append Rec2_cmd.CreateParameter("param1", 5, 1, -1, Rec2__MMColParam) ' adDouble
    Set Rec2 = Rec2_cmd.Execute
    Rec2_numRows = 0
    %>
    <%
    Dim Repeatbgl__numRows
    Dim Repeatbgl__index
    Repeatbgl__numRows = -1
    Repeatbgl__index = 0
    Rec2_numRows = Rec2_numRows + Repeatbgl__numRows
    %>
    <form action="Update.asp" method="POST" name="form" 
    <% While ((Repeatbgl__numRows <> 0) AND (NOT Rec2.EOF)) %>
          <input name="hidRecID" type="hidden" value="<%=(Rec2.Fields.Item("Annunci.ID").Value) %>" size="5">
           <input type="text" name="annuncioF"   size="32" />
           <input type="text" name="annuncioV"   size="32" />
    <% 
      Repeatbgl__index=Repeatbgl__index+1
      Repeatbgl__numRows=Repeatbgl__numRows-1
      Rec2.MoveNext()
    Wend
    %>
           <input type="submit" value="Aggiorna record" />
    </form>
    
    ```i risultati di questo codice in italiano :
    Nel form fammi vedere tutti gli annunci ,della tabella annunci,che hanno  id_utenti uguale a ID della tabella utenti 
    a questo punto il risultato è corretto se Daniele ha 3 annunci collegati, il form mi fa vedere 3 input text (da notare che ad ogni input text associa l'id della tabella annunci,quindi ognuno ha il suo id ,il tutto grazie all'input nascosto
    Il problema a questo punto sta in questa pagina update.asp
    

    dim id
    id=request.form("hidRecID")

    strCode1g="pass"
    Set Conn=Server.CreateObject("ADODB.Connection")
    strConn="driver={Microsoft Access Driver (*.mdb)}; "
    strConn=strConn & " DBQ=" & Server.MapPath("\database/DB.mdb")
    strConn=strConn & ";pwd=" & strCode1g
    Conn.Open strConn
    sql = "UPDATE Lunedi "
    sql = sql & " SET annuncioF = '" & request.form("annuncioF") & "' "
    sql = sql & ", annuncioV = '" & request.form("annunciov") & " '"
    sql = sql & " WHERE ID= "&id&""
    Response.Write "<br>Risposta sql...: " & sql
    Response.Flush
    Conn.Execute (sql)
    conn.Close
    set conn = Nothing

    i valori saranno 1 ,2 se mi sono loggato con Daniele
    Quindi la risposta  nel browser, se eseguo il tutto mi viene 
    

    Risposta sql...:UPDATE Annunci SET annuncioF = 'prova annF' , annuncioV = ', ' WHERE ID= 1, 2
    Errore di sintassi (virgola) nell'espressione della query 'Ann_ID= 1, 215'.


  • User

    Risposta sql...:UPDATE Annunci SET annuncioF = 'prova annF' , annuncioV = ', ' WHERE ID= 1, 2
    Errore di sintassi (virgola) nell'espressione della query 'Ann_ID= 1, 215'.

    questa risposta ha un errore di copia incolla infatti l'errore di sintassi è:

    Errore di sintassi (virgola) nell'espressione della query 'ID= 1, 2'.


  • User

    Se non sono stato chiaro ditemelo pure
    p.s.
    Se vedete che c'è qualche errore nel codice è per via dei vari copia incolla


  • ModSenior

    Prova a mettere cosi.
    Where id in (1,2,...)


  • User

    @marcocarrieri said:

    Prova a mettere cosi.
    Where id in (1,2,...)
    Intendi su Update ?
    al posto dell'uguale metto , in?
    così?
    WHERE id in "&variabile id


  • ModSenior

    Tu vuoi andare ad aggiornare piu righe o sbaglio?


  • User

    @marcocarrieri said:

    Tu vuoi andare ad aggiornare piu righe o sbaglio?
    Esattamente


  • ModSenior

    Allora la condizione è sbagliata.
    Ti suggerisco due modalità.

    1. WHERE id=1 or id=2..... e cosi via
      Consigliato per due o tre id...

    2. WHERE id IN (1,3,7,10....)
      Se la lista di è lunga, esiste la clausola IN.
      Praticamente vai a guardare se il tuo id è presente in questo vettore.


  • User

    @marcocarrieri said:

    Allora la condizione è sbagliata.
    Ti suggerisco due modalità.

    1. WHERE id=1 or id=2..... e cosi via
      Consigliato per due o tre id...

    2. WHERE id IN (1,3,7,10....)
      Se la lista di è lunga, esiste la clausola IN.
      Praticamente vai a guardare se il tuo id è presente in questo vettore.
      Ok Grazie ! Fino a qua ci sono ,solo che il comportamento non è quello che mi aspettavo
      Infatti lui mi scrive nel DB in un unica cella ,il contenuto che compilo nei due input text annunciF .Mentre in realta dovrebbe scriverne uno nel id 1 e uno nell'id due la stessa cosa per input text annuncioV ,lo scrive in unica cella
      Risposta sql...: UPDATE Annunci,Utenti SET anngiornolunF = '33333, 44444' , anngiornolunV = '1111111111, 2222222222222 ' WHERE Ann_ID in ( 1, 2)

    in realta dovrebbe darmi una risposta del tipo
    Risposta sql...: UPDATE Annunci,Utenti SET anngiornolunF = '33333' , anngiornolunV = '1111111111 ' WHERE Ann_ID in ( 1)
    Risposta sql...: UPDATE Annunci,Utenti SET anngiornolunF = ' 44444' , anngiornolunV = ' 2222222222222 ' WHERE Ann_ID in ( 2)


  • ModSenior

    E se hai 3 id cosa succede?
    P.S Non serve quotare interamente il messaggio.


  • User

    Si infatti se ne ho tre deve capire che deve scrivere su 3 id diversi
    in base a quanti id ho associati con l'utente che si è loggato

    Il codice che ho postato sopra della pagina update.asp è da tenere come riferimento

    Come risposta intendo la visualizzazione nel browser