Visualizzazione dei risultati da 1 a 9 su 9

Discussione: impostazione per Array

  1. #1

    impostazione per Array


    (spero di riuscire a spiegarmi bene)

    Ho 1 tabella strutturata in questo modo:

    || nome || --- || colori ||

    || pippo || --- || GIALLO,rosso,verde ||
    || topolino | --| blu,GIALLO, viola ||
    || pluto | -- | rosa ||


    etc.......................

    ora supponiamo di fare 1 query che estrae PIPPO e TOPOLINO

    io dovrei poi prendere i vari colori (che possono essere 1 o + per ogni record) e metterli in 1 array
    (per cui da esempio creare questo array

    array(giallo,rosso,verde,blu,viola) ovviamente senza ripetere i dupplicati (ma per i dupplicati non è fondamentale)

    .................................................. .................................................. .................

    come faccio a fare in 1 ciclo su una select una cosa similE?

    :berto:

    questo il classico ciclo dove mi serve creare l'array
    codice:
    <%
    Do while not aziende.eof
    
    ci andrebbe lo SPLIT per la virgola
    
    %>
    
    quì dovrei creare l'array ....credo
    
    <%
    aziende.movenext
    loop
    %>
    Tanto...lo fanno tutti... posso farlo anche io vero?

  2. #2
    codice:
    do while to aziende.eof
      mioArray = split(aziende("nomeCampo"),",")
        for i = 0 to uBound(mioArray)
          response.write mioArray(i) & "
    "
        mext
      aziende.moveNext
    loop

  3. #3
    Mems

    Grazie funziona bene
    Tanto...lo fanno tutti... posso farlo anche io vero?

  4. #4
    Mems quello che hai scritto fa proprio quello che volevo fare ...solo che io avrei bisogno di portare quell'indice di array fuori dal ciclo Do while

    al che ho provato ad aggiungere 1 indice array al ciclo ma memorizza solo i dati dell'ultimo record del ciclo e mi "dimentica" gli altri


    --- quì creo l'indice e chiudo il record set -----
    codice:
    do while not aziende.eof
    if aziende("catene") <> "" then
    
    
      arraycatene = split(aziende("catene"),",")
      
        for i = 0 to uBound(arraycatene)
    		redim preserve idcatena(i)
    		 idcatena(i) = arraycatene(i)
        next
      
    end if
      aziende.moveNext
    loop
    	aziende.close()
    	set aziende = nothing

    quello che mi serve ora è dopo aver chiuso il record set poter ciclare su quell'indice che ho creato appunto nel ciclo DO WHILE

    codice:
    for i = 0 to ubound(idcatena)
    response.Write(idcatena(i)) & "
    " 
    next

    impostato così però si "ricorda" solo dell'ultimo record del ciclo DO WHILE



    ho provato a usare redim preserve in giro ma senza risultati
    Tanto...lo fanno tutti... posso farlo anche io vero?

  5. #5
    Domanda: te fai un ciclo DO con il quale leggi i record. Ogni record diventa un array perchè dentro ad ogni record ci stanno delle stringhe che dividi in base al carattere virgola. Quello che vuoi fare è popolare un unico array per tutti i record della tabella o avere singoli array per ogni record della tabella?

  6. #6
    nel tuo ciclo for, ad ogni giro del do..while fai ripartire l'indice i da zero, è ovvio che ad ogni giro perdi i valori precedenti.
    basta usare una variabile d'appoggio j che valorizzi a zero fuori dal Do e incrementi di 1 nel ciclo for.

    sebbene la cosa sia fattibilissima con gli array, a mio avviso potresti prendere in consdierazione anche l'idea di sostituire il vettore con un dictionary, col quale puoi anche eliminare semplicemente i duplicati.
    xxx

  7. #7
    codice:
    do while not aziende.eof
    if aziende("catene") <> "" then
    
      ultimoIndice = uBound(idcatena)
      arraycatene = split(aziende("catene"),",")
      
        for i = 0 to uBound(arraycatene)
    		redim preserve idcatena(ultimoIndice+(i+1))
    		 idcatena(ultimoIndice+(i+1)) = arraycatene(i)
        next
      
    end if
      aziende.moveNext
    loop
    	aziende.close()
    	set aziende = nothing

  8. #8
    Ekkime ....grazie per le risposte a entrambi rispondo alla domanda mems

    Potrebbe anche essere farmi 1 unico array con TUTTI i dati che mi serve avere ...si

    il mio scopo è questo...(spero di riuscire ad essere chiaro perchè è un pochino ingarbugliata)

    ------------------------------------------------------------
    - ho 1 tabella con N record ...
    - in questa tabella (tabella aziende) ho un campo chiamato CATENE
    - in questo campo CATENE ci sono degli ID tipo --> ( 2,43,53 )

    - questi ID sono relativi ad un'altra tabella (tabella catene)
    - la struttura della tabella è ID - Nome_catena
    - gli id ( 2,43,53 ) sono relativi a questa tabella
    ------------------------------------------------------------
    Ora io ho 1 pagina così strutturata:

    - Header

    - SELECT a DB e creazione degli ARRAY

    - select della catena e ALTRE SELECT

    - elenco aziende

    - footer
    ------------------------------------------------------------
    quel che devo fare e che serve...

    In base alle scelte che fa 1 utente sulle ALTRE SELECT io filtro nella tabella AZIENDE dei risultati, ogni singolo risultato ha (appunto) il campo CATENE questo campo contiene gli ID dei record di un'altra tabella

    A me serve che, quando un utente inizia a fare delle scelte cone LE ALTRE SELECT io vado a POPOLARE la SELECT catene con SOLAMENTE I RECORD INERENTI ALLE AZIENDE TROVATE.

    un record aziende può avere anche + di 1 ID nello stesso campo
    ------------------------------------------------------------

    ecco....da quì l'esigenza e l'idea di creare array e indici ***....allora ci sono quasi l'unica cosa che devo fare è...quando creo l'indice per stamparmi l'elenco aziende...nello stesso tempo devo creare un secondo indice per avere TUTTI (escluso dupplicati) gli ID delle CATENE, così da avere 1 indice idCATENE e utilizzarlo per interrogare la TABELLA CATENE.


    *** creare array e indici perchè fisicamente nella pagina i record aziende vengono stampati DOPO la select e non posso per cui fare tutto questo con un ciclo DO while nei punti che mi interessa in + non mi va di fare N do while sulle tabelle perchè i record sono veramente tanti (+ di 6000) al che mi sono detto...ciclo 1 volta sola e mi creo tutto quel che mi serve.



    UFF...
    Tanto...lo fanno tutti... posso farlo anche io vero?

  9. #9
    up
    Tanto...lo fanno tutti... posso farlo anche io vero?

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.