CSV DAtei formatieren

Dieses Thema CSV DAtei formatieren im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von Roxxinger, 1. Aug. 2005.

Thema: CSV DAtei formatieren Guten Morgen, ich sitze derzeit vor dem Problem eine CSV Datei nach meinen Wünschen anlegen zu lassen. Select...

  1. Guten Morgen,

    ich sitze derzeit vor dem Problem eine CSV Datei nach meinen Wünschen anlegen zu lassen.
    Code:
    Select distinct
    spalten.aus.tabellen
    INTO OUTFILE->datei.csv'
    FIELDS
          TERMINATED BY->|'
          OPTIONALLY ENCLOSED BY->'
    From
    tabellen
    Where
    order_status =->P' and username=$name
    Order By
    mos_pshop_order_user_info.order_id Asc
    Dies ist derzeit mein Code um die Datei zu erzeugen. klappt auch wunderbar :) nur möchte ich jetzt das die CSV.Datei folgendermassen aussieht:
    1. Zeile: A|dann alle Spalten die Informationen zum Kunden beinhalten, Adresse, Tel. usw.
    2.-xte Zeile: B|dann alle Spalten die Informationen zur Bestellung für den/die Artikel des Kunden enthalten.

    mit meinem derzeitigem Code würde alles hintereinanderweg geschrieben jenachdem wie ich die Spalten einlese.

    Geht so was? Wenn ja wie? :D

    Gruß Jan
     
  2. Nein ;)

    JEDE Zeile besitzt in einer *.csv die gleiche Struktur die in der 1. Zeile definiert werden kann.

    Mit PHP und XML null Problemo, aber so wie du dir das denkst gehts nich ;)

    AFAIK ;D ;D
     
  3. hmm das wär schlecht... :'(
     
  4. also irgendwie muss das gehen:

    Code:
    /
    header(Content-Type: text/plain);
    header(Content-Disposition: attachment; filename=.$datei..csv);
    
    
    $result = mysql_query(Select distinct
    mos_pshop_order_user_info.last_name,
    mos_pshop_order_user_info.first_name,
    mos_pshop_order_user_info.phone_1,
    mos_pshop_order_user_info.fax,
    mos_pshop_order_user_info.address_1,
    mos_pshop_order_user_info.city,
    mos_pshop_order_user_info.state,
    mos_pshop_order_user_info.country,
    mos_pshop_order_user_info.zip,
    mos_pshop_order_user_info.user_email,
    mos_pshop_orders.order_id,
    mos_pshop_orders.order_total,
    mos_pshop_orders.order_status,
    mos_pshop_orders.order_currency,
    mos_pshop_order_item.product_id,
    mos_pshop_order_item.product_quantity,
    mos_pshop_order_item.order_item_sku,
    mos_pshop_order_item.order_item_name,
    mos_pshop_order_item.product_item_price,
    mos_pshop_order_item.product_final_price,
    mos_users.username
    From
    mos_pshop_order_user_info
    Inner Join mos_pshop_orders ON mos_pshop_orders.order_id = mos_pshop_order_user_info.order_id
    Inner Join mos_pshop_order_status ON mos_pshop_orders.vendor_id = mos_pshop_order_status.vendor_id
    Inner Join mos_pshop_order_item ON mos_pshop_orders.order_id = mos_pshop_order_item.order_id
    Inner Join mos_users ON mos_pshop_order_user_info.user_id = mos_users.id
    Where
    mos_pshop_orders.order_status =->C' and mos_users.username=$name
    Order By
    mos_pshop_order_user_info.order_id Asc);
    if ($data = mysql_fetch_array($result)){
    $datei.=A|;$data[last_name];$data[first_name];$data[address_1];$data[zip];$data[city];$data[phone_1];$data[fax]\n;
    }
    while ($data = mysql_fetch_array($result)){
    $datei.=B|;$data[order_id];$data[order_total];$data[order_item_name]\n;
    }
    
    print $datei;
    so ähnlich, nur gibt er mir da immer den kompletten quellcode der website und mitten drin die $datei auflistung ...
    und es sollte automatisch die datei auf dem server gespeichert werden und nicht als download
     
  5. OK, da ich das selbst im Moment nicht nachvollziehen kann, mach ichs mal aus dem Stegreif ;) ;D

    1. Das header-Geraffel kann weg ;)
    2. Das Schreiben der *.csv machst du so:
    Code:
    <?php
    .....
    .....
    $fh = fopen(test.csv, w);
    if ($data = mysql_fetch_array($result)){
      fwrite($fh,A|;$data[last_name];$data[first_name];$data[address_1];$data[zip];$data[city];$data[phone_1];$data[fax]\n);
    }
    while ($data = mysql_fetch_array($result)){
      fwrite($fh, B|;$data[order_id];$data[order_total];$data[order_item_name]\n);
    }
    fclose($fh);
    ?>
    
    Nun solltest du deine Daten in der Datei haben, vorausgesetzt deine Abfrage funktioniert ;)

    Was du nun mit dieser Datei anstellst, is deine Sache ;)
    Wie ich in meinem 1. Posting schon erwähnte, bezweifle ich das diese Datei von z.B. Excel gelesen werden kann, da sie für eine *.csv eine falsche Syntax besitzt ;)
     
  6. das mit excel ist erstmal egal :D

    dank dir schonmal für deine hilfe. kommst schon fast hin nur sieht die csv datei nun so aus:
    Code:
    A|test|test|test|23412|test|123124|
    A|test|test|test|23412|test|123124|
    B|20|71.00|AGW.001
    A|test|test|test|23412|test|123124|
    B|20|71.00|AGW.001
    B|21|11.00|AGW.009
    A|test|test|test|23412|test|123124|
    B|20|71.00|AGW.001
    B|21|11.00|AGW.009
    B|22|0.00|HFS.001
    A|test|test|test|23412|test|123124|
    B|20|71.00|AGW.001
    B|21|11.00|AGW.009
    B|22|0.00|HFS.001
    B|23|496.00|EWA02.012
    
    sprich er macht die zeile A immer wenn bei B ne neue zeile hinzukommt...

    Code:
    $fh = fopen(test, w);
    $result = mysql_query(Select distinct...);
    if ($data = mysql_fetch_array($result)){
    fwrite($fh,$datei.=A|$data[last_name]|$data[first_name]|$data[address_1]|$data[zip]|$data[city]|$data[phone_1]|$data[fax]\n);
    }
    $result = mysql_query(Select distinct...);
    while ($data = mysql_fetch_array($result)){
      fwrite($fh, $datei.=B|$data[order_id]|$data[order_total]|$data[order_item_name]\n);
    }
    fclose($fh);
    so sieht meine code aus, hoffe ich hatte dich richtig verstanden das es so muss;)
     
  7. Sorry, die Abfrage hab ich nicht kontrolliert, mach ich nacher, muss gschwind ne Stunde weg ;)
     
  8. Code:
    <?php
    $sql = Select distinct
    			t1.last_name, t1.first_name, t1.phone_1, t1.fax, t1.address_1, 
    			t1.city, t1.state, t1.country, t1.zip, t1.user_email, 
    			t2.order_id, t2.order_total, t2.order_status, t2.order_currency, 
    			t3.product_id, t3.product_quantity, t3.order_item_sku, t3.order_item_name, 
    			t3.product_item_price, t3.product_final_price, 
    			t5.username 
    		From 
    			mos_pshop_order_user_info t1 
    		Inner Join 
    			mos_pshop_orders t2 ON t2.order_id = t1.order_id
    		Inner Join 
    			mos_pshop_order_status t4 ON t2.vendor_id = t4.vendor_id 
    		Inner Join 
    			mos_pshop_order_item t3 ON t2.order_id = t3.order_id 
    		Inner Join mos_users t5 ON t1.user_id = t5.id 
    		Where
    			t2.order_status =->C' and t5.username='.$name.' 
    		Order By
    			t1.order_id ASC;
    
    $fh = fopen(test.csv, w);
    
    if ($res = mysql_query($sql)){
    	$i = 0;
    	while ($data = mysql_fetch_array($res)){
    		if($i==0) fwrite($fh, A|;$data[last_name];$data[first_name];$data[address_1];
                             $data[zip];$data[city];$data[phone_1];$data[fax]\n);
    		fwrite($fh, B|;$data[order_id];$data[order_total];$data[order_item_name]\n);
    		++$i;
    	}
    }
    fclose($fh);
    ?>
    
    edit:
    im 1. Bsp. hatte ich das => $datei .= <= übersehen, dann hätte das auch geklappt ;)
     
  9. guten morgen :D

    danke dir für deine hilfe, hab jetzt das erste beispiel ohne $datei gemacht und es funzt. beim 2ten beispiel ist die test.csv leider irgendwie immer leer :( habs auch schon versucht anzupassen aber hat nicht hingehaun

    Code:
    mysql_fetch_array($result)
    müßte glaub ich
    Code:
    mysql_fetch_array($sql)
    sein

    aber hat nichts geholfen

    gruß jan
     
  10. Ups, muss $res heißen ;D ;D
     
Die Seite wird geladen...

CSV DAtei formatieren - Ähnliche Themen

Forum Datum
Wie WIN 7 Systemdatei formatieren Windows 7 Forum 7. Sep. 2011
livedateisystem ausschalten ? Will immer die DVD formatieren.... Audio, Video und Brennen 3. Nov. 2009
EXE-Dateien nach einer Zeit nicht mehr ausführbar Windows 8 Forum Sonntag um 21:21 Uhr
Dateien mit bestimmten Programmen öffnen, z.B. pdf oder jpg Windows 10 Forum 10. Nov. 2016
Open Office Datei direkt versenden funktioniert nicht .... Windows 10 Forum 31. Okt. 2016