Alt 11.08.2007, 16:25:08   #1 (permalink)
BartTheDevil89
Devilution Media
Benutzerbild von BartTheDevil89

ID: 87739
Lose senden

BartTheDevil89 eine Nachricht über ICQ schicken
Reg: 02.05.2006
Beiträge: 3.963
Standard [PHP] erst .gz-Datei entpacken, dann diese Datei aufnehmen und darstellen

Hallo,

ich habe diesmal ein etwas schwieriges Problem, wo ich nicht wirklich weiterkomme:

Ich bekomme per URL einen .gz-gepackte-Datei. Diese Datei möchte ich jetzt entpacken und in diesem Paket muss genau 1 Datei drin sein! Diese Datei möchte ich jetzt auslesen und den Inhalt per echo darstellen!

Klingt ja eigentlich ganz einfach, aber leider komm ich damit nicht weiter.

Danke für eure Hilfe
Rabatt-Gutscheine-Kostenlos.de - Rabattgutscheine für diverse Onlineshops. Immer kostenlos..

Grillmatten - Grillmatte.de zeigt dir alle Infos
BartTheDevil89 ist offline   Mit Zitat antworten
Alt 11.08.2007, 16:38:34   #2 (permalink)
ZeroCCC
wasn das?
Benutzerbild von ZeroCCC

ID: 46810
Lose senden

ZeroCCC eine Nachricht über ICQ schicken
Reg: 10.05.2006
Beiträge: 1.734
Standard

Einfach mit gzopen öffnen und dann mit mit fgets auslesen...
 
ZeroCCC ist offline   Mit Zitat antworten
Alt 11.08.2007, 17:08:16   #3 (permalink)
BartTheDevil89
Devilution Media
Benutzerbild von BartTheDevil89

ID: 87739
Lose senden

BartTheDevil89 eine Nachricht über ICQ schicken
Reg: 02.05.2006
Beiträge: 3.963
Standard

Zitat:
Zitat von ZeroCCC Beitrag anzeigen
Einfach mit gzopen öffnen und dann mit mit fgets auslesen...
Hallo,

hab es jetzt mal so versucht:

Code:
1:
2:
3:
$file = gzopen("http://domain.de/tar.gz", "r"); $file = fgets("$file"); echo "File ist jetzt $file an dieser Stelle";
Allerdings läuft es so nicht, was mir auch verständlich ist. Denn muss ich fgets nicht erstmal den file zuweisen, der aus dem gzopen kommt?
Rabatt-Gutscheine-Kostenlos.de - Rabattgutscheine für diverse Onlineshops. Immer kostenlos..

Grillmatten - Grillmatte.de zeigt dir alle Infos
BartTheDevil89 ist offline Threadstarter   Mit Zitat antworten
Alt 11.08.2007, 17:50:59   #4 (permalink)
theHacker PREMIUM-User
sieht vor lauter Ads
den Content nicht mehr
Benutzerbild von theHacker

ID: 69505
Lose senden

theHacker eine Nachricht über ICQ schicken theHacker eine Nachricht über Skype™ schicken
Reg: 20.04.2006
Beiträge: 22.685
Standard

Die Resource zum String konvertieren und damit das Handle der Datei zu überschreiben, is wohl ned besonders clever

PHP-Code:
1:
2:
3:
4:
5:
$fp gzopen("file.gz""r");
$data fgets($fp);
gzclose($fp);

echo 
$data
So sagt es zumindest das Manual aus (*gz-Funktionen noch nie benutzt hab*)
NEU theHacker.blog NEU
– It's just a glitch in the Matrix –

OpenIsles - das freie Insel-Aufbauspiel | www.theHacker.ws v3 | WhatPulse-Team
theHacker ist offline   Mit Zitat antworten
Alt 12.08.2007, 13:43:47   #5 (permalink)
ZeroCCC
wasn das?
Benutzerbild von ZeroCCC

ID: 46810
Lose senden

ZeroCCC eine Nachricht über ICQ schicken
Reg: 10.05.2006
Beiträge: 1.734
Standard

Zitat:
Zitat von BartTheDevil89 Beitrag anzeigen
Code:
1:
2:
3:
$file = gzopen("http://domain.de/tar.gz", "r"); $file = fgets("$file"); echo "File ist jetzt $file an dieser Stelle";
Allerdings läuft es so nicht, was mir auch verständlich ist. Denn muss ich fgets nicht erstmal den file zuweisen, der aus dem gzopen kommt?
Ja ist verständlich, wenn man noch nichtmal mit solchen elementaren Sachen wie Variablen klar kommt, geschweigedenn Fehlermeldungen zu verstehen. So von wegen wir wandeln ein Filehandler in einen String um und übergeben diesen mal an eine Funktion die darauf "is not a valid ressource" ausspuckt.

Und nein du musst fgets gar nichts zuweißen ausser einen Filehandler. In einem .gz Archiv steckt immer nur eine "Datei" und den Inhalt dieser Datei bekommst du mit fgets...

PS: wenn du eine .tar.gz hast (dein Beispiel) ist das nur die hälfte...
 
ZeroCCC ist offline   Mit Zitat antworten
Alt 13.08.2007, 10:08:44   #6 (permalink)
BartTheDevil89
Devilution Media
Benutzerbild von BartTheDevil89

ID: 87739
Lose senden

BartTheDevil89 eine Nachricht über ICQ schicken
Reg: 02.05.2006
Beiträge: 3.963
Standard

Zitat:
Zitat von theHacker Beitrag anzeigen
Die Resource zum String konvertieren und damit das Handle der Datei zu überschreiben, is wohl ned besonders clever

PHP-Code:
1:
2:
3:
4:
5:
$fp gzopen("file.gz""r");
$data fgets($fp);
gzclose($fp);

echo 
$data
So sagt es zumindest das Manual aus (*gz-Funktionen noch nie benutzt hab*)
Ah ok...damit kann ich den File entpacken.....aber jetzt kommt erst das schwierige, denn diese Datei ist eine csv-Datei.
Aufgabe des gesamte Scripts soll es sein dieser csv-Datei noch einen Tabellenkopf hinzuzufügen und dann wieder als csv-Datei auszuliefern.

Also beispielsweise ich habe diese CSV-Datei:

1;blub;3
2;bllll;77
3;ölajf;555
4;öjsafjdl;44
....

Jetzt möchte ich nachträglich allerdings noch einen Tabellenkopf einbauen. Also so soll es nachher ausschauen:

id;name;zahl
1;blub;3
2;blll;77
3;.....

Und dann soll es wieder als csv-Datei ausgeliefert werden.....aber jetzt natürlich die Frage: Wie bekomm ich sowas hin? Ich hab schon probiert mit fgetcsv rumprobiert aber irgendwie bekomm ich das nicht hin....kann mir jemand helfen?
Rabatt-Gutscheine-Kostenlos.de - Rabattgutscheine für diverse Onlineshops. Immer kostenlos..

Grillmatten - Grillmatte.de zeigt dir alle Infos
BartTheDevil89 ist offline Threadstarter   Mit Zitat antworten
Alt 13.08.2007, 10:29:32   #7 (permalink)
theHacker PREMIUM-User
sieht vor lauter Ads
den Content nicht mehr
Benutzerbild von theHacker

ID: 69505
Lose senden

theHacker eine Nachricht über ICQ schicken theHacker eine Nachricht über Skype™ schicken
Reg: 20.04.2006
Beiträge: 22.685
Standard

Jetzt erstmal ganz scharf nachdenken

Vorher:
Code:
1:
2:
3:
4:
1;blub;3 2;bllll;77 3;ölajf;555 4;öjsafjdl;44
Nachher:
Code:
1:
2:
3:
4:
5:
id;name;zahl 1;blub;3 2;bllll;77 3;ölajf;555 4;öjsafjdl;44
Was hat sich geändert ? Am Anfang ne Zeile mehr ? Wie wäre es dann mit
  • erst die neue Zeile schreiben und
  • den Rest einfach abschreiben
?
NEU theHacker.blog NEU
– It's just a glitch in the Matrix –

OpenIsles - das freie Insel-Aufbauspiel | www.theHacker.ws v3 | WhatPulse-Team
theHacker ist offline   Mit Zitat antworten
Alt 13.08.2007, 10:55:34   #8 (permalink)
BartTheDevil89
Devilution Media
Benutzerbild von BartTheDevil89

ID: 87739
Lose senden

BartTheDevil89 eine Nachricht über ICQ schicken
Reg: 02.05.2006
Beiträge: 3.963
Standard

Zitat:
Zitat von theHacker Beitrag anzeigen
...
Genau die denkweise habe ich ja auch....aber erstens kommt jetzt aus dem oben genannten Code nur eine Zeile beim echo raus und dann ist die Frage, wie ich es dann an das system übergebe, das eigentlich csv-Dateien bearbeitet.
Rabatt-Gutscheine-Kostenlos.de - Rabattgutscheine für diverse Onlineshops. Immer kostenlos..

Grillmatten - Grillmatte.de zeigt dir alle Infos

Geändert von theHacker (13.08.2007 um 11:09:52 Uhr) Grund: no fullquoting
BartTheDevil89 ist offline Threadstarter   Mit Zitat antworten
Alt 13.08.2007, 11:12:22   #9 (permalink)
theHacker PREMIUM-User
sieht vor lauter Ads
den Content nicht mehr
Benutzerbild von theHacker

ID: 69505
Lose senden

theHacker eine Nachricht über ICQ schicken theHacker eine Nachricht über Skype™ schicken
Reg: 20.04.2006
Beiträge: 22.685
Standard

Zitat:
Zitat von BartTheDevil89 Beitrag anzeigen
aber erstens kommt jetzt aus dem oben genannten Code nur eine Zeile beim echo raus [...]
fgets() liest ja auch nur eine Zeile. Willst du mehr lesen, musst du halt öfters aufrufen oder z.B. fread() benutzen.
Zitat:
Zitat von BartTheDevil89 Beitrag anzeigen
[...]und dann ist die Frage, wie ich es dann an das system übergebe, das eigentlich csv-Dateien bearbeitet.
Über das andere System hast du ja noch nichts erzählt.
Ich hab den Stand, dass du nur eine .csv-Datei ändern willst.
NEU theHacker.blog NEU
– It's just a glitch in the Matrix –

OpenIsles - das freie Insel-Aufbauspiel | www.theHacker.ws v3 | WhatPulse-Team
theHacker ist offline   Mit Zitat antworten
Alt 13.08.2007, 11:28:36   #10 (permalink)
BartTheDevil89
Devilution Media
Benutzerbild von BartTheDevil89

ID: 87739
Lose senden

BartTheDevil89 eine Nachricht über ICQ schicken
Reg: 02.05.2006
Beiträge: 3.963
Standard

Zitat:
Zitat von theHacker Beitrag anzeigen
fgets() liest ja auch nur eine Zeile. Willst du mehr lesen, musst du halt öfters aufrufen oder z.B. fread() benutzen.Über das andere System hast du ja noch nichts erzählt.
Ich hab den Stand, dass du nur eine .csv-Datei ändern willst.

Ja, im Prinzip ist es auch nicht viel anderes. Nochmal genau das, was gesucht wird:

Tradedoubler gibt seine CSV-Produktlisten in ner .gz-Datei zum Download raus. Problem ist, dass in dieser csv-Datei der Tabellenkopf fehlt. Jetzt brauche ich für einen csv-Reader ein Script. Am csv-Reader direkt kann ich leider nichts ändern, weil der verschlüsselt ist.
Deswegen muss ich ja vorher ein Script erstellen (das ist eben genau das, was hier gesucht wird), das beim Aufruf die Produktliste herunterlädt, entpackt, der csv-Datei den Header hinzufügt und dann die komplette csv-Datei wiedergibt.

Und später soll der csv-Reader einfach dieses Script aufrufen, das dann die komplette csv-Datei ausliefert.
Rabatt-Gutscheine-Kostenlos.de - Rabattgutscheine für diverse Onlineshops. Immer kostenlos..

Grillmatten - Grillmatte.de zeigt dir alle Infos
BartTheDevil89 ist offline Threadstarter   Mit Zitat antworten
Alt 13.08.2007, 13:29:54   #11 (permalink)
ZeroCCC
wasn das?
Benutzerbild von ZeroCCC

ID: 46810
Lose senden

ZeroCCC eine Nachricht über ICQ schicken
Reg: 10.05.2006
Beiträge: 1.734
Standard

Hrm ein Blick in die Manuel hilft weiter...

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
<?
echo "spalte1;spalte2;spalte3\n";

$handle gzopen('http://www.example.com/file.gz''r');
while (!
feof($handle)) {
    echo 
fgets($handle4096)."\n";
}
fclose ($handle);
?>
 

Geändert von ZeroCCC (13.08.2007 um 13:37:06 Uhr)
ZeroCCC ist offline   Mit Zitat antworten
Alt 13.08.2007, 13:59:33   #12 (permalink)
BartTheDevil89
Devilution Media
Benutzerbild von BartTheDevil89

ID: 87739
Lose senden

BartTheDevil89 eine Nachricht über ICQ schicken
Reg: 02.05.2006
Beiträge: 3.963
Standard

Zitat:
Zitat von ZeroCCC Beitrag anzeigen
Hrm ein Blick in die Manuel hilft weiter...

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
<?
echo "spalte1;spalte2;spalte3\n";

$handle gzopen('http://www.example.com/file.gz''r');
while (!
feof($handle)) {
    echo 
fgets($handle4096)."\n";
}
fclose ($handle);
?>
Naja aber damit bekomm ich ja nur eine Zeile komplett am Stück und dazu auch noch diese Begrenzung von 4096!

Ich habs jetzt mit Hilfe des Manuels so gemacht:

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
<?
$fp 
gzopen("http://pf.tradedoubler.com/export/export?export=true&zip=true&a=1394573&format=csv&programId=43952&pfId=8542&version=1""r");
$count 10;
$count2 0;
echo 
"1;2;3;4;5;6;7;8;9;10<br>";
while ( (
$data fgetcsv ($fp1000"|")) !== FALSE ) { 
                                          
    
$num count ($data);                      
                                               
    for (
$c=0$c $num$c++) {            
        print 
$data[$c];
        
$count2++;
        if (
$count == $count2){
        echo 
"<br>";
        
$count2 =0;
        }elseif (
$count != $count2 and $count2 != 0){
        echo 
";";
        }
    }
}
gzclose($fp);

?>
Also das ist schon etwas ausfürhlicher, da er einfach jedes Feld nimmt und mir nochmal komplett mit neuen Trennzeichen ( die Liste macht. Jetzt allerdings hab ich noch ein letztes Problem:

Mein System erkennt nicht die neue Zeile. Also er liest die erste Zeile, trennt sie dann schön, etc. Aber er erkennt nicht, wenn die Zeile zu Ende ist.
Daher die Frage: Welches Zeichen ist normal um in einer csv-Datei eine neue Zeile einzuleiten? Denn ich lass es mir halt einfach als Text ausgeben, aber diese <br> werden von dem csv-Lesescript nicht erkannt.

Was muss ich also dafür nehmen?
Rabatt-Gutscheine-Kostenlos.de - Rabattgutscheine für diverse Onlineshops. Immer kostenlos..

Grillmatten - Grillmatte.de zeigt dir alle Infos
BartTheDevil89 ist offline Threadstarter   Mit Zitat antworten
Alt 13.08.2007, 15:21:58   #13 (permalink)
ZeroCCC
wasn das?
Benutzerbild von ZeroCCC

ID: 46810
Lose senden

ZeroCCC eine Nachricht über ICQ schicken
Reg: 10.05.2006
Beiträge: 1.734
Standard

Zitat:
Zitat von BartTheDevil89 Beitrag anzeigen
Naja aber damit bekomm ich ja nur eine Zeile komplett am Stück und dazu auch noch diese Begrenzung von 4096!
Vielleicht testest du einfach mal...
 
ZeroCCC ist offline   Mit Zitat antworten
Antwort

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP] Variablen einer Datei verfügbar macen, bevor diese includiert wird klausschreiber Programmierung 9 05.09.2007 17:41:07
php-Datei über batch-Datei ausführen tedlemegba Software/Windows 1 27.11.2006 18:06:02
Word Datei in eine PDF Datei konvertieren miamicroc Software/Windows 6 23.08.2006 10:08:50
lha datei entpacken *erledigt* wuf Software/Windows 4 15.06.2006 12:43:48
Aus PSD Datei Gif Datei machen?? sunnyboy83 Grafik & Design 14 23.05.2006 06:40:14


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:09:55 Uhr.