Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870

    Problema con array e split

    Ciao a tutti.

    Perchè se da un form recupero questi valori:

    A-LUCIANO, B-VITTORIO

    e cerco di fare lo split:

    codice:
    n = request.form("n")
    
    arr1 = split(n,", ")
    for each item in arr1
        arr2 = split(item,"-")
        nomi = nomi & arr2(2) & ", "
    next
    mi dà questo messaggio?:

    Error Type:
    Microsoft VBScript runtime (0x800A0009)
    Subscript out of range: 'nomi'

  2. #2
    Credo tu sbagli nella Request.Form

    Se la fai così lui ti va a cercare il campo "n" della request.form

    Mentre tu dovresti fare solo

    codice:
    n = request.form
    O comunque fare
    codice:
    for each item in request.form
        arr2 = split(item,"-")
        nomi = nomi & arr2(2) & ", "
    next

  3. #3
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    gli array iniziano da 0... se hai due elementi il secondo ha indice 1 e non 2
    codice:
    nomi = nomi & arr2(1) & ", "

  4. #4
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Non so a prioori quanti elementi mi arrivano dal form, possono essere due, tre o uno, etc:

    Error Type:
    Microsoft VBScript runtime (0x800A0009)
    Subscript out of range: '[number: 2]'

    Sulla riga rossa:

    codice:
    arr1 = split(n,", ")
    for each item in arr1
        arr2 = split(item,"-")
        nomi = nomi & arr2(1) & ", "
    next
    
    nomi = left(nomi,len(nomi)-2)
    
    for each item in arr1
       arr2 = split(item,"-")
       n1 = arr2(0)
       n2 = arr2(1)
       n3 = arr2(2)

  5. #5
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    ma se hai detto che ricevi stringhe del tipo
    A-LUCIANO, B-VITTORIO
    sono sempre 2 elementi divisi da - quindi solo 0 e 1
    se non è così spiegati meglio

  6. #6
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Mi spiego meglio:

    1) ho una select multiple da cui l'utente può selezionare n nomi (da un minimo di uno ad un massimo x);

    2) recupero questi nomi in questa forma:

    Se uno:
    A-LUCIANO

    Se due:
    A-LUCIANO, B-VITTORIO

    Se tre:
    A-LUCIANO, B-VITTORIO, C-GIUSY

    e via dicendo...

    3) dovrei splittare prima per "-" poi, per "," e ricavare prima la lettera che precede il nome e poi il nome stesso, questo deve avvenire per tutti i valori (da un minimo di uno ad un massimo x) che arrivano selezionati dal form.

  7. #7
    secondo me devi fare al contrario......devi splittare prima per "," in modo da avere elementi di tipo a-nome b-nome etc

    e poi splitti ogni elemento del primo array per "-".......quando cicli per l'array invece di cablare come in questo caso
    n1 = arr2(0)
    n2 = arr2(1)
    n3 = arr2(2)

    mettili in un nuovo array.....

    n(i)=arr2(i)

    e così via solo che non ciclare con

    for each item in arr1

    ma con un bel

    for i=0 to ubound(arr2)-1

    spero di essere stato chiaro

  8. #8
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Originariamente inviato da gensole

    spero di essere stato chiaro
    Mi spiace ma non ti seguo...

  9. #9
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Originariamente inviato da fraude
    Mi spiego meglio:

    1) ho una select multiple da cui l'utente può selezionare n nomi (da un minimo di uno ad un massimo x);

    2) recupero questi nomi in questa forma:

    Se uno:
    A-LUCIANO

    Se due:
    A-LUCIANO, B-VITTORIO

    Se tre:
    A-LUCIANO, B-VITTORIO, C-GIUSY

    e via dicendo...

    3) dovrei splittare prima per "-" poi, per "," e ricavare prima la lettera che precede il nome e poi il nome stesso, questo deve avvenire per tutti i valori (da un minimo di uno ad un massimo x) che arrivano selezionati dal form.
    se hai una select multiple puoi fare così
    codice:
    for each item in Request.Form("n")
        arr = split(item,"-")
        nomi = nomi & arr(1) & ", "
    next

  10. #10
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Originariamente inviato da willybit
    se hai una select multiple puoi fare così
    codice:
    for each item in Request.Form("n")
        arr = split(item,"-")
        nomi = nomi & arr(1) & ", "
    next
    Perfetto, grazie!

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