php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.06.2008, 13:54  
Benutzer
 
Registriert seit: 30.05.2008
Beiträge: 42
thecracked befindet sich auf einem aufstrebenden Ast
Standard Schleifenoutput in datei Speichern

Hi leute,

Habe mir ein script geschrieben, dass mir eine CSV datei aufbereitet.
jetzt möchte ich das aufbereitete in eine datei schreiben.
Habe es schon mal mit "ob_start(), ob_get_contents(); " etc versucht. hat aber nicht hingehauen. Hier ein auszug des scripts:

PHP-Code:

$row 
1;                                   
    
$handle fopen ("export.csv","r");    
    
           
        while ( (
$data fgetcsv ($handle1000";")) !== FALSE ) { 
                                               
          
$num count ($data);                     
                                                                               
                                             
            for (
$c=0$c $num$c++) {              
                print 
$data[$c].";";   
              
            }

            if (
$num == '21') {
                
                echo 
"<br>\n";             
            } 
            
      } 
Ich will quasi so wie ich es auf den Bildschirm sehe den Inhalt in eine datei schreiben.

grüße
thecracked ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.06.2008, 13:59  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Dafür brauchst du doch keinen Output-Buffer oder übersehe ich was? Es würde hier doch vollkommen reichen wenn du print und echo durch file_put_contents ersetzt oder nicht?
cycap ist offline  
Alt 19.06.2008, 13:59  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Wenn du aus der csv-Datei eine neue csv-Datei erstellen willst, kannst du sie auch gleich kopieren.
__________________
Gruss
L

Geändert von lazydog (19.06.2008 um 14:02 Uhr).
lazydog ist offline  
Alt 19.06.2008, 14:44  
Benutzer
 
Registriert seit: 30.05.2008
Beiträge: 42
thecracked befindet sich auf einem aufstrebenden Ast
Standard

@ cycap wie muss das dann genau ausschauen?

habe mal anstat des print "file_put_contents" gesetzt:

PHP-Code:
    file_put_contents($file,$data[$c].";"); 
aber irgendwie funktioniert das nicht ganz. in der datei befindet sich nur ung. 10 zeichen?!
thecracked ist offline  
Alt 19.06.2008, 14:49  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Vermutlich die letzten Daten? file_put_contents überschreibt standardmäßig bei jedem Aufruf alles was in der Datei steht. Du musst FILE_APPEND als zweiten Parameter übergeben damit er Daten anhängt statt diese zu überschreiben:

PHP-Code:
file_put_contents($file,$data[$c].";",FILE_APPEND); 
cycap ist offline  
Alt 19.06.2008, 15:00  
Benutzer
 
Registriert seit: 30.05.2008
Beiträge: 42
thecracked befindet sich auf einem aufstrebenden Ast
Standard

Okey jetzt hat es funktioniert.
Jetzt hab ich allerdings wieder die gleiche formatierung wie wenn ich die alte csv datei in einer txt datei öffne. hmm an was kann das liegen?

das problem ist, das der csv export so aus sieht:

zeit;name;bla;
bla1;usw
test;irgendwas;

so jetzt ist aber zeit - usw ein datensatz. wenn ich das so in eine tabelle importiere,dann macht er mir für jede neue zeile einen datensatz. desswegen will ich mir die csv datei so aufbereiten, dass er die gewünschten datensätze in eine zeile schreibt.
thecracked ist offline  
Alt 19.06.2008, 15:05  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Das altbekannte "Problem" was du hast liegt darin das du auch die Zeilenumbrüche ausliest. In deiner HTML-Ausgabe siehst du die natürlich nicht, weil die ja kein HTML sind. Zeilenumbrüche am Ende einer Variable kannst du zum Beispiel mit trim() entfernen.
cycap ist offline  
Alt 19.06.2008, 15:18  
Benutzer
 
Registriert seit: 30.05.2008
Beiträge: 42
thecracked befindet sich auf einem aufstrebenden Ast
Standard

am also muss ich die neu erstellte datei dann wieder einlesen und dann mittels trim() die zeilenumbrüche weg machen oder kann ich das auch irgendwie so noch einbauen bevor er mir die datei schreibt?
thecracked ist offline  
Alt 19.06.2008, 15:27  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Mit fgetcsv() werden normalerweise keine Zeilenumbrüche eingelesen.
Ok, aber ich glaube, jetzt verstehe ich, du willst immer 21 Felder pro Zeile ausgeben. Da würde ich aber nicht file_put_contents() verwenden, sondern normale fwrite(), bzw fprintf()-Funktionen.
PHP-Code:
$handle fopen ("export.csv","r");  
$out fopen($file'w'); 

$cnt 0;    
$outdat = array();                         
while (
$data fgetcsv ($handle1000";")){    
    for (
$c=0$c $num$c++) {              
        
$outdat[] = $data[$c];   
        
$cnt ++;
        if(
$cnt == 21){
            
fprintf($out"%s\n"implode(';'$outdat));    
            
$outdat = array();
            
$cnt 0;
        }
    }      

fprintf($out"%s\n"implode(';'$outdat)); // Letzte Zeile
fclose($out);
fclose($handle); 
__________________
Gruss
L
lazydog ist offline  
Alt 19.06.2008, 15:37  
Benutzer
 
Registriert seit: 30.05.2008
Beiträge: 42
thecracked befindet sich auf einem aufstrebenden Ast
Standard

@lazydog wenn ich das script so ausführe bekomme ich diese fehler:


PHP-Code:
Warning:  fprintf(): supplied argument is not a valid stream resource in C:xampphtdocs1.php on line 19

Warning
:  fclose(): supplied argument is not a valid stream resource in C:xampphtdocs1.php on line 20 
Zeile: 19 fprintf($out, "%s\n", implode(';', $outdat)); // Letzte Zeile
Zeile: 20 fclose($out);
thecracked ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Quellcode einer dynamischen Seite kopieren und als Datei speichern Lothar PHP Tipps 2008 15 05.05.2008 23:32
Datei speichern bei MIR Uratuso PHP Tipps 2008 2 15.02.2008 19:19
Datei erstellen und Speichern Unter andrew22 PHP Tipps 2006 3 05.10.2006 17:14
String als Datei speichern Zangelo PHP Tipps 2006 23 25.08.2006 14:13
Musik Datei abspielen und parallel als MP3 speichern Plague Off-Topic Diskussionen 5 22.05.2006 19:17
dynamische Seite als htm datei speichern chrisbog PHP Tipps 2006 4 23.01.2006 22:11
Externe Datei auslesen und auf Webspace speichern Beitragsarchiv 9 19.04.2005 16:44
DUMP per Linux in ein Datei speichern!! Klaus Datenbanken 1 11.04.2005 08:12
Idee zum Speichern einer Datei PHP Tipps 2005 6 10.01.2005 22:36
geparste datei speichern PHP Tipps 2007 12 04.01.2005 17:01
Kontaktformular: Felder auslesen und in .txt datei speichern djrace PHP Tipps 2004-2 4 29.12.2004 13:56
TXT Datei Öffnen, lesen, beschreiben, speichern maximus PHP Tipps 2004-2 1 28.11.2004 19:15
daten in einer text datei speichern kain PHP Tipps 2004 12 25.11.2004 14:25
Datei mit php erzeugen Stümper PHP Tipps 2004 4 12.10.2004 12:51
php und ftp PHP Tipps 2004 4 07.10.2004 09:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
schleifenausgabe speichern als array in r, .out datei in php

Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum