Array Ausgabe in txt File

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/array_ausgabe_in_txt_file_202869/page_1 - zur Vollversion wechseln!


McDeath98 schrieb am 19.12.2008 um 17:40

Hallo.

Ich versuche verzweifelt ein Array in ein txtfile auszugeben.

mit dem Code

Code: PHP
$result = mysql_query('SELECT * from `ISCAT`where SCID= 1');
if (!$result) {
    die('Ungültige Abfrage: ' . mysql_error());
}

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
		$preis = str_replace(",",".",$row[5]);
		$preis2 = round($preis*2,1)/2;
		$inhalt [] = '"%s","%s","%s","","http://www.onlineshop-ag.ch/shop_s/%s","http://www.onlineshop-ag.ch/shop/bilder/Artikel/%s_1.jpg","%s"<br/>', $row[0], $row[14], $preis2, $row[21], $row[0], $row[15];


}
file_put_contents("datei2.txt",implode("\n",$inhalt)); 
?>

Erstellt er mir zwar das File, schreibt aber nichts rein.

Am Ende sollte das File in etwa so aussehn http://www.onlineshop-ag.ch/garry/test.php

Irgendwie probiere ich jetz schon den ganzen Tag diverse Sachen, komme aber einfach nicht weiter.

Oder ist mein Ansatz total falsch ?

mfg und schöne Weihnachten wünscht

Garry


mat schrieb am 19.12.2008 um 19:48

Wenn du die Textdatei wieder mit PHP verarbeiten willst, dann würde ich lieber serialize() und unserialize() verwenden.

Ansonsten fällt mir auf die Schnelle mal auf, dass das Setzen des Arrays komplett falsch läuft. Das fehlt der Aufruf von sprintf(), also so:

Code: PHP
$inhalt [] = sprintf('"%s","%s","%s",...',$row[0],...);
Aber da sollte er dir eigentlich einen Syntaxfehler geben und das Skript wird abgebrochen. Falls das nur ein Copy&Paste-Fehler ist: Eine leere Datei kann auch entstehen, wenn es nicht genügend Rechte für den Web-User gibt, um den Inhalt in die Datei zu schreiben.


McDeath98 schrieb am 19.12.2008 um 20:23

war ein Denkfehler.

es muss mysql_fetch_assoc und incht mysql_fetch_array sein

Code: PHP
$result = mysql_query('SELECT * from `ISCAT`where SCID= 1');
if (!$result) {
    die('Ungültige Abfrage: ' . mysql_error());
}

while ($row = mysql_fetch_assoc($result)) 
	{
		$preis = str_replace(",",".",$row["PRICE"]);
		$preis2 = round($preis*2,1)/2;
		$inhalt[] = '"'.$row['ITEMID'].'","'.$row['idescription'].'","'.$row['ITEMID'].'","http://www.onlineshop-ag.ch/shop_s/'.$row['link'].'","http://www.onlineshop-ag.ch/shop/bilder/Artikel/'.$row['ITEMID'].'_1.jpg","'.$row['IZUSATZ'].'"';

}
file_put_contents("datei2.txt",implode("\n",$inhalt)); 
?>

Jetzt muss ich nur noch diese lässtigen Umlaufe sauber ins txtfile bekommen.
mit

Code: PHP
header('Content-Type: text/html; charset=utf-8');

Funktioniert es in der Webausgabe wunderbar. Im Textfile steht aber immernoch ä :/

Aber das wird schon


mat schrieb am 19.12.2008 um 20:29

utf8-encode()


McDeath98 schrieb am 19.12.2008 um 21:03

Code: PHP
$inhalt = str_replace("ä","ä",$inhalt);
$inhalt = str_replace("ü","ü",$inhalt);
$inhalt = str_replace("ö","ö",$inhalt);
$inhalt = str_replace("ß","ß",$inhalt);
$inhalt = str_replace("Ä","Ä",$inhalt);
$inhalt = str_replace("Ü","Ü",$inhalt);
$inhalt = str_replace("Ö","Ö",$inhalt);

ging auch so :D

Kannst du mir noch flüsstern, wie ich in das File ne Zeile bekomme ala

Artikelnummer;Titel;Preis etc. die ganz oben steht und jedesmal drin steht wenn ich das FIle generiere ?


mat schrieb am 19.12.2008 um 21:12

Dein str_replace() ist verkehrt rum, wenn du im Textfile keine Umlaute haben willst. Außerdem kannst du per Array als Parameter1 und 2 das ganze auf einen Aufruf verkürzen.

Wie du so eine Zeile einfügst? Du hast ja oben den Code.. einfach vor dem while() ein $inhalt[] = 'was auch immer einfügen';
Das Textfile wird ja jedesmal neu generiert, oder? Wenn nicht, dann solltest du das so machen.


McDeath98 schrieb am 19.12.2008 um 21:35

War dumm geschrieben. In der Datenbank steht der ******* mit & #246; und im Textfile sollen sie eben mir ö,ä,ü etc. stehn.

atm is das ganze noch nicht 100% sauber, aber es reicht für den Anfang.

Das ganze File wird bei jedem Aufruf neu generiert was auch Sinn der Sache ist, da es die benötigten Informationen für die Roboter bestimmter Preisportale bereitstellt.

fertig ( wenn auch noch unsauber )

Code: PHP
$titelzeile='"Bestellnummer";"Bezeichnung";"Preis";"Lieferzeit";"ProduktLink";"FotoLink";"Beschreibung";"Gewicht"';
$leerzeile="\n";

...

$result = mysql_query('SELECT * from `ISCAT`where SCID= 1');
if (!$result) {
    die('Ungültige Abfrage: ' . mysql_error());
}

while ($row = mysql_fetch_assoc($result)) 
	{
		$preis = str_replace(",",".",$row["PRICE"]);
		$preis2 = round($preis*2,1)/2;
		$inhalt[] = '"'.$row['ITEMID'].'","'.$row['idescription'].'","'.$preis2.'","http://www.onlineshop-ag.ch/shop_s/'.$row['link'].'","http://www.onlineshop-ag.ch/shop/bilder/Artikel/'.$row['ITEMID'].'_1.jpg","'.$row['IZUSATZ'].'"';

}
$inhalt = str_replace("ä","ä",$inhalt);
$inhalt = str_replace("ü","ü",$inhalt);
$inhalt = str_replace("ö","ö",$inhalt);
$inhalt = str_replace("ß","ß",$inhalt);
$inhalt = str_replace("Ä","Ä",$inhalt);
$inhalt = str_replace("Ü","Ü",$inhalt);
$inhalt = str_replace("Ö","Ö",$inhalt);
file_put_contents("datei2.txt",$titelzeile);
file_put_contents("datei2.txt",$leerzeile,FILE_APPEND);
file_put_contents("datei2.txt",implode("\n",$inhalt),FILE_APPEND); 
?>

Wie meinst du das per Array als Parameter 1 und 2 definieren ?

atm lass ich ja alle str_replace() über einen Datensatz laufen.

Thx schonmal

Edith meint: die fertig Version des Files sieht so aus

http://www.onlineshop-ag.ch/garry/datei2.txt

Und genauso sollte es auch sein ;)


mat schrieb am 19.12.2008 um 21:41

Code: PHP
$inhalt = str_replace(array("ä","ü",...),array("ä","ü",...),$inhalt);
Schöner und viel schneller. ;)

Die zwei weiteren file_put_contents() könntest du dir sparen wenn du die Strings einfach aneinanderfügst.
Code: PHP
file_put_contents("datei2.txt","$titelzeile\n".implode("\n",$inhalt));


McDeath98 schrieb am 19.12.2008 um 21:46

Wunderbar :D

So sieht das doch optisch viel besser aus ^^

big thx Mat




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025