Zurück   Flashforum > Flash und Server > PHP und MySQL

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-05-2011, 11:41   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 70
CSV Export verhält sich seltsam

Hi Leute,

ich verwende csvlib (csvlib - csv parser for actionscript 3 - Google Project Hosting) um aus einem Datagrid eine CSV String erzeugen zu lassen.

Diesen sende ich dann an ein PHP Skript, damit mir dass dann diesen String in eine CSV Datei schreibt.


ActionScript:
Code:
var csvRequest:URLRequest;
var csvVars:URLVariables;
var csvloader:URLLoader;
var csvResultVars:URLVariables;

var url:String = "http://localhost/php/saveClassDataAsCSV.php";


function sendDataGridContent():void
{
	initSendingDataGridContent();
	csvloader.load(csvRequest);
}

function initSendingDataGridContent():void
{
	csvRequest = new URLRequest(url);

	csvloader = new URLLoader();

	csvVars = new URLVariables();
	csvVars.classData = classDataForCSV;


	csvResultVars = new URLVariables();

	csvRequest.data = csvVars;
	csvRequest.method = URLRequestMethod.POST;
}
PHP:
PHP-Code:
<?php

    $classData 
=  $_POST["classData"];
    
      
$myFile "classData.csv";
      
$fh fopen($myFile'w+') or die("can't open file");
    
fwrite($fh$classData);
    
fclose($fh);
    
?>
Das funktioniert alles auch wunderbar. Ich habe mir dann ein anderes PHP Skript geschrieben, dass die CSV Datei wieder einliesst und die Daten in eine Datenbank schreiben soll.

PHP-Code:
<?php

$databasehost 
"localhost";
$databasename "db";
$databasetable "tb ";
$databaseusername ="root";
$databasepassword "";
$fieldseparator ",";
$lineseparator "\n";
$csvfile "classData.csv";

$addauto 0;

$save 1;
$outputfile "output.sql";


if(!
file_exists($csvfile)) {
    echo 
"File not found. Make sure you specified the correct path.\n";
    exit;
}

$file fopen($csvfile,"r");

if(!
$file) {
    echo 
"Error opening data file.\n";
    exit;
}

$size filesize($csvfile);

if(!
$size) {
    echo 
"File is empty.\n";
    exit;
}

$csvcontent fread($file,$size);

fclose($file);

$con = @mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
@
mysql_select_db($databasename) or die(mysql_error());

$lines 0;
$queries "";
$linearray = array();

foreach(
split($lineseparator,$csvcontent) as $line) {

    
$lines++;

    
$line trim($line," \t");
    
    
$line str_replace("\r","",$line);
    
    
    
$linearray explode($fieldseparator,$line);
    
    
$linemysql implode("','",$linearray);
    
    if(
$addauto)
        
$query "insert into $databasetable values('','$linemysql');";
    else
        
$query "insert into $databasetable values('$linemysql');";
    
    
$queries .= $query "\n";

    @
mysql_query($query);
}

@
mysql_close($con);

if(
$save) {
    
    if(!
is_writable($outputfile)) {
        echo 
"File is not writable, check permissions.\n";
    }
    
    else {
        
$file2 fopen($outputfile,"w");
        
        if(!
$file2) {
            echo 
"Error writing to the output file.\n";
        }
        else {
            
fwrite($file2,$queries);
            
fclose($file2);
        }
    }
    
}

echo 
"Found a total of $lines records in this csv file.\n";


?>
Das funktioniert ABER nur dann, wenn ich die CSV Datei die auf dem Server abgelegt wurde vorher kurz mit z.B. Dreamweaver aufmache und dann wieder speichere.

Achja, ich arbeite mit Mac OS X. Das könnte vielleicht auch noch eine wichtige Information sein.

Kann mir jemand sagen was ich machen soll, dass das immer funktioniert?

LG
MausFan

Geändert von MausFan (16-05-2011 um 11:50 Uhr)
MausFan ist offline   Mit Zitat antworten
Alt 16-05-2011, 11:52   #2 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.164
Da Dein Problem in PHP oder der Flash-PHP-Kommunikation liegen dürfte, hab ich's mal in den betreffenden Forenbereich verschoben.
  • Wieso überträgst Du die Daten eigentlich nicht direkt in dei Datenbank sondern speicherst serverseitig erstmal eine ein CSV-Datei?

  • Dass es nach dem erneuten Speichern funktioniert, deutet auf ein Kodierungsproblem hin. Hast Du Dir mal angesehen, welches Encoding PHP für diese Datei verwendet?
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist gerade online   Mit Zitat antworten
Alt 16-05-2011, 11:53   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 70
Ich brauche verschiedene Versionen, deswegen speichere ich als CSV.
Wie kann ich mir anschauen, was für ein encoding php benutzt?
MausFan ist offline   Mit Zitat antworten
Alt 16-05-2011, 13:33   #4 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Zitat:
Zitat von MausFan Beitrag anzeigen
Wie kann ich mir anschauen, was für ein encoding php benutzt?
Mit einem normalen Editor ( ausser Notepad ). Homepage of Crimson Editor - Free Text Editor, Html Editor, Programmers Editor for Windows zB
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 16-05-2011, 14:51   #5 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.164
Zitat:
Zitat von MausFan Beitrag anzeigen
Wie kann ich mir anschauen, was für ein encoding php benutzt?
Oder Du ziehst die Datei einfach in den Dreamweaver und schaust dort unter Modifizieren > Seiteneigenschaften nach.
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist gerade online   Mit Zitat antworten
Alt 23-05-2011, 12:09   #6 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 70
Ich habe jetzt eure Tipps befolgt und habe herausgefunden, dass sich bei der Kodierung nichts ändert. Ich glaube jetzt, dass es etwas mit den Lese und Schreibrechten zu tun hat. Denn wenn ich im Finder nachschaue, dann heißt es:
nobody: lesen und schreiben
everyone: Nur lesen

Und wenn ich dass dann mit CHMOD auf 777 ändere, dann gehts aber trotzdem nicht. Nur wenn ich es dann mit dem Dreamweaver öffne und nochmal speichere, dann gehts.
An was kann das denn noch liegen?

Ich habe die Datei die ich generiert habe mal auf dem Terminal mit VIM aufgemacht und etwas seltsames gefunden:

Code:
1,5a,28,10,28^M2,5b,29,10,29^M3,5c,28,10,28^M4,6a,29,10,29^M5,6b,28,10,28^M6,6c,29,10,29^M7,7a,28,10,28^M8,7b,29,10,29^M9,7c,28,10,28^M10,8a,29,10,29^M
^M2 usw. woher kommt denn das?

Geändert von MausFan (23-05-2011 um 12:24 Uhr)
MausFan ist offline   Mit Zitat antworten
Alt 23-05-2011, 14:58   #7 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 70
Problem gelöst

Nachdem ich jetzt ein wenig gegoogelt habe, habe ich herausgefunden, dass das Problem der Zeilenumbruch war.

Der String der von Flash an die PHP Datei geschickt wird hatte für den Zeilenumbruch \r eingetragen. Dieser muss einfach nur mit \n ersetzt werden.

Dieser Code kann aus der fertigen Datei einfach das \r durch \n ersetzen:

PHP-Code:
$fp fopen($csvfile"r");
$read fread($fp"4096");
fclose($fp);
$search "\r";
$replace "\n";
$read str_replace($search$replace$read);
$fp fopen($csvfile"w+"); 
fputs($fp$read);
fclose($fp); 
MausFan ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
_globlal Variable verhält sich seltsam Fjoergyn Flash Einsteiger 14 22-08-2008 05:19
Preloader verhält sich seltsam jodelschnepfe Flash MX 2004 3 05-01-2007 17:45
asfunction verhält sich seltsam Bushaltenulf ActionScript 1 3 05-10-2005 17:05
Hilfe, Variable verhält sich seltsam Questor ActionScript 1 3 09-05-2005 13:59
ListBox verhält sich seltsam Wieland Flash MX 2 16-07-2002 07:11


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele