Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Rinominare directory

  1. #1

    Rinominare directory

    devo fare una cosa un pò particolare.
    io ho una serie di directory che si chiamano come i titoli degli articoli.
    se cambio il titolo di un articolo (tramite form) devo rinominare anche l'omonima directory.
    dopo il submit e l'invio dei dati al db ho provato a fare così:
    Codice PHP:
                if ($_POST['titolo'] != $_GET['ti']) {
                    
    renameDir($_GET['ti'], $_POST['titolo']);
                }
    ..........
    function 
    renameDir($nome_old$nome_new) {
        
    $dir '../img_articoli/';
        if (
    file_exists($dir $nome_old)) {
            
    rename($dir $nome_old$dir $nome_new);
        }

    nn ottengo nulla, neanche errori.
    dove sto sbagliando?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    48
    Perchè usi "file_exists()"? Semai dovresti usare "is_dir()".

  3. #3
    a volte is_dir può dare errori mentre file_exists funziona correttamente
    Ciao!

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    48
    devi verificare che $_POST['titolo'] e $_GET['ti'] contengano i valori che volevi tu. Prova con un echo( $_POST['titolo']) (lo stesso per $_GET). Poi verifica allo stesso modo "$dir . $nome_old" facendo anche qui un echo() può darsi che l'errore sia nel passaggio di parametri dalla pagina chiamante oppure che la directory non sia quella giusta, devi vedere dove si trova il file dello script, anche se penso che questo lo hai già controllasto abbondantemente.. se poi questo codice che hai postato e richiamato da un altro file php con include o require il riferimento alla cartella img_articoli deve essere fatto in relazione al file php chiamante, non a quella incluso. Se non da errori vuol dire provabilmente che, per qualche strano motivo, quando fai if (file_exists($dir . $nome_old)) restituisce false e va oltre.

  5. #5
    i valori sono giusti:
    Codice PHP:
                if ($_POST['titolo'] != $_GET['ti']) {
                    
    renameDir($_GET['ti'], $_POST['titolo']);
                    echo 
    '$_GET: ' $_GET['ti'] . '
    '
    ;
                    echo 
    '$_POST: ' $_POST['titolo'] . '
    '
    ;
                }
    ......................
    function 
    renameDir($nome_old$nome_new) {
        
    $dir '../img_articoli/';
        if (
    file_exists($dir $nome_old)) {
            echo 
    'old: ' $nome_old '
    '
    ;
            echo 
    'new: ' $nome_new'
    '
    ;
    //        rename($dir . $nome_old, $dir . $nome_new);
        
    }

    questo il risultato:
    codice:
    old: 151 miglia
    new: 151 migli
    $_GET: 151 miglia
    $_POST: 151 migli
    old è uguale a GET (cioà al valore passato al form di modifica).
    new è uguale a POST (cioè al nuovo valore immesso nel titolo).
    direi che fin qua tutto bene.
    quindi:
    Codice PHP:
    function renameDir($nome_old$nome_new) {
        
    $dir '../img_articoli/';
        if (
    file_exists($dir $nome_old)) {
            echo 
    'old: ' $dir $nome_old '
    '
    ;
            echo 
    'new: ' $dir $nome_new '
    '
    ;
    //        rename($dir . $nome_old, $dir . $nome_new);
        
    }

    stampo il percorso completo delle directory:
    codice:
    old: ../img_articoli/151 miglia
    new: ../img_articoli/151 migli
    il percorso è giusto.
    dentro la root del sito ci sta la directory admin e img_articoli.
    io agisco da dentro admin, quindi devo passare al livello sopra e poi entrare dentro img_articoli.
    ../img_articoli/151 miglia.
    la dir c'è.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    48
    rename non è compatibile con i server windows, usi un server windows?

  7. #7
    si uso un server windows....
    cmq ho fatto una prova circa 1 ora fa e ha funzionato.
    nn saprei dirti.

    cmq una possibile alternativa quale potrebbe essere?

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.