php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.12.2008, 10:32  
Neuer Benutzer
 
Registriert seit: 16.12.2008
Beiträge: 4
McDeath befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Spezielles txtfile erzeugen

Ich arbeite nun schon seit längerer Zeit hin und wieder mit PHP.

Bei unserem aktuellen Shop bin ich jetzt aber auf ein Problem gestossen, das ich ohne Hilfe nicht lösen kann.

Der Script soll spezielle Felder ( in unserem Fall Artikel ) aus der Datenbank auslesen und diese in ein Txt File schreiben.

Zur kontrolle und genaueren anpassung habe ich das ganze erstmal als reine Browserausgabe gemacht. Nun sollte ich die Ausgabe in ein Txtfile schreibe ( CSV) und hab keine Ahnung wie ich das Anstelle.

Anbei der Link und der Code

http://www.onlineshop-ag.ch/garry/test.php

PHP-Code:
<?php

$link 
mysql_connect('bla''blub''blablub');
$db_select = @ mysql_select_db (ups);

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

while (
$row mysql_fetch_array($resultMYSQL_NUM)) {
           
printf ('"%s","%s","'$row[0], $row[14]);
           
$preisstr_replace(",",".",$row[5]);
           echo 
round($preis*2,1)/2;
           
printf ('","","http://www.onlineshop-ag.ch/shop_s/%s","http://www.onlineshop-ag.ch/shop/bilder/Artikel/%s_1.jpg","%s"<br/>',$row[21], $row[0], $row[15]);
}

//mysql_free_result($result);

?>
Danke schonmal für die Hilfe und fröhliche Weihnachten

Greetings Garry
McDeath ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 19.12.2008, 10:42  
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

Und wo ist jetzt das Problem? Ich schreib mal ne CSV-Datei:

PHP-Code:
$inhalt "0;acht;\"fuff zehn\"\n";
$inhalt .= "1;zwei;\"oder drei\"\n";
file_put_contents("datei.csv",$inhalt);

// ODER 
$inhalt[] = '0;acht;"fuff zehn"';
$inhalt[] = '1;zwei;"oder drei"';
file_put_contents("datei2.csv",implode("\n",$inhalt)); 
und schon hab ich zwei gültige CSV-Dateien geschrieben
cycap ist offline  
Alt 19.12.2008, 11:21  
Neuer Benutzer
 
Registriert seit: 16.12.2008
Beiträge: 4
McDeath befindet sich auf einem aufstrebenden Ast
Standard

Ok. soweit so klar.

Aber ich steh halt immernoch auf der Leitung weil die ganze Ausgabe ne while Schleife ist. Wo bau ich da file_put_contents ein.

In deinem Beispielt übergibst du ja statische werte als Ausgabe.
McDeath ist offline  
Alt 19.12.2008, 11:22  
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

Nicht dein Ernst oder?

PHP-Code:
while(blubb){
  
$inhalt[] = '0;acht;"fuff zehn"';
}
file_put_contents("datei2.csv",implode("\n",$inhalt)); 
cycap ist offline  
Alt 19.12.2008, 15:03  
Neuer Benutzer
 
Registriert seit: 16.12.2008
Beiträge: 4
McDeath befindet sich auf einem aufstrebenden Ast
Standard

Hmmm. Doch. Weil es so eben nicht fuktioniert

PHP-Code:
while ($row mysql_fetch_array($resultMYSQL_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)); 


// 2ter Versuch


while ($row mysql_fetch_array($resultMYSQL_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)); 
Bei der 2ten Variante mit `am Anfang und Ende der $Inhalt Definition erzeugt er mir wenigstens ein File. Auch wenn es leer ist.

Ansonsten Sorry. Stehe im Moment ein wenig auf dem Schlauch weil ich doch schon relativ lange nix mehr in die Richtung gemacht hab.

Ich sollte vielleicht noch erwähnen, das es total ca. 1900 Datensätze sind +/-

Geändert von McDeath (19.12.2008 um 15:13 Uhr).
McDeath ist offline  
Alt 20.12.2008, 09:17  
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

wenn du es unbedingt in der Syntax machen willst, dann benutze sprintf
cycap ist offline  
Alt 20.12.2008, 10:13  
Benutzer
 
Registriert seit: 24.09.2008
Beiträge: 52
frank-ae befindet sich auf einem aufstrebenden Ast
frank-ae eine Nachricht über Yahoo! schicken frank-ae eine Nachricht über Skype™ schicken
Standard

Wenn ich mich nicht irre, überschreibst Du in Deiner while() Schleife jedesmal die Variable $Inhalt ?!
So, das wenn er Dir eine Datei schreibt, nur das letzte darin stehen dürfte.
Wenn Du es so schreibst:
PHP-Code:
$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])`; 
hängst Du mit jedem durchlauf der Schleife den Inhalt an die Variable $inhalt an und überschreibst sie nicht einfach.

Schlagt mich wenn ich mich irre, aber so mach ich das immer

V.G.
Frank-ae
__________________
Mein Projekt: www.my-matrix.de
frank-ae ist offline  
Alt 20.12.2008, 11:48  
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

Zitat:
Wenn ich mich nicht irre, überschreibst Du in Deiner while() Schleife jedesmal die Variable $Inhalt ?!
du irrst... das [] erzeugt automatisch einen numerischen Array-Key
cycap ist offline  
Alt 20.12.2008, 12:50  
Benutzer
 
Registriert seit: 24.09.2008
Beiträge: 52
frank-ae befindet sich auf einem aufstrebenden Ast
frank-ae eine Nachricht über Yahoo! schicken frank-ae eine Nachricht über Skype™ schicken
Standard

Danke für den Hinweis cycap,

Aber dann darf sich McDeath nicht wundern, weil er ja "nur" $inhalt in die Datei schreiben will, wenn ich jetzt ein echo auf $inhalt mache, bekomme ich als Ergebnis: Array, wo her soll denn nun file_put_contents() wissen was es schreiben soll, ohne Konkrete Angabe von $inhalt ?!

das ganze vieleicht so lösen:


PHP-Code:
for ($i = (count(array($inhalt); $i 0$i --)
{
    
file_put_contents("datei2.txt",implode("\n",$inhalt[$i])); 

V.G.
Frank-ae

__________________
Mein Projekt: www.my-matrix.de
frank-ae ist offline  
Alt 20.12.2008, 16:31  
Erfahrener Benutzer
 
Registriert seit: 19.03.2007
Beiträge: 176
BlackWolf ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von frank-ae Beitrag anzeigen
Danke für den Hinweis cycap,

Aber dann darf sich McDeath nicht wundern, weil er ja "nur" $inhalt in die Datei schreiben will, wenn ich jetzt ein echo auf $inhalt mache, bekomme ich als Ergebnis: Array, wo her soll denn nun file_put_contents() wissen was es schreiben soll, ohne Konkrete Angabe von $inhalt ?!

das ganze vieleicht so lösen:


PHP-Code:
for ($i = (count(array($inhalt); $i 0$i --)
{
    
file_put_contents("datei2.txt",implode("\n",$inhalt[$i])); 

V.G.
Frank-ae

nein, der teil stimmt schon, denn er schreibt nicht $inhalt sondern implode("",$inhalt);
und ein implode() auf $inhalt[$i] macht keinen wirklichen sinn, da du implode nur auf arrays machen kannst.
Das Problem liegt er darin das es %s verwendet aber kein sprintf()
Ich würde das ohne sprintf() lösen und einfach
$inhalt[] = $var1.' muh '.$var2;
oder so machen, dann dürfte es auch gehn.

wenn wir grad dabei sind noch ein kleiner tipp: ich würde definitiv MYSQL_ASSOC zurückgeben lassen, da du bei $row['name'] weißt was es ist, bei $row[0] aber keine ahnung hast. aber das nur so nebenbei ...

mfg
BlackWolf 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
[Erledigt] Klassen zur Laufzeit erzeugen theraipper PHP-Fortgeschrittene 16 10.10.2008 23:52
php datei erzeugen radbale PHP Tipps 2008 27 14.09.2008 21:35
Tool um (Spiel)Klassen zu erzeugen Martin13 PHP-Fortgeschrittene 6 05.09.2007 02:25
SQL Abfrage erzeugen/ string bearbeitung easy PHP Tipps 2007 20 28.03.2007 22:12
automatische Thumbs erzeugen rabatz PHP Tipps 2006 7 08.07.2006 19:12
dynamische bilder erzeugen mit PHP kampfnickel PHP Tipps 2006 6 23.05.2006 08:42
Aus mehrere Gifs ein animated Gif erzeugen? think_mac PHP Tipps 2006 4 03.04.2006 15:16
Bild erzeugen meisterigel PHP Tipps 2006 5 28.03.2006 14:43
Fehler beim erzeugen einer MySQL tabelle mit php Datenbanken 15 23.05.2005 16:25
html daten mit php erzeugen PHP Tipps 2005 11 03.03.2005 16:54
Fehlermeldung beim Erzeugen einer einfachen Tabelle Datenbanken 6 08.02.2005 18:10
Formular mit fpdf erzeugen! Boennchen PHP Tipps 2005 4 01.02.2005 11:59
POP3 - erzeugen, abrufen, löschen & user und pw - frage PHP Tipps 2004-2 2 24.12.2004 17:19
Datei mit php erzeugen Stümper PHP Tipps 2004 4 12.10.2004 12:51
[Erledigt] variable Tabellen erzeugen PHP Tipps 2004 1 14.06.2004 09:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php:de file_put_contents, file_put_contents

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:37 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