Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407

    Split e query insert into

    bentrovati.

    da un form dati recupero la seguente stringa:

    codice:
    CM1,,,,CS1,,,,CS4,,,,CS5,,,,CS6,,,,CS7,Ins,1,1,CS8,Suf,2,2,
    La splitto per virgola ed ottengo una lista di valori:

    codice:
        strSplitDati = Split(Request.Form("dati"), ",")
        
            for i = LBound(strSplitDati) to UBound(strSplitDati)
    	       response.write(strSplitDati(i) & "
    
    " )
            next
    Adesso come faccio per inserire questi dati restituiti dallo split in una tabella mysql?
    non conosco a priori la lunghezza della stringa e quindi il numero di valori da splittare.

    I dati andrebbero inseriti nel db quattro x volta, cioè così:

    CM1,,,,
    CS1,,,,
    ...
    CS7,Ins,1,1,
    CS8,Suf,2,2,

    Sapete aiutarmi?
    Vi ringrazio

  2. #2

  3. #3
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407

    Re: Split e query insert into

    grazie

    ho modifciato lo split per virgola in questo modo:

    codice:
        strSplitDati = Split(Request.Form("dati"), ",")
        
            for i = LBound(strSplitDati) to UBound(strSplitDati) step 4
    	       response.write(strSplitDati(i) & "
    
    " )
            next
    e la query insert into l'ho scritta così ( all'interno del ciclo for... next di sopra ):

    codice:
    strSql = " INSERT INTO "
    strSql = strSql & " tbl "
    strSql = strSql & " ( "
    strSql = strSql & "   testo_A, "
    strSql = strSql & "   testo_B, "
    strSql = strSql & "   numero_A, "
    strSql = strSql & "   numero_B "
    strSql = strSql & " ) "
    strSql = strSql & "   VALUES "
    strSql = strSql & " ( "
    strSql = strSql & "  '" & strSplitDati(0) & "', "
    strSql = strSql & "  '" & strSplitDati(1) & "', "
    strSql = strSql & "   " & strSplitDati(2) & ", "
    strSql = strSql & "   " & strSplitDati(3) & " "
    strSql = strSql & " ) "
    cn.execute strSql
    Non dà errori ma nel db inserisce, per tutto il ciclo, soltanto il valore del primo risultato dello split, cioè questo:

    codice:
    INSERT INTO tbl ( testo_A, testo_B, numero_A, numero_B ) VALUES ( 'CM1', '', , )
    Perchè?

  4. #4

  5. #5
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Originariamente inviato da optime
    la insert va nel ciclo
    la insert è già nel ciclo... ma stampa "n" query tutte uguali....

    codice:
        strSplitDati = Split(Request.Form("dati"), ",")
        
            for i = LBound(strSplitDati) to UBound(strSplitDati) step 4
    	       response.write(strSplitDati(i) & "
    
    " )
    
            strSql = " INSERT INTO "
            strSql = strSql & " tbl "
            strSql = strSql & " ( "
            strSql = strSql & "   testo_A, "
            strSql = strSql & "   testo_B, "
            strSql = strSql & "   numero_A, "
            strSql = strSql & "   numero_B "
            strSql = strSql & " ) "
            strSql = strSql & "   VALUES "
            strSql = strSql & " ( "
            strSql = strSql & "  '" & strSplitDati(0) & "', "
            strSql = strSql & "  '" & strSplitDati(1) & "', "
            strSql = strSql & "   " & strSplitDati(2) & ", "
            strSql = strSql & "   " & strSplitDati(3) & " "
            strSql = strSql & " ) "
            cn.execute strSql
    
            next

  6. #6
    certo... se usi 0,1,2,3 ....

    usa i, i+1, i+2, i+3 !

  7. #7
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Ah!....

    OK ho modificato così:

    codice:
        strSplitDati = Split(Request.Form("dati"), ",")
        
            for i = LBound(strSplitDati) to UBound(strSplitDati) step 4
    	       response.write(strSplitDati(i) & "
    
    " )
    
            strSql = " INSERT INTO "
            strSql = strSql & " tbl "
            strSql = strSql & " ( "
            strSql = strSql & "   testo_A, "
            strSql = strSql & "   testo_B, "
            strSql = strSql & "   numero_A, "
            strSql = strSql & "   numero_B "
            strSql = strSql & " ) "
            strSql = strSql & "   VALUES "
            strSql = strSql & " ( "
            strSql = strSql & "  '" & strSplitDati(i) & "', "
            strSql = strSql & "  '" & strSplitDati(i+1) & "', "
            strSql = strSql & "   " & strSplitDati(i+2) & ", "
            strSql = strSql & "   " & strSplitDati(i+3) & " "
            strSql = strSql & " ) "
            cn.execute strSql
    
            next
    ma ad un certo punto dice:

    Microsoft VBScript runtime error '800a0009'

    Subscript out of range: '[number: 29]'

    /db.asp, line 157

    dove la lines 157 è questa:

    codice:
    strSql = strSql & "  '" & strSplitDati(i+1) & "',

  8. #8
    devi accertarti di avere 4x elementi. se ne hai - ad esempio - 17 lo script va in errore

  9. #9
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Originariamente inviato da optime
    devi accertarti di avere 4x elementi. se ne hai - ad esempio - 17 lo script va in errore
    Scusa ma io non so prima quanti elementi del form avrò da splittare... o non ho capito?

  10. #10
    scusa, in generale, come fai a fare le cose a blocchi di 4 se il totale NON è un multiplo di 4?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.