Visualizzazione dei risultati da 1 a 4 su 4

Discussione: cancellare riga

  1. #1

    cancellare riga

    Ciao!
    mi sono ritrovato ad usare dei file di testo come piccoli database per la mancanza di quelli veri e propri fra i servizi del mio spazio web (e la mancanza di pecunia per cambiare alloggio elettronico!)

    E mi sono arenato davanti al problema di cancellare una riga da uno di questi file lasciando integro il resto.. C'è qualche funzione che lo può fare dato il numero di riga? o qualche altro modo?

    Il file ha la struttura:
    Riga1
    riga2
    riga3
    ...

    abitualmente lo leggo prima tutto, memorizzando in array e poi stampo con un bel for in tabelle i dati contenuti, ma per cancellare per ora ho sempre dovuto fare a mano sul file di testo..

    Il mio tentativo di fare una pagina che mi cancelli una riga ha impallato il server del sito per 5 minuti (sito e pagine non disponibili! ).. e non ho ancora capito perchè!
    quindi chiedo a voi..

    Grazie mille!!
    visit the BEST italian fotolog http://www.ghiacciato.it/fotolog

    "Solo due cose sono infinite, l'universo e la stupidità dell'essere umano.. ma sulla prima ho ancora delle riserve.." A.Einstein

  2. #2
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122
    utilizzo lo stesso identico modo nel phpNIX

    toh un piccolo assaggio...

    prima prelevi tutto il contenuto del file di testo su un array

    $myarray = $testo;

    poi cancelli tutto il contenuto del file di testo:
    Codice PHP:
    $fp = fopen('testo.php', 'w');
        if(!fputs($fp, '<?php'."\n".' $testo = array(); ' )) {
                 $server_err++;
        }
    fclose($fp);
    poi riaggiungi tutto tranne il numero $i che vuoi cancellare

    Codice PHP:
                for($i=0$i<count($myarray); $i++) {
                    if(
    $i != numero della matrice che vuoi eliminare) {

                        
    $fp fopen('testo.php''a');
                        if(!
    fputs($fp"\n".'$testo[] = \''$testo[$i] .'\' ; ')) {
                                
    $server_err++;
                                            }
                        
    fclose($fp);

                    }
                } 

    ci sarebbe da dire un bel po di cose ma...spero che tu abbia capito
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

  3. #3

    eccomi..

    Allora, il procedimento è quello che avevo in testa pure io!
    nn conoscevo la funzione count() e mi arrabattavo memorizzandomi il numero di righe lette..

    riguardo al tuo codice..
    $fp = fopen('testo.php', 'w');
    if(!fputs($fp, '<?php'."\n".' $testo = array(); ' )) {
    $server_err++;
    }
    fclose($fp);
    in questa parte stai leggendo o scrivendo il file? perchè mi dici che prima va letto tutto il contenuto, ma qui fai un puts.. e in
    ".' $testo = array(); ' ))
    cosa stai facendo :master: ??

    per la parte della riscrittura è come l'avevo scritta io, a parte il fatto che il file non lo aprivop tutte le volte ma che mantenevo lo stesso puntatore a file e lo aprivo e chiudevo prima e dopo il for..

    un ultima cosa: nel put() tu inserisci il \n prima di scrivere il dato ($testo[£i]) ma a me non va e mi ristrovo con un file di cose scritte di fila che perdono la loro utilità.. hai suggerimenti?


    grazie!!
    visit the BEST italian fotolog http://www.ghiacciato.it/fotolog

    "Solo due cose sono infinite, l'universo e la stupidità dell'essere umano.. ma sulla prima ho ancora delle riserve.." A.Einstein

  4. #4
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122

    Re: eccomi..

    Originariamente inviato da ghiacciato
    in questa parte stai leggendo o scrivendo il file? perchè mi dici che prima va letto tutto il contenuto, ma qui fai un puts.. e in
    cosa stai facendo :master: ??
    allora...quello che ho fatto è stato:
    prima creo un array in cui copio esattamente tutto l'array contenuto nel file txt/php (io lo faccio in un'altra maniera , se vuoi il codice dimmelo)
    adesso che ho tutto il contenuto del file già memorizzato posso cancellare tutto quello che c'è dentro il file giusto ?
    Con questo script
    Codice PHP:
    $fp = fopen('testo.php', 'w');
           if(!fputs($fp, '<?php'."\n".' $testo = array(); ' )) {
                   $server_err++;
           }
    fclose($fp);
    sto cancellando esattamente tutto perchè lo apro in totale scrittura con 'w'.
    Hai detto tu che volevi memorizzare tutto quanto in un array nel file txt/php.
    alla fine con quel scritp nel file txt/php non viene altro che scritto questo:

    <?php
    $testo = array();

    e serve per un eventuale include('testo.php') in futuro

    Originariamente inviato da ghiacciato
    per la parte della riscrittura è come l'avevo scritta io, a parte il fatto che il file non lo aprivop tutte le volte ma che mantenevo lo stesso puntatore a file e lo aprivo e chiudevo prima e dopo il for..
    io facciò tutto in più file txt/php. Quindi ho bisogno di più puntatori. Per facilitarti potresti fare una funzione (o classe) del tipo
    Codice PHP:
    function ciccio($nome$tipo$contenuto) {
    global 
    $server_err;
    $server_err 0;
    $fp fopen($nome$tipo);
           if(!
    fputs($fp$contenuto )) {
                   
    $server_err++;
           }
    fclose($fp); 

    da richiamare n volte


    Originariamente inviato da ghiacciato
    un ultima cosa: nel put() tu inserisci il \n prima di scrivere il dato ($testo[$i]) ma a me non va e mi ristrovo con un file di cose scritte di fila che perdonot la loro utilità.. hai suggerimeni?
    3 cose:
    1) il \n nei file txt non funziona. Viene fuori solo un quadrato nero.

    2) fai tutto in un file php che in un txt così risolvi il problema

    3) sei sicuro di non inserire il \n tra gli apici ' ' ?
    perchè '\n' è molto differente da "\n"




    Originariamente inviato da ghiacciato
    grazie!!
    prego
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

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.