Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    php file di testo(db) cancellare una stringa

    cancellafrase.php
    <?php
    $array =file("miofileditesto.txt");
    $dati=fopen("miofileditesto.txt","a");
    $num2=count($conta);
    $array[£a]= "";
    foreach($conta as $valore)
    {list($num, $data, $ddn, $d6n, $email, $nome, $commento, $ip, $refe) = explode(';', $valore);
    for($eee= 3; $eee < $num2; $eee = $eee+1){
    $num == £aq;
    £aq == $aq-1;
    $conta[$eee]= "$aq, $data, $ddn, $d6n, $email, $nome, $commento, $ip, $refe";
    fwrite($dati,"$conta[$eee]");

    };
    };
    echo "$num2";
    ?>

    miofileditesto.txt

    1;2 gen 2008;12/03/86;napoli;miaemail@email.it;mionome e cognome; mio commento; mio ip: mia pagina di provenienza
    2;2 gen 2008;12/03/86;napoli;miaemail@email.it;mionome e cognome; mio commento; mio ip: mia pagina di provenienza
    3;error;error;error;error;error;error;error
    4;2 gen 2008;12/03/86;napoli;miaemail@email.it;mionome e cognome; mio commento; mio ip: mia pagina di provenienza
    5;2 gen 2008;12/03/86;napoli;miaemail@email.it;mionome e cognome; mio commento; mio ip: mia pagina di provenienza

    allora indirizzando i dati da un form ( $a=3) vorrei dire alla pagina "cancellafrase.php" di cancellare la stringa numero 3 (poichè sono stati inseriti dati sbagliati) e di modificare le altre cosi che non si nota che la stringa numero 3 manca.
    però il codice ke ho scritto non va...
    vorrei capire come devo fare......



  2. #2
    up... vi prego aiutatemi....

  3. #3
    <?php
    $conta=file("leggere12345612prova.txt");
    $dati=fopen("leggere12345612prova.txt","a");
    $num2=count($conta);
    $a='3';
    $a="$a-1";
    foreach($conta as $valore)
    {list($num, $data, $ddn, $d6n, $email, $nome, $commento, $ip, $refe) = explode(';', $valore);
    }

    $null = "cccccccccccccccccccccccc";
    $conta[$a] = $null;
    echo "$conta[$a]";
    echo "$conta[2]";
    echo "$conta[4]";
    ?>


    mi esce

    cccccccccccccccccccccccc3;error;error;error;error; error;error;error 5;2 gen 2008;12/03/86;napoli;miaemail@email.it;mionome e cognome; mio commento; mio ip: mia pagina di provenienza

  4. #4
    vi prego almeno mi dite se è qualkosa di fattibile?

  5. #5
    cià...

    allora: puoi provare a fare nel seguente modo...

    STEP_1. apri il file...
    STEP_2. estrai i contenuti e li salvi in una prima ARRAY spezzandoli attraverso il carattere a capo "\n"

    a questo punto avrai una cosa del tipo

    NOMEARRAY[0] > riga1
    NOMEARRAY[1] > riga 2
    NOMEARRAY[2] > riga 3
    (...)

    STEP_3. per ogni singolo valore dell'array spezzi ulteriormente la riga attraverso il punto e virgola ed otterrai una nuova array

    SUBARRAY[0] > il nr. da modificare
    SUBARRAY[1] > la data
    ...

    ci sei?
    adesso puoi gestire i due eventi

    STEP_4. Dal tuo form viene preso il numerino della riga da cancellare...
    in php lo decrementi di uno

    ES. cancella la riga 5 (php te l otrasformerà in 4 poiché gli indici cominiciano da zero...)

    IF ($incremento_arrayprincipale == $valore_passato_via_form)
    salta le operazioni
    ALTRIMENTI
    - crea una stringa di testo separata da punti e virgola...in cui metterai un valore auto-incrementato a partire da 1 + tutto quello che viene dopo il tuo nr + ;

    ed otterrai una cosa del tipo:

    3;2 genn 2008.........

    che si trasformerà in

    1;2 genn 2008......... ecc. ecc.

    - salva in una ennesima array che kiamerai rePARSING[] il valore della linea...

    STEP_5. Adesso finito il ciclo di informazioni hai la super array rePARSING[] che riciclerai per salvarla nuovamente sul file di testo...

    Il segreto è di fare 2 cicli uno dentro l'altro...
    e di creare una terza array...che utilizzeremo che generare da capo gli "indici" allì'inizio delle stringhe...

    ovviamente se il tuo file di testo è MOLTO MOLTO grande e le modifiche MOLTO MOLTO frequenti...bisogna optaare per un bel DB...

    ciau ciau
    Lenus Media Agency | http://www.lenus.it
    * sviluppo applicazioni web
    * web marketing
    * seo / sem / smm

  6. #6
    ok, stasera scrivo il codice, se funziona lo posto...

    xò non ho capito come fare il punto 3, cioè il subarray come lo creo?

    edit

    ho capito

  7. #7
    ciauz

    son contento che sia kiaro...rileggendolo quasi non lo capivo manco io eheh
    prova e poi posta il codice, così vediamo se va...

    bye bye
    Lenus Media Agency | http://www.lenus.it
    * sviluppo applicazioni web
    * web marketing
    * seo / sem / smm

  8. #8
    mi sa che come fare il punto 3 non l'ho capito ancora... cioè come creo un sub array di un array? se le righe sono 1000000 devo creare 1000000, e poi come faccio a sapere qual'è il sub array che mi serve?

    piuttosto avevo pensato di usare array_splice ( http://it.php.net/array_splice )


    EDIT
    ho appena postato la parte che sono riuscito a realizzare della mia opera http://forum.html.it/forum/showthrea...5#post11281885

  9. #9
    quando fai la prima array non fai altro che ottenere una singola riga...
    ovvero ogni indice della prima array sarà una cosa del tipo:

    0 > 1;4 genn 2008;eccetera
    1 > 2;4 genn 2008;eccetera
    2 > 3;4 genn 2008;eccetera
    3 > 4;4 genn 2008;eccetera

    di conseguenza potrai accedere...alle singole righe del tuo file di testo...
    a che pro?

    ti serve esclusivamente per eliminare il primo numerino che è il tuo ID e modificarlo secondo le tue esigenze...

    come?

    $subarray = explode(';', $array[$incr]);

    dove $incr è un numerino autoincrementante utilizzato per scorrerti la prima array...

    ESEMPIO PRATICO


    <?php

    // operazioni per aprire il file e leggerne il contenuto
    (...)

    // queasta variabile ti consentirà di riordinare le singole righe nel una venga cancellata...
    $kiave = 0;
    $reParse= array();
    $valore_preso_dal_form_per_eliminare_una_riga = $_POST[valore_preso_dal_form_per_eliminare_una_riga]; // controlla che sia un numero...

    if ($valore_preso_dal_form_per_eliminare_una_riga < 1 OR !is_int($valore_preso_dal_form_per_eliminare_una_r iga))
    die('Solo numeri, please!!!');

    // crea la prima array, quella per ogni singola riga...
    $array = explode ("\n", $contenuto_file_di_testo);

    for ($incr = 0; counr($array); $incr++)
    {


    // in questo ciclo avrai le singole righe...

    if ($incr == ($valore_preso_dal_form_per_eliminare_una_riga-1)){ // esempio: vuoi eliminare la riga 5, quindi confrontiamo il valore $incr con 4

    // non facciamo niente...

    } else {

    // spezziamo i singoli valori di ogni singola riga...

    $sub_array = explode(';', $array[$incr]);

    for ($k=0; count($sub_array) > $k; $k++)
    {

    // quest'altro ciclo ti consente di accedere ai singoli valori di ogni singola riga...

    $kiave = $kiave + 1;

    // sostituiamo l'identificativo della riga con uno appena generato...
    // aggiungo oltre al numerino anche il punto e virgola, ma fai attenzione vi è una remota possibilità che se in un altro campo della riga ci sia lo stesso numerino seguito dal punto e virgola...beh verrà cambiato anche quello, in alternativa utilizza quella funzione che hai trovato tu...
    $riga = str_replace($sub_array[0] . ';', $kiave . ';', $sub_array($k));

    $reParse[] = $riga;

    }

    // adesso che abbiamo modificato la riga...

    // qui finisce l'if per cancellare la riga...
    }

    }

    // abbiamo finito...
    ci ritroviamo con una super array chiamata reParse che dovrebbe contenere tutti i messaggi riordinati senza la riga cancellata...

    // facciamo un controllo per scrupolo...
    if (count($reParse) < 1)
    die ('l\'array è vuota...meglio fermarsi e fare un po\' di debug...');

    (cancella il vekkio file e riscrivici dentro il contenuto dell'array )

    echo 'fine!';


    ?>
    Lenus Media Agency | http://www.lenus.it
    * sviluppo applicazioni web
    * web marketing
    * seo / sem / smm

  10. #10
    <?php
    $a='3';
    $d='0';
    $c='1';

    $stringa = file("miofile.txt");
    $e= count($stringa);
    $e++;
    $dati=fopen("miofile.txt","w+");
    fwrite("");
    foreach($stringa as $fine)
    {list($num, $data, $ddn, $d6n, $email, $nome, $commento, $ip, $refe, $capo) = explode(";", $fine);
    $d++;
    if(($d!=$a) && ($d < $e)){
    $dati=fopen("miofile.txt","a+");
    fwrite($dati,"$c; $data; $ddn; $d6n; $email; $nome; $commento; $ip; $refe \n");
    $c++;
    };
    };
    ?>


    Allora ho fatto questo, funziona perfettamente.
    L'unico problema è che quando mi ridà il file me lo da con uno spazio tra le righe


    cioè anzicchè darmi

    1;1;1;1;
    1;1;1;1;
    1;1;1;1;
    1;1;1;1;

    mi da
    1;1;1;1;

    1;1;1;1;

    1;1;1;1;

    1;1;1;1;

    a volte in mezzo ci mette anche il punto e virgolola...

    boh ki sa xchè!!

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.