php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.10.2004, 11:58  
Gast
 
Beiträge: n/a
Standard MySql-Daten als CSV

Hallo!
Ich hab ein großes Problem. Ich hab mich schon doof gegooglt, aber nicht meinen Fehler gefunden.

ich möchte datensätze in eine csv-datei exportieren. wenn ich nun mir die datensätze ausgeben lasse, funzt es wunderbar. beim erstellen der csv-datei, wird die datei erstellt und die spaltennamen eingetragen, aber nicht die datensätze!


Die abfrage mit ausgabe.
Code:
$sql_el="SELECT e.Name, e.Vorname, e.Strasse, e.Ort, e.PLZ, e.Hnr as Hausnr, Count(*) as Anzahl, f.CD_zus as Zusatz FROM el_daten_pers e INNER JOIN tech_daten t ON t.el_id= e.EID LEFT JOIN el_daten_fach f ON f.el_id=e.EID WHERE t.cd=0 GROUP BY t.el_id, e.Name";
$res_el= mysql_db_query("eltool", $sql_el);
while($edaten= mysql_fetch_assoc($res_el)){
              echo "<tr><td class='log_text'>".$edaten["Name"]."</td>";
              echo "<td class='log_text'>".$edaten["Vorname"]."</td>";
              echo "<td class='log_text'>".$edaten["Strasse"]."</td>";
              echo "<td class='log_text'>".$edaten["Hausnr"]."</td>";
              echo "<td class='log_text'>".$edaten["PLZ"]."</td>";
              echo "<td class='log_text'>".$edaten["Ort"]."</td>";
              $wieviele= $edaten["Anzahl"] + $edaten["Zusatz"];
              echo "<td class='log_text'align='center'>".$wieviele."</td>";
}
nun das erstellen der csv
Code:
$file_name= "C:tmp\data.csv";


$i=0;

$felder=mysql_num_fields($res_el);
$fp=fopen($file_name,"w+");

while ($i < mysql_num_fields($res_el)){
    $feldnamen = mysql_field_name($res_el, $i);
    $i++;
    createCSV($fp, $feldnamen, ",");
}
while ($data = mysql_fetch_row($res_tech)){
     fputCSV($fp, $data, ",");
}
fclose ($fp);


function createCSV ($fp, $val2, $deliminator=",") {
$line2 = "";
{
         $val2 = str_replace("\r\n", "\n", $val2);
         $line2 .= $val2.$deliminator;
}
return fputs($fp, $line2);
$line2 .= "\n";
}




function fputCSV ($fp, $array, $deliminator=",") {

$line = "";
foreach($array as $val)
{
    $val = str_replace("\r\n", "\n", $val);
    if(ereg("[$deliminator\"\n\r]", $val)) {
       $val = '"'.str_replace('"', '""', $val).'"';
    }
    $line .= $val.$deliminator;
}
$line = substr($line, 0, (strlen($deliminator) * -1));
$line .= "\n";
return fputs($fp, $line);
}
kann mir vielleicht irgendjemand sagen, warum ich die eigentlichen daten der Abfrage nicht in die csv exportiert bekomme??

vielen dank schon mal!
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 26.10.2004, 12:12  
Gast
 
Beiträge: n/a
Standard Re: MySql-Daten als CSV

Zitat:
Zitat von blub45
kann mir vielleicht irgendjemand sagen, warum ich die eigentlichen daten der Abfrage nicht in die csv exportiert bekomme??
Ich vermute mal, daß Du nach dem Anzeigen der Datensätze den Datensatzzeiger nicht wieder auf 0 stellst. Somit ist nix mehr zum Ausgeben da, wenn Du das csv File basteln möchtest.

http://de.php.net/mysql_data_seek

Außerdem solltest Du das
PHP-Code:
$file_name"C:tmp\data.csv"
durch das
PHP-Code:
$file_name"C:/tmp/data.csv"
ersetzen. Sonst wird daraus c:tmp.data.csv.
 
Alt 26.10.2004, 13:06  
Gast
 
Beiträge: n/a
Standard

Zitat:
Ich vermute mal, daß Du nach dem Anzeigen der Datensätze den Datensatzzeiger nicht wieder auf 0 stellst. Somit ist nix mehr zum Ausgeben da, wenn Du das csv File basteln möchtest.
aber wenn ich das Ergebnis der Abfrage in
Code:
$res_el
gespeichert jedesmal in ein neues array einlese mit
Code:
mysql_fetch_assoc($res_el) 
oder
mysql_fetch_row($res_el)
dann muss ich doch nicht jedesmal den Ergebniszeiger neu setzen oder?!
wenn doch, wie denn?!
 
Alt 26.10.2004, 13:08  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von blub45
Zitat:
Ich vermute mal, daß Du nach dem Anzeigen der Datensätze den Datensatzzeiger nicht wieder auf 0 stellst. Somit ist nix mehr zum Ausgeben da, wenn Du das csv File basteln möchtest.
aber wenn ich das Ergebnis der Abfrage
mit mysql_data_seek($resurce, 0) zurücksetze, reicht ein Query aus.
 
Alt 26.10.2004, 13:23  
Gast
 
Beiträge: n/a
Standard

ich mache nur eine Abfrage.
Code:
$sql_el="SELECT e.Name, e.Vorname, e.Strasse, e.Ort, e.PLZ, e.Hnr as Hausnr, Count(*) as Anzahl, f.CD_zus as Zusatz FROM el_daten_pers e INNER JOIN tech_daten t ON t.el_id= e.EID LEFT JOIN el_daten_fach f ON f.el_id=e.EID WHERE t.cd=0 GROUP BY t.el_id, e.Name"; 
$res_el= mysql_db_query("eltool", $sql_el);
jetzt ist das ergebnis in $res_el gespeichert.
diese daten lasse ich mir im php-script ausgeben. wenn der user einen Button betätigt, soll diese ausgegebene liste exportiert werden können.
zur ausgabe auf der seite kommt
Code:
while($edaten= mysql_fetch_assoc($res_el)){ .... }
danach
verwende ich
Code:
while ($i < mysql_num_fields($res_el)){  ...} while ($data = mysql_fetch_row($res_tech)){ ...}
warum soll ich denn jedesmal ne neue Abfrage starten? $res_el ist doch im ganzen script vewendbar, oder nicht?
ich steh grad voll auf´m schlauch!
 
Alt 26.10.2004, 13:46  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von blub45
warum soll ich denn jedesmal ne neue Abfrage starten? $res_el ist doch im ganzen script vewendbar, oder nicht?
Ja klar, mit dem pointer rasselst Du mit while() durch die Datensätze bis zum Letzten. Und wenn Du diesen Pointer noch mal verwenden willst, mußt Du ihn zurücksetzen.
 
Alt 26.10.2004, 14:02  
Gast
 
Beiträge: n/a
Standard

Code:
for ($i = mysql_num_rows($res_el) - 1; $i >= 0; $i--) {
    if (!mysql_data_seek($res_el, $i)) {
        echo "Cannot seek to row $i: " . mysql_error() . "\n";
        continue;
    }

    if (!($row = mysql_fetch_assoc($res_el))) {
    fputCSV($fp, $row, ",");
        continue;
    }


}
passt des so?

so stehen die Daten auch nicht drinne!
 
Alt 26.10.2004, 20:43  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von blub45
passt des so?
NEIN.

PHP-Code:
$res mysql_query (.....);

# 1. while Schleife 
while ($row mysql_fetch_assoc($res))
{
# Anzeigen
}

# Datensatzzeiger zurücksetzen
mysql_data_seek($res0)

# 2. while Schleife
while  ($row mysql_fetch_assoc($res))
{
# CSV File basteln
}

# Resource löschen
mysql_free_result ($res); 
 
 


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
Daten selber per Browser ändern (MYSQL) Minimi PHP Tipps 2008 9 31.12.2007 13:21
MYSQL daten auf mehre tabeln reihen aufteilen..? deCoo PHP Tipps 2007 3 26.04.2007 21:19
Mysql daten wieder hochladen Matthiasnet Datenbanken 0 14.08.2006 15:25
MYSQL daten bei der ausgabe sortieren DrWeb Datenbanken 2 29.07.2006 10:09
*hilfe* Daten in Mysql eintragen DrWeb PHP Tipps 2006 1 26.07.2006 20:30
Mysql Daten zum Tageswechsel aktualisieren PHP Tipps 2006 3 12.06.2006 18:13
Serverumzug - Problem mit MySQL Daten [GE]ReeN Datenbanken 6 28.03.2006 17:02
Daten aus MYSQL nach Datum filtern Datenbanken 3 19.09.2005 16:09
mysql connection daten verschl�sseln PHP Tipps 2005-2 7 03.09.2005 18:00
mysql daten dump Datenbanken 4 03.09.2005 10:41
[Erledigt] Daten aus MySQL in einer zufälligen Reihenfolge ausgeben PHP-Fortgeschrittene 2 31.07.2005 12:42
[Erledigt] Daten in Mysql eingeben und auf warteliste setzen. PHP Tipps 2005 7 05.05.2005 04:04
[Erledigt] MySQL Daten auslesen mit Linien zwischen den Zeilen Datenbanken 4 01.05.2005 15:35
[Erledigt] Mysql + fopen: zu löschende daten ermitteln PHP-Fortgeschrittene 2 16.08.2004 14:02
[Erledigt] mysql Daten abfragen und sortieren von b Datenbanken 2 11.06.2004 09:15

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
\mysql daten als csv ausgeben\, fputcsv mysql, mysql datei exportieren und bearbeiten, csv datei erstellen mit feldnamen aus mysql, fputcsv mysql abfrage, mysql csv export zeiger, $resurce, mysql query fputcsv, mysql datensatz in csv, mysql abfrage als csv exportieren, mysql abfrage ergebnis csv exportieren \\r\\n, php mysql daten als csv, fputcsv \\r\\n, select mysql fputcsv, mysql csv export \feldnamen\, daten von mysql in csv, mysql_fetch_assoc csv, mysql_fetch_assoc zurücksetzen, mysql abfrage in csv datei exportieren, daten aus csv abfragen

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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.