Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: cerca file

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2004
    residenza
    Parma
    Messaggi
    104

    cerca file

    Spero di ricevere un aiuto concreto.

    Lo script che segue, in abbinamento a un form cerca un determinato file prendendolo da un file.txt che funge da data base, il tutto solo nella dir dove è situato il file index.

    Ho bisogno di modificarlo in modo che cerchi l'eventuale file anche in tutte le sottodir e che modifichi automaticamente tutte le iniziali di file da minuscole in maiuscole, es: il file si chiama Pippo.html chiunque inserisca pippo.html, diventi in automatico Pippo.html

    Spero di esser stato chiaro, grazie a chiunque mi darà una mano.


    <?php
    if(!empty($_POST['nome'])){
    $nom=$_POST['nome'];
    $ff=file("./elenco.txt");
    for($i=0;$i<count($ff);$i++){
    $nar=explode(".",$ff[$i]);
    if($nar[0]==$nom){
    header("location:http://127.0.0.1/$nar[0].html");
    exit;
    }
    if($nar[0]=="end") {
    echo "
    <table align=\"center\" height=\"100\" bgcolor=428484>
    <tr>
    <td bgcolor=50A0A0><font color=\"white\" face=\"System\" size=\"+1\"> Mi dispiace ma il nome inserito non è nel data base, inviami una mail e provvederò al più presto al suo inserimento.</font></td>

    </tr>
    <tr>
    <td align=\"center\" bgcolor=6DB6B6><a href=\"/ \"><font color=FFFF00 face=\"Courier\" size=\"1\">Torna alla ricerca</font></a></td>
    </tr>
    </table>";

    }
    else {
    continue;
    }
    }
    }
    else
    ?>

  2. #2
    il file si chiama Pippo.html chiunque inserisca pippo.html, diventi in automatico Pippo.html
    questo problema lo puoi risolvere mettendo il nome dei file nel file.txt scritto tutto in minuscolo e invece di fare
    codice:
    $nom=$_POST['nome'];
    fai

    codice:
    $nom=strtolower($_POST['nome']);
    se vuoi trasformare il primo carattere puoi fare con la funzione

    ucfirst()

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2004
    residenza
    Parma
    Messaggi
    104
    Grazie carmine dell'aiuto la prima soluzione è ottima e anche facile, ho da imparare molto


    Chi mi da una mano ora a cercare i file nelle sottodirectory??

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Ma se il file sta in una sottocartella il tuo header location non funzionerà !!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2004
    residenza
    Parma
    Messaggi
    104
    badaze è quello il problema, in generale come faccio a fargli cercare i file nelle sottodir???

    Cambiando logicamente anche il codice, farglieli cercare in una cartella sola è facile ma qui si parla di circa 30 cartelle, aprirle una a una vedere se il file esiste e aprirlo, altrimenti riprendere la ricerca in un altra cartella.

    Ipotizzo ci voglia un ciclo o roba simile ma non riesco a mettere il codice

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Ti propongo questo.

    Devi settare due costanti

    SITE_PATH_START che è l'url della cartella di partenza della ricerca
    SITE_FILE_SYSTEM_START che è il path della cartella di partenza della ricerca
    Le costanti ti consento di limitare la ricerca alle cartelle che desideri.
    Entrambi devono puntare sullo stesso posto come nell'esempio qui sotto.

    codice:
    <?
    
    define ("SITE_PATH_START","http://localhost/site2");
    define ("SITE_FILE_SYSTEM_START","C:/Program Files/EasyPHP/www/Site2");
    
    function cercaFile($nomeFile,$from) {
     $open= @OpenDir($from);
     while($currentEntry=@ReadDir($open)) {
      if(($currentEntry!=".")&&($currentEntry!="..")) {
    	 $nextSubDir = $from."/".$currentEntry;
    	 $repname    = $currentEntry;
       if (is_dir($nextSubDir )) {
    	  $found = cercaFile($nomeFile,$nextSubDir);
    		if ($found) {
    		 return $found;
    		} // if ($found)
    	 } // if (is_dir($nextSubDir ))
    	 if ($currentEntry == $nomeFile) {
    	  $file = str_replace(SITE_FILE_SYSTEM_START,SITE_PATH_START,$nextSubDir);
    		return $file;
    	 } // if ($currentEntry == $nomeFile)
    	} // if(($currentEntry!=".")&&($currentEntry!=".."))
     } // while($currentEntry=@ReadDir($open)) 
     return false; 
    } // function cercaFile($nomeFile,$from) 
    $found = cercaFile("doc_xxx.php",SITE_FILE_SYSTEM_START);
    if ($found) {
     print "trovato $found";
    } else {
     print "non trovato";
    } 
    
    ?>
    La funzione ritorna l'url del file o false se non trovato.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2004
    residenza
    Parma
    Messaggi
    104
    Grazie badaze è un bel codice ma come facio a farlo interagire con il mio, oltre al form?? e si forse mi sono dimenticato di dire che la ricerca parte da un form:

    <table align="center">
    <tr>
    <td> <form method=post>Inserisci un nome:
    <input type=text name=nome>
    <input type=submit value=cerca></form>
    </td>
    </tr>
    </table>

    Io ho trovato una cosa del genere potrebbe andare è molto semplice rispetto al tuo

    $d=dir("./");
    while ($nom=$d->read()) {
    if (($nom!=".")&&($nom!=".."));

    }
    $d->close();

    se si con quali criteri lo inserisco nel mio codice?
    grazie

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da tatoo64

    Io ho trovato una cosa del genere potrebbe andare è molto semplice rispetto al tuo

    $d=dir("./");
    while ($nom=$d->read()) {
    if (($nom!=".")&&($nom!=".."));

    }
    $d->close();
    Ma non ti legge l'arborescenza come il mio !!!

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2004
    residenza
    Parma
    Messaggi
    104

    integrarlo

    badaze, ripeto sicuramente il tuo è migliore ma..... in che punto lo inserisco con il mio, in poche parole il mio codice + il tuo danno origine a un unico codice ma non so dove inserirlo cosa togliere del mio, oltretutto l'ultimo pezzo del tuo codice penso non mi serva a nulla:

    if ($found) {
    print "trovato $found";
    } else {
    print "non trovato";
    }

    io non ho bisogno che mi venga fuori la scritta trovato o non trovato, il file cercato una volta trovato deve essere mostrato come pagina xchè sono tutti .html
    quindi una volta inserito il nome pippo nel form il codice lo cerca nelle varie sottodir e una volta trovato lo visualizza.

    Sempre grato dell'aiuto ti auguro Buon Natale.

    E Buon Natale a tutti voi del Forum.

  10. #10
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Il mio codice è solo a scopo di esempio. Bisogna addattarlo.
    Comunque....prendendo una parte del tuo codice potresti fare cosi.

    codice:
     $nom=$_POST['nome']; 
     $ff=file("./elenco.txt"); 
     for($i=0;$i<count($ff);$i++){ 
      $nar=explode(".",$ff[$i]); 
      if($nar[0]==$nom){ 
       $aaaaa = cercaFile($nom.".html",SITE_FILE_SYSTEM_START);
       if ($aaaaa) {
        header("location:".$aaaaa); 
        exit; 
       }
      }

    PS : Joyeux Noël !!!!

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.