McDeath98
Dark Rider
|
Hallo. Ich versuche verzweifelt ein Array in ein txtfile auszugeben. mit dem Code $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.phpIrgendwie 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
AdministratorLegends never die
|
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: $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
|
war ein Denkfehler. es muss mysql_fetch_assoc und incht mysql_fetch_array sein $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 header('Content-Type: text/html; charset=utf-8');
Funktioniert es in der Webausgabe wunderbar. Im Textfile steht aber immernoch ä :/ Aber das wird schon
|
mat
AdministratorLegends never die
|
|
McDeath98
Dark Rider
|
$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 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
AdministratorLegends never die
|
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
|
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 ) $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.txtUnd genauso sollte es auch sein
|
mat
AdministratorLegends never die
|
$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. file_put_contents("datei2.txt","$titelzeile\n".implode("\n",$inhalt));
|
McDeath98
Dark Rider
|
Wunderbar So sieht das doch optisch viel besser aus ^^ big thx Mat
|