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

    [php - problema con script]

    Ciao a tutti!

    Ho creato un piccolo form per salvare e cancellare delle news all'interno di una directory; ho realizzare anche alcune opzioni per cancellare una singola news, con la possibilità di cancellarle anche tutte.

    Ora vorrei riuscire a cancellare tutte le news di un certo mese.

    Premetto che ogni singola news è un file di testo tipo "20070308.txt", quindi avevo pensato di agire in questo modo:

    - mandare al file php dal form la variabile $ms, che rappresenta, in numero, il mese da cancellare;
    - controllare che all'interno del nome del file ci sia la giusta corrispondenza con il numero del mese;
    - cancellare il file con relativi messaggi di successo e/o errore.

    Ho pertanto realizzato questo semplice script che però non ne vuole sapere di funzionare ed essendo nuovo nel campo php non riesco ad inquadrare bene il problema; qualcuno può darmi qualche suggerimento?

    Ecco lo script:

    <?php
    $mese="$ms";
    $apri=opendir('news');
    while($file=readdir($apri)){
    $leggi=substr('$file', 4,5);
    }
    if($leggi=="$mese"){
    @unlink($leggi);
    echo "FILE CANCELLATO CON SUCCESSO";
    }else{ echo "SI E' VERIFICATO UN ERRORE";}
    ?>

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Nel tuo codice metti la cancellazione del file FUORI dal ciclo, quindi l'istruzione
    if($leggo==$mese)
    Viene eseguita UNA SOLA VOLTA e dopo che hai già letto TUTTI i file
    Prova una cosa del genere e vedi come va
    Codice PHP:
    <?php
    $mese
    ="$ms";
    $apri=opendir('news');
    $trovato false;
    while(
    $file=readdir($apri) and !$trovato)
    {
      
    $leggi=substr('$file'4,5);
      if(
    $leggi=="$mese")
      {
        
    $trovato true;
        if(
    unlink($leggi));
          echo 
    "FILE CANCELLATO CON SUCCESSO";
        else
          echo 
    "ERRORE";
      }
    }

    ?>

  3. #3
    In effetti il mio ragionamento era quello di controllare tutti i file e poi dare l'istruzione in base al controllo appena eseguito.

    Oggi pomeriggio provo ad applicare il tuo suggerimento e vediamo cosa succede.

    Intanto grazie.
    Ciao, ciao.


  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Mi viene un dubbio
    Questa istruzione
    $leggi=substr('$file', 4,5);
    forse intendevi
    $leggi=substr('$file', 4,2);
    Poichè il terzo parametro indica QUANTI CARATTERI prendere dalla stringa, e il mese suppongo sia di 2 caratteri

  5. #5
    Già, doveva essere proprio così.
    Meno male che hai notato questo particolare perché altrimenti sarei andato avanti per ore prima di accorgermene.
    Grazie ancora.
    Ciao, ciao.

  6. #6
    Niente da fare...

    Anche correggendo alcune cose non ne vuole sapere di funzionare.
    Non se che dire...

    Probabilmente il problema è il ciclo di lettura che non riesce ad individuare il file e di conseguenza ad eliminarlo.

    Non ho però i mezzi per trovare una risposta.
    Grazie lo stesso.

    Ciao, ciao.

  7. #7
    Ho provato a fare in questo modo, ma non riesco a cancellare il file, dove sbaglio?

    $mese="$ms";
    if($mese!=""){
    $apri = opendir('news');
    while($file=readdir($apri)) {
    if (substr($file, 4,2)==$mese && substr($file, -4)==".txt" && strlen ($file)==12) {
    foreach (glob($file) as $nomefile)
    {
    @unlink($nomefile);
    closedir($apri);
    }
    }
    }
    echo "CANCELLAZIONE EFFETTUATA CON SUCCESSO
    <a href=\"form.php\">REINSERISCI I DATI</a>
    oppure
    <a href=\"index.php\">TORNA ALLA HOME PAGE.</a>";
    } else {
    echo "SI E' VERIFICATO UN ERRORE!
    <a href=\"index.php\">Torna alla home page</a>";
    }
    ?>

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.