"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Array Ausgabe in txt File

McDeath98 19.12.2008 - 17:40 992 8
Posts

McDeath98

Dark Rider
Avatar
Registered: Jul 2000
Location: Schweiz
Posts: 718
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
Bearbeitet von McDeath98 am 19.12.2008, 17:47

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25422
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

Dark Rider
Avatar
Registered: Jul 2000
Location: Schweiz
Posts: 718
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

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25422

McDeath98

Dark Rider
Avatar
Registered: Jul 2000
Location: Schweiz
Posts: 718
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 ?
Bearbeitet von McDeath98 am 19.12.2008, 21:08

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25422
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

Dark Rider
Avatar
Registered: Jul 2000
Location: Schweiz
Posts: 718
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

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25422
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

Dark Rider
Avatar
Registered: Jul 2000
Location: Schweiz
Posts: 718
Wunderbar :D

So sieht das doch optisch viel besser aus ^^

big thx Mat
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz