Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666

    Elencare cartelle in una select

    Ciao, sto provando ad elencare tutte le cartelle presenti in una determinata cartella, il problema è che riesco a farlo se la pagina asp è contentuta nella cartella principale, ma se voglio fare lo stesso lavoro con il file asp in una cartella diversa, proprio non mi riesce.

    Mi spiego meglio, nella cartella prova ho le seguenti sottocartelle:

    prova1
    prova2
    prova3

    Se il file contenente la select che le elenca lo inserisco nella cartella prova, la select funziona, ma se invece lo inserisco in un'altra qualsiasi cartella del sito, a quel punto la select non si popola.

    Utilizzo questo script:

    codice:
    <%
    Dim CurFile, PopFileShowSub, ShowPic, PictureNo
    Dim strPathInfo, strPhysicalPath
    %>
    
    <select name="go" style='width:400px;' size=1>
    		  <% 
      ShowSub = request("ShowSub")
      ShowPic = request("ShowPic")
      strPathInfo = Request.ServerVariables("PATH_INFO")
      strPhysicalPath = Server.MapPath(strPathInfo)
       
      Set objFSO = CreateObject("Scripting.FileSystemObject")
      Set objFile = objFSO.GetFile(strPhysicalPath)
      Set objFolder = objFile.ParentFolder
      Set objFolderContents = objFolder.Files
      For each Folder in objFolder.SubFolders
      	If Left(Folder.Name,1)<>"_" Then
    	  	Response.write "<option "
    	  	If ShowSub=Folder.Name Then
    	  		Response.Write "selected "
    	  	End if
    	  	Response.Write"value='" & CurFile
    	  	Response.Write(Replace(Folder.Name, " ", "%20"))
    	  	response.write "'>"
    	  	Response.Write(Folder.Name & "</option>")
    	  	If ShowSub <= " " Then
    	  	  ShowSub = Folder.Name
    		End if
      	End if
      Next 
      Set objFSO = Nothing
      %>
              </select>
    Ho provato ad applicare questa modifica, ma credo vivamente di non essere capace:

    codice:
    strPathInfo = "/prova/"
    Ho provato anche ad inserire un indirizzo fisico del tipo d:\inetpub\nomesito\prova\ ma proprio non ci riesco.

    AltF4

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    strPhysicalPath = Server.MapPath("/prova/")

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666
    Mi da il seguente errore:

    error '800a0035'

    sulla seguente riga:

    codice:
    Set objFile = objFSO.GetFile(strPhysicalPath)
    Non capisco..
    AltF4

  4. #4
    fatti stampare strPhysicalPath e controlla cosa vale

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666
    Mi restituisce il percorso fisico:

    D:\inetpub\webs\sito\prova

    dovrebbe essere giusto, a parte che manca uno \ e che risulta al contrario rispetto a come lo scrivo nello script /

    AltF4

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666
    Come errore mi riporta anche:

    File not found

    non so a cosa si riferisce..
    AltF4

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666
    Partendo dall'errore "File non found" ho scoperto che nello script cercava proprio il file che lo eseguiva e non lo trovava nella cartella, chiaramente perchè non c'era.

    Allora ho fatto questa modifica:

    codice:
    Set objFile = objFSO.GetFolder(strPhysicalPath)
    invece di

    [code]
    Set objFile = objFSO.GetFile(strPhysicalPath)
    [/code[

    In questo modo però popola la select con tutte le cartelle che sono allo stesso livello della cartella "prova", mentre vorrei che elencasse quelle al suo interno.

    Visto che per realizzare questa select ho fatto riferimento ad uno script già esistente, credo ci sia qualcosa che non serve al mio scopo e che probabilmente dovrei ripulire, ma anche cercando non riesco a capire cosa..

    AltF4

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666
    Ok, forse ho risolto, aggiorno la discussione per dovere di cronaca.

    Ho eliminato tutti i riferimenti all'oggetto Files e modificato quelli relativi alle Folders, ecco lo script funzionante:

    codice:
    <select name="go" size=1 id="go" style='width:400px;'>
              <% 
      ShowSub = request("ShowSub")
      ShowPic = request("ShowPic")
      strPathInfo = Request.ServerVariables("PATH_INFO")
      strPhysicalPath = Server.MapPath("/prova/")
     
      Set objFSO = CreateObject("Scripting.FileSystemObject")
      Set objFolder = objFSO.GetFolder(strPhysicalPath)
      For each Folder in objFolder.SubFolders
      	If Left(Folder.Name,1)<>"_" Then
    	  	Response.write "<option "
    	  	If ShowSub=Folder.Name Then
    	  		Response.Write "selected "
    	  	End if
    	  	Response.Write"value='" & CurFile
    	  	Response.Write(Replace(Folder.Name, " ", "%20"))
    	  	response.write "'>"
    	  	Response.Write(Folder.Name & "</option>")
    	  	If ShowSub <= " " Then
    	  	  ShowSub = Folder.Name
    		End if
      	End if
      Next 
      Set objFSO = Nothing
      %>
            </select>
    Bene, così la select è popolata dai nomi delle sottocartelle della cartella "prova". Ho provato e funziona come vorrei, soltanto una cosa, vorrei capire qual'è il significato di questa riga:

    codice:
    Response.Write"value='" & CurFile
    visto che ho tolto tutti i riferimenti ai File, qualcuno riesce a spiegarmi cosa tenta di fare lo script in questo caso? Vorrei pulirlo il più possibile.

    Lo riporto nuovamente:

    codice:
      For each Folder in objFolder.SubFolders
      	If Left(Folder.Name,1)<>"_" Then
    	  	Response.write "<option "
    	  	If ShowSub=Folder.Name Then
    	  		Response.Write "selected "
    	  	End if
    	  	Response.Write"value='" & CurFile
    	  	Response.Write(Replace(Folder.Name, " ", "%20"))
    	  	response.write "'>"
    	  	Response.Write(Folder.Name & "</option>")
    	  	If ShowSub <= " " Then
    	  	  ShowSub = Folder.Name
    		End if
      	End if
      Next
    Quello che riesco a capire è che, nel caso di spazi all'interno del nome della cartella, li sostituisce con %20, ma quel value= & CurFile a cosa servirà mai?

    Grazie mille per l'aiuto!!!
    AltF4

  9. #9
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    A niente, forse nello script originario utilizzava quella variabile.

    roby

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666
    Riprendo questa discussione perchè avrei bisogno di elencare anche i files e non soltanto le cartelle.

    Cerco di spiegarmi meglio, avevo una select che elencava le cartelle presenti al suo stesso livello e con questa discussione ho modificato il percorso in modo da far elencare nella select le cartelle presenti in un livello differente.

    Fin qui tutto ok!

    Ora però avrei bisogno di elencare anche i files presenti nelle sottocartelle e questo funziona soltanto se il file con lo script è inserito allo stesso livello delle sottocartelle che contengono i files, ma a me servirebbe ad un livello differente..

    codice:
    <form action=<%=PopFile%> method="POST">
    <select  onChange="jumppage(this);">
    <% 
    
      ShowSub = request("ShowSub")
      ShowPic = request("ShowPic")
      strPathInfo = Request.ServerVariables("PATH_INFO")
      strPhysicalPath = Server.MapPath(strPathInfo)
    
      Set objFSO = CreateObject("Scripting.FileSystemObject")
      Set objFile = objFSO.GetFile(strPhysicalPath)
      Set objFolder = objFile.ParentFolder
      Set objFolderContents = objFolder.Files
      For each Folder in objFolder.SubFolders
      	If Left(Folder.Name,1)<>"_" Then
    	  	Response.write "<option "
    	  	If ShowSub=Folder.Name Then
    	  		Response.Write "selected "
    	  	End if
    	  	Response.Write"value='" & CurFile & "?ShowSub="
    	  	Response.Write(Replace(Folder.Name, " ", "%20"))
    	  	response.write "'>"
    	  	Response.Write(Folder.Name & "</option>")
    	  	If ShowSub <= " " Then
    	  	  ShowSub = Folder.Name
    		End if
      	End if
      Next 
      Set objFSO = Nothing
      %>
              </select>
      </form>
    questo script elenca nella select tutte le sottocartelle presenti al livello del file prova.asp, il problema è che se indico un percorso differente, ad esempio

    codice:
    strPhysicalPath = Server.MapPath("/public/prova/")
    lo script cerca il file prova.asp e non lo trova, visto che non è presente nella cartella /public/prova/ ed il file prova.asp serve proprio per elencare le sottocartelle, ad esempio: prova.asp?ShowSub=prova2

    Sto provando in ogni modo, ma non trovo soluzioni, è probabile che non si possa fare?



    Spero di essere riuscito a spiegarmi bene..
    AltF4

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.