- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- Problema con inserimento valori in db
-
Problema con inserimento valori in db
Ciao a tutti.
Da un form dati recupero questa serie di valori:
R, S, T, G 1, 2, 3, 4 1, 2, 3, 4 1, 2, 3, 4 1, 2, 3, 4 1, 2, 3, 4 P, N, P, N BF, CC, BF, CC
Devo inserirli in una tabella mysql in questo modo, come posso fare?
PROVA CAMPOA CAMPOB CAMPOC CAMPOD CAMPOE CAMPOF R 1 1 1 1 P BF S 2 2 2 2 N CC T 3 3 3 3 P BF G 4 4 4 4 N CC
Grazie-
-
Usi asp? Il problema dove sta? Fai vedere un pò di codice che hai fatto almeno possiamo aiutarti...
-
@cali1981 said:
Usi asp? Il problema dove sta? Fai vedere un pò di codice che hai fatto almeno possiamo aiutarti...
Grazie x aver risposto.
Si utilizzo ASP.
Non so come scrivere il codice ma il problema è che con ASP devo leggere questi dati recuperati con request.form "per colonna" e registrarli in un db:
A, B 1, 5
In pratica invece di leggere per riga devo leggere "per colonna" e fare un inserimento in db del tipo:
INSERT INTO MyTbl ( Lettera, Numero ) VALUES ( 'A', 1 ) INSERT INTO MyTbl ( Lettera, Numero ) VALUES ( 'B', 5 )
Puoi aiutarmi a scrivere questo codice anche con degli esempi?
-
Che intendi con leggere per colonna? Quei campi nel form come arrivano, ognuno da una textbox o tutti insieme in un campo di testo lungo (= più righe)?
In ogni caso, in asp, per prendere i valori dalla form passata con POST, devi fare:nome = Request.Form("nome")
mentre se sono passati con GET:
nome = Request.Querystring("nome")
-
I valori li recupero con request.form, così:
strID = trim(request.form("strID"))
strTipo = trim(request.form("strTipo"))strID equivale a: A, B
strTipo equivale a: 1, 5Devo fare un inserimento in db del tipo:
INSERT INTO MyTbl ( Lettera, Numero ) VALUES ( 'A', 1 ) INSERT INTO MyTbl ( Lettera, Numero ) VALUES ( 'B', 5 )
E' più chiaro?
-
Ok, allora devi "splittare" la stringa con le virgole, e quindi avrai i singoli valori. A questo punto, basta inserirli nel db e il gioco è fatto.
Per fare split:
split(strangadadividere, SEPARATORE)
nel tuo caso:
split(strID , ",")
devi fare anche il trim su ogni valore dell'array per togliere la virgola.
Per l'inserimento:
Conn.connectionstring = stringa di connessione Conn.Open SQLTemp = "INSERT INTO MyTbl ( Lettera, Numero ) VALUES ( '"& arraysplit(0) & " ', " & arraysplit(1) &" )" Conn.execute(SQLTemp)
dove arraysplit è l'array restituito dall'istruzione split
-
ho fatto come hai detto, cioè:
arraysplit = split(strID , ",")
Ma ecco la query:
INSERT INTO MyTbl ( Lettera, Numero ) VALUES ( A, 'B' )
che non è uguale a :
INSERT INTO MyTbl ( Lettera, Numero ) VALUES ( 'A', 1 )
:():
-
Beh non è che dovevi proprio copiare di sana pianta quelo che scrivevo io, vedendo i dati che hai postato devi avere due array, arratysplit1 e arraysplit2 e mettere arraysplit1(0), arraysplit2(0) nel primo insert e arraysplit1(1), arraysplit2(1) nel secondo.
-
.
-
Ok
In realtà è più semplice di quanto potessi pensare perchè è stato sufficiente utilizzare una proprietà di mysql che consente di utlizzare questo sistema di inserimento dati tramite una query:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
Quindi è stato sufficiente splittare per virgola i dati che arrivano dal form, senza alcuna necessità di utilizzare array bidimensionali, cicli annidati, etc, etc.
Ciao e grazie x l' aiuto.