Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885

    andare a capo ad ogni riga in fase scrittura file. ciò non avvine come desiderato

    ciao a tutti , mi presento con un problema di righe nel file.

    io possiedo un file con n righe.
    Queste righe potranno essere modificate tramite web da un apposito form.
    io ho utilizzato un sistema di sovresdcrittura del file o meglio quando trovo la riga interessata la sostituisco con i valori nel form, mentre le altre le lascio stare cosi come sono.
    Dopo di che salvo tutto il file e lo sovrascrivo riga per riga..
    il problema e che non va a capo ad ogni fine riga, con \r\n va a capo di 2 o 3 spazi ad ogni modifica. sinceramente non so più come fare!

    vi posto il codice per una miglio lettura

    Codice PHP:

    foreach ($righe_file as $righe ){//ciclo il file
                
    $a++;//incremento il contatore per sapere quanti cicli si sono effettuati
                
    $explo explode (";",$righe);//esplodo le linee del file una alla volta
                
    if ($cambio[2] == $explo[2]){//verifico se nel punto preciso esiste l'uguaglianza
                    
    $data[$a] = implode (";" $cambio);//includo in data l'implosione della modifica
                
    }else{
                    
    $data[$a] = implode (";" $explo);//includo l'implosione dei vecchi valori
                
    }
            }
    //chiuso il ciclo foreach
            
    $conto ;//valorizzo una variabile contatore
            
    $errorescrittura ;//creo un contatore per gli errori di scrittura
            
    foreach ($data as $da){//ciclo data per tutta la sua lunghezza
                
    if ($conto == ){//se è la prima volta che entra nel ciclo
                    
    $open_file fopen($file"w");//apro il file in modalità scrittura (w punta l'inizio del file)
                
    }else if (($conto != ) && ($conto >= 1)){//se non è la prima scrittura
                    
    $open_file fopen($file"a");//apro il file in modalità scrittura (a parte dal fondo del file)
                
    }
                
    $conto++;//incremento il contatore
                
    if (trim($da) !== ""){
                
    $vettore $da."\r\n";//vettore contiene il file pronto
                //creo un ciclo per l'array modificato
                
    $scrittura fwrite($open_file,$vettore);//scrivo il file con i permessi sopra elencati
                
    fclose ($open_file);//chiudo il file
                    
    if (!$scrittura){//se una delle scritture è fallita
                        
    $errorescrittura++;
                    }
                }
                } 
    $cambio è l'array con tutti i valori presi dal form!

    grazie dell'aiuto

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    scusa... non ho seguitotutto l'iter del tuo codice... vedo che usi il ";" come separatore... puoi postare un esempio di riga? Inoltre mi pare che cicli nei dati (come in effetti spieghi) e fai dei salvataggi multipli... non puoi semplicemente leggere il file come vettore, sostituire gli elementi da cambiare e poi risalvare tutto da zero?

  3. #3
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    l'esempio della riga è questa

    3;8;3;psda asdsa;DFMKOMG;torino;to;;;;;;12512512544;;SDFSDFDF ;2009-12-18;B;5009;

    scusa i caratteri incomprensibili ma faccio prove grossolane.

    si io effettuo dei salvataggi multipli, questo lo avevo fatto per una problematica che non ricordo più

    ora sto provando a salvare tutti i valori dell'array data[] in vettore e poi sovrascriverli usando W
    ma da degli errori di scrittura...
    ciao!

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    mmmh... non so... secondo me dovresti riuscire con qualcosa del genere:

    Codice PHP:
    $righe file($nomedelfile); // leggi il file in un vettore
    foreach ($righe as &$riga) {
      
    // qui controlli per ogni riga se devi fare la sostituzione con i dati del form:
      // non ho ben capito qual è il criterio per decidere la sostituzione, cmq qualcosa come:
      
    $sostituisci = (...condizione...);
      if (
    $sostituisci) {
       
    $nuovariga = ...;
        
    $riga $nuovariga;
      };
    };
    file_put_contents($nomedelfileimplode("\r\n"$righe)); 

  5. #5
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    Ti ringrazio dell'aiuto ...
    ho risolto nella maniera più becera che esista...

    ho notato che mi andava a capo n volte e non riuscivo a capire il perchè.

    alla fine ho scoperto che lui nelle righe dove non effettua nessuna modifica va a capo ...
    quindi ho creato una variabile:

    Codice PHP:
    if ($indice_di_cambio === $a){$andareacapo "\r\n";}else if ($indice_di_cambio !== $a){$andareacapo "";} 
    e poi ho inserito la cvariabile valolrizzata solo se ha effettuato il cambio di riga cosi
    Codice PHP:
    $scrittura fwrite($open_file,$vettore."".$andareacapo);//scrivo il file con i permessi sopra elencati 
    ovviamente apportando alvcune semplici modifiche al codice postato precedentemente...
    tipo ho tolto tutti i "\r\n" di troppo!


    ciao e grazie

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 © 2024 vBulletin Solutions, Inc. All rights reserved.