- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- come aggiornare database da form dinamico
-
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--------- AnnuncioVpresupponendo che ho le due tabelle compilate così:
Tabella Utenti
ID-----utente ----password----tipo---nome---indirizzo----
1------Daniele----password----Bar ---Milton--Via lemandalnasoTabella Annunci
ID ------ID_utenti-------AnnuncioF--------- AnnuncioV
1 ------- 1 ------nutella party-------pigiama party
2 ------- 1 -------gina canta----------pino suonaA 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
-
Cioè riesci solo a stamparli a video, ma ad esempio non riesci ad assegnare un pulsante cancella che cancelli il messaggio riferito al pulsante?
-
@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!)
-
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.
-
@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 = Nothingi 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'.
-
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'.
-
Se non sono stato chiaro ditemelo pure
p.s.
Se vedete che c'è qualche errore nel codice è per via dei vari copia incolla
-
Prova a mettere cosi.
Where id in (1,2,...)
-
@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
-
Tu vuoi andare ad aggiornare piu righe o sbaglio?
-
@marcocarrieri said:
Tu vuoi andare ad aggiornare piu righe o sbaglio?
Esattamente
-
Allora la condizione è sbagliata.
Ti suggerisco due modalità.-
WHERE id=1 or id=2..... e cosi via
Consigliato per due o tre id... -
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.
-
-
@marcocarrieri said:
Allora la condizione è sbagliata.
Ti suggerisco due modalità.-
WHERE id=1 or id=2..... e cosi via
Consigliato per due o tre id... -
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)
-
-
E se hai 3 id cosa succede?
P.S Non serve quotare interamente il messaggio.
-
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 è loggatoIl codice che ho postato sopra della pagina update.asp è da tenere come riferimento
Come risposta intendo la visualizzazione nel browser