• User

    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-


  • Super User

    Usi asp? Il problema dove sta? Fai vedere un pò di codice che hai fatto almeno possiamo aiutarti...


  • User

    @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?


  • Super User

    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")


  • User

    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, 5

    Devo 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?


  • Super User

    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


  • User

    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 )

    :():


  • Super User

    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.


  • User

    .


  • User

    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.