Visualizzazione risultati 1 fino 16 di 16

Discussione: Cancellare dentro un ciclo for con contatore "$n" un file$n.txt

  1. #1
    brindstudios non è connesso Neofita
    Data registrazione
    17-10-2014
    Messaggi
    18

    Predefinito Cancellare dentro un ciclo for con contatore "$n" un file$n.txt

    Ciao a tutti,

    sto cercando da un paio di giorni di trovare una soluzione ad un mio piccolo problema ma essendo alle prime armi con php ed eventuali funzioni di jquery chiedo a voi che sicuramente mi illuminerete in un baleno

    ho questo codice:
    Codice PHP:
    <div>
    <?php
    $file
    =scandir("folder/");
    for(
    $i=2; $i<count($file); $i++){
    $var=fopen("folder/file$i.txt","r");
    $var2=fread($var,filesize("folder/file$i.txt"));
    echo
    $var2?>
    </div><img class="pulsante" name="cancella" src="http://forum.it.altervista.org/images/delete.png" onClick="(COSA DEVO FARE PER CANCELLARE SOLO IL file$i???)"/>
    <? } ?>
    </div>
    ho provato con diversi metodi e la funzione del php unlink all'interno del onClick mi da errore cancellando tutti i file dentro la cartella folder(pernso perchè unlink lavoro sul lato server e non è compatibile con onClick). ho provato anche con funzioni estrapolate da codici similari al mio da altri forum con jquery ma niente ho sempre riscontrato qualche problema. Mi sapreste illuminare?? se c'è una soluzione con unlink l'apprezzerei di più perchè la reputo un ottima funzione per il mio scopo! Grazie ancora a tutti,
    BrindStudios!
    Ultima modifica di alemoppo : 14-11-2014 alle ore 19.29.49 Motivo: +tag [php]

  2. #2
    Guest

    Predefinito

    in sostanza vuoi un indice della cartella ed accanto ad ogni file una X per cancellarlo ?

    la cancellazione deve avvenire senza uscire dalla pagina con l'indice o non importa se si ricarica la pagina dopo aver cancellato ?
    Ultima modifica di FormularioDiDrakensang : 14-11-2014 alle ore 17.20.41

  3. #3
    brindstudios non è connesso Neofita
    Data registrazione
    17-10-2014
    Messaggi
    18

    Predefinito

    sarebbe perfetto!!! ma con unlink è possibile???
    non deve uscire dalla pagina perchè ad inizio pagina tra gli <script> ho una funzione che mi fa già il refresh con ajax ogni 10sec
    Ultima modifica di brindstudios : 14-11-2014 alle ore 17.22.13

  4. #4
    Guest

    Predefinito

    certo che è possibile devi solo dire se è indispensabile che la cancellazione sia 'silenziosa' (non ricarichi la pagina)
    oppure non fa niente se la pagina si ricarica

  5. #5
    brindstudios non è connesso Neofita
    Data registrazione
    17-10-2014
    Messaggi
    18

    Predefinito

    Silenziosa

  6. #6
    Guest

    Predefinito

    Codice PHP:

    <?php

    $cartella
    = "./";
    $i = 0;

    if ( isset(
    $_GET['file']) )
    {
    $filetodelete = $_GET['file'];
    }

    foreach (
    scandir($cartella) as $f )
    {
    $i++;
    if (
    $f == "." || $f == ".." || $f == basename(__FILE__) ) continue;
    $chk = md5("file_" . $f);
    $fileentry = "<div id = \"file_$i\"><input type = \"button\" value = 'X' onClick = \"deletefile('$chk','file_$i')\">&nbsp;$f</div>";
    echo
    $fileentry;
    if ( isset(
    $filetodelete) && $chk == $filetodelete)
    {
    unlink($f);
    }
    }

    ?>

    <script>
    function deletefile(who, elem)
    {
    http = new XMLHttpRequest();
    http.onreadystatechange = function() {
    if (http.readyState == 4 && http.status == 200) {
    document.getElementById(elem).style.display = 'none';
    }
    }
    http.open("GET", "?file=" + who, true);
    http.send();
    }
    </script>

  7. #7
    brindstudios non è connesso Neofita
    Data registrazione
    17-10-2014
    Messaggi
    18

    Predefinito

    ciao,
    e da quando mi hai risposto che sto provando a mettere mano sul tuo codice ma in tutti i tentativi ho sempre lo stesso risultato, in poche parole il file lo elimina dalla visualizzazione sulla pagina ma non viene effettivamente cancellato.. come mai??? cosa devo modificare oltre alla $cartella???

  8. #8
    Guest

    Predefinito

    per semplicita' e sicurezza elenchi qualsiasi cartella ma elimini solo se cio' che vuoi cancellare è nella stessa cartella dello script, altrimenti si a unlink devi dare anche $cartella

  9. #9
    brindstudios non è connesso Neofita
    Data registrazione
    17-10-2014
    Messaggi
    18

    Predefinito

    scusami ma non ho capito!! cmq credevo che sarebbe stato molto più semplice il codice da integrare; se questo è il metodo non ci sarei mai arrivato!!!

  10. #10
    brindstudios non è connesso Neofita
    Data registrazione
    17-10-2014
    Messaggi
    18

    Predefinito

    raga nessuno mi può aiutare rimanendo il più vicino possibile al mio codice???

  11. #11
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    C'é qualcosa che mi sfugge nella tua richiesta: ammettiamo che tu abbia n file potenziali da eliminare:
    Codice:
    file1.txt
    file2.txt
    file3.txt
    file4.txt
    ...
    filen.txt
    Appariranno quindi n pulsanti, ciascuno per eliminare un file, da 1 a n. Quando clicchi in un pulsante per eliminare (ad esempio) il file 3, essendoci un for da 1 a n-2 rivedrai ancora la possibilità di eliminare il file 3!.

    Se ho capito cosa vuoi fare:

    Codice PHP:
    <div>
    <?php
    if(isset($_GET['delete']))
    {
    unlink('./folder/'.$_GET['delete']);
    }

    $files=scandir("folder/");
    foreach(
    $files as $file){
    if(
    $file != '.' && $file != '..')
    echo
    '<a href="'.$_SERVER['PHP_SELF'].'?delete='.$file.'"><img class="pulsante" name="cancella" src="http://forum.it.altervista.org/images/delete.png"></a>';
    }
    ?>
    </div>
    p.s: se invece della scandir avessi usato la glob, si sarebbe potuto evitare di inserire quell'if che controlla se il file da eliminare è "." o "..".

    Immagino non sia necessario dirlo, ma magari per qualcun altro che in futuro cercherà una cosa simile, questo script è troppo pericoloso da lasciarlo poter accedere senza alcun controllo di password/sistema login. Potenzialmente, chiunque potrebbe eliminare qualsiasi (anche file fuori dalla cartella folder) file del proprio sito.

    EDIT: ovviamente chiedi pure per qualsiasi dubbio sul codice.

    Ciao!
    Ultima modifica di alemoppo : 17-11-2014 alle ore 20.53.32

  12. #12
    brindstudios non è connesso Neofita
    Data registrazione
    17-10-2014
    Messaggi
    18

    Predefinito

    Ciao,
    quest'ultimo codice funziona bene ma mi servirebbe qualcosa sul lato client una chiamata ajax ad esempio che si interfacci con una variabile inviata dal php...sto cercando di risolvere il problema tramite le varie guide sparse sulla rete ma per me che sono un neofita della materia certi passaggi sono arabo mi perdo nel passaggio dei dati... cmq per rassicurarti c'è un file .htacces che mi permettere di tutelare il contenuto della cartella folder XD

    in pratica avendo in php un ciclo for con contatore $n, che mi fa apparire all'interno di $n <div> il contenuto dei file$n.txt, voglio creare un pulsante button$n che cliccato mi faccia cancellare con la funzione unlink il file$n contenuto nel <div>.

    Sto impazzando ma per voi programmatori esperti non dovrebbe essere troppo difficile; HELP ME

  13. #13
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    Ma perché il contatore $n? Cioè, se elimini un file come si deve comportare lo script?

    Per la parte ajax, a occhio mi sembra che il codice di FormularioDiDrakensang dovrebbe essere corretto. Al più vedi qui.

    Ciao!

  14. #14
    brindstudios non è connesso Neofita
    Data registrazione
    17-10-2014
    Messaggi
    18

    Predefinito

    il contatore serve per sapere che file $n cancello... XD lo script di FormularioDiDrakensang me li nasconde dalla pagina ma appena faccio un refresh i file riappaio, cioè non vengono eliminati!!!

  15. #15
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    Rileggi attentamente il mio messaggio (#11) iniziale.

    Ciao!

  16. #16
    brindstudios non è connesso Neofita
    Data registrazione
    17-10-2014
    Messaggi
    18

    Predefinito

    finalmente ho trovato la soluzione, sicuramente non sono stato io in grado di spiegare cosa volessi però è proprio quello che si vede in questo video: https://www.youtube.com/watch?v=y1lTHZdS0oU
    la gentilezza più grande è che il codice è tutto scaricabile e quindi sono riuscito a modificarlo del tutto per renderlo pienamente compatibile per risolvere al 100% il mio problema, ringrazio tutti ugualmente per il supporto e l'aiuto che nonostante la mia incapacità state cercando di darmi!GRAZIE!!!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •