Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Recuperare indice in un array sapendo il valore?

    Ciao,

    ho un array in Classic ASP e mi trovo nella circostanza in cui conosco il valore di una delle chiavi, ma non il nome della chiave (spero di non parlare arabo eheheh).

    È possibile recuperare l'indice indice in un array sapendone il relativo valore?

    Ho provato a cercare a destra e manca ma non ho trovato niente...

    Grazie per ogni info!!

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Prova a postare il codice perché quello che hai scritto è poco comprensibile
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Ciao, sarebbe troppo complicato postare tutto il codice!!

    Credo che non si possa fare ciò che vorrei...

    Utilizzo un vecchio script per fare l'upload di file. Lo script permette di fare l'upload di più file, usa solo ASP ed è semplice ed efficace.

    Nello script mi trovo

    codice:
    For Each File In Uploader.Files.Items
     ...
    Next
    Nel loop mi trovo anche la possibilità di recuperare le varie variabili utilizzando

    codice:
    Uploader.Form("nomeinput")
    Il form originale è composto così (in sintesi):

    codice:
    <form name="mioform" method="POST" ENCTYPE="multipart/form-data" action="miaactionpage.asp">
    <input type="text" name="Descr1" value=""><input type="file" name="File1">
    </form>
    Nel form posso aggiungere dinamicamente (JS) i campi per altri file (Descr2/File2, Descr3/File3...).

    Il mio problema nasce dalla necessità di associare con esattezza al file x la relativa descrizione.

    Nella action page (con "action page" mi riferisco banalmente alla pagina che è indicata nell'attributo action del tag form) lo script esegue un ciclo per ogni file trovato nella collection Uploader.Files.Items.

    Se però per esempio proto a scrivere Response.Write( Uploader.Form("File1") ) non viene stampato niente perché evidentemente i file vengono, quindi diciamo il mio problema rimane a prescindere.

    Quello che volevo fare originariamente era, sapendo il nome del file, identificare il nome del campo (trova il nome - univoco - del campo che contiene il tal dei tali nome di file), per es. "File1", "File2", ecc..

    Idee?

  4. #4
    Per conoscere l'indice di un array partendo dal contenuto non hai molte alternative, devi fare un loop e fermarti quando lo trovi.
    Il numero di cicli che hai fatto è l'indice che ti interessa.

    xxx

  5. #5
    Ciao

    grazie per la risposta, speravo ci fosse una qualche altra, miracolosa soluzione eheheh



    Cmq sono riuscita a trovare un'alternativa che pare funzionare abbastanza bene eheh

    Grazie ancora

  6. #6
    nello spirito del forum, posta la soluzione, potrebbe interessare a qualche altro forumista con il tuo stesso problema.

  7. #7
    Ops!!

    Vediamo...

    ...anche con un loop, non mi è stato possibile recuperare l'indice da Uploader.Files.Items. Essendo la documentazione originale dello script praticamente inesistente, ho quindi aggirato il problema a monte utilizzando jQuery (che già veniva utilizzato per creare nuovi campi per gli ulteriori file da caricare).

    Non è una soluzione "brillantissima" ma, a patto che l'utente abbia JS attivato ovviamente, funziona egregiamente. Non ho le pagine sotto mano al momento quindi cercherò di spiegare il concetto di cosa ho fatto.

    Il form ha (anche):
    1. un bottone che esegue una funzione jQuery che aggiunge i campi con un numero consequenziale;
    2. un campo nascosto con la sequenza di campi esistenti nel form (value=",1,2,3...");
    3. per ogni input di tipo file creo un campo (hidden oppure text/readonly) il cui valore, quando viene selezionato un file nell'input file corrispondente, viene riempito con il nome del file da caricare.

    codice:
    <form name="mioform" id="idmioform" method="POST" ENCTYPE="multipart/form-data" action="miaactionpage.asp"><input type="hidden" name="arrNumeri" value=",1,2"> 
    <input type="text" name="Descrizione1" value=""><input type="file" name="File1" onchange="javascript:lamiafunzione('numeroFile');" ><input type="file" name="FileN1" value=""> 
    <input type="text" name="Descrizione2" value=""><input type="file" name="File2" onchange="javascript:lamiafunzione('numeroFile');" ><input type="file" name="FileN2" value=""> 
    <input type="image" src="ilmiobottone.png" onclick="return(aggiungicampi());" >
    </form>
    Nella action page:
    a. trasformo in un array del campo di cui al punto 2 precedente e ne determino l'indice massimo (rispettivamente con Split() e UBound() );
    b. eseguo un ciclo for...next in cui comparo, comparo Uploader.Form("fileN" & variabile) con il nome del file corrente (File.FileName) e se trovo una corrispondenza, prelevo il valore (che è un numero) dell'array di cui sopra.

    codice:
    maxNUMs = UBound(Split(Uploader.Form("arrNumeri"),","))
    arrNUMs = Split(Uploader.Form("arrNumeri"),",")
    
    [...]
    
    for cNUMs = 1 to (maxNUMs)
    	if Uploader.Form( "FileN" & arrNUMs(cNUMs) ) = File.FileName then
    		NUMs = cNUMs
    	end if
    next
    
    [...]
    uncampochevolevo = Uploader.Form( "Descrizione" & NUMs )
    In questo modo so il "numero" del file che sto trattando nel ciclo "For Each File In Uploader.Files.Items...Next" e posso recuperare i campi che si riferiscono ad esso.



    Cia!!




    Originariamente inviato da optime
    nello spirito del forum, posta la soluzione, potrebbe interessare a qualche altro forumista con il tuo stesso problema.

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.