• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flash und Server > PHP und MySQL

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-03-2010, 11:00   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2010
Beiträge: 15
SQL nimmt Daten nicht auf

Hallo, ich hab mal eine vielleicht etwas komplexe Frage:

Ich habe in Flash mit AS3 ein Script gebaut, dass verschiedene Texteingaben an eine PHP-Datei übergibt, diese soll dann in eine SQL-Datenbank schreiben. Danach kann dies dann über eine andere PHP-Datei und Flash wieder ausgegeben werden. Der Eintrag wird auch erstellt, allerdings wird der Inhalt meiner Textfelder nicht eingeschrieben. Ich habe mit .getDate und timestamp die Serverzeit auch übergeben, diese wird ohne Probleme geschrieben und auch nachher angezeigt. Am Zugriff auf die Datenbank kann es also grundsätzlich nicht liegen. Wenn ich von Hand etwas in die Datenbank eintrage wird das auch ohne Probleme angezeigt. Im ganzen Prozess werden keine Fehlermeldungen angezeigt, obwohl ich bei möglichen Fehlern Meldungen reingeschrieben habe. Gibt es bei SQL/PHP und Flash bekannte Probleme? Das ganze baut auf dem Workshop vom Buch Flash CS4 von Galileo Design auf.

Ich zeig mal eben den Flash- und PHP-Code (die Adressen und Namen hab ich hier geändert):

Code:
function readData():void 
{
	var myLoader:URLLoader = new URLLoader();
	var myDate:Date = new Date();
	var timestamp:uint = myDate.getTime();
	var myRequest:URLRequest = new URLRequest("http://www.meineAdresse/readData.php?"+timestamp);
	
	myLoader.dataFormat=URLLoaderDataFormat.VARIABLES;
	myLoader.load(myRequest);
	myLoader.addEventListener(Event.COMPLETE, completeHandler);
	myLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
	myLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
}

function completeHandler(e:Event):void 
{
	var anzData:uint = uint(e.target.data.counter);
	for (var i:uint = 0; i<anzData; i++)
	{
		var id:uint 		= e.target.data["id"+i];
		var datum:String 	= e.target.data["datum"+i];
		var zeit:String 	= e.target.data["zeit"+i];
		var myname:String 	= e.target.data["vorname"+i] + " " + e.target.data["nachname"+i];
		var email:String 	= e.target.data["email"+i];
		var web:String 		= e.target.data["web"+i];
		var msg:String 		= e.target.data["msg"+i];
		
		gbData_arr.push({id:id, datum:datum, zeit:zeit, myname:myname, email:email, web:web, msg:msg});
	}
	renderData();
}

function securityErrorHandler(e:Event):void
{
	status_txt.text = "Fehler beim Übertragen der Daten";
}

function ioErrorHandler(e:Event):void
{
	status_txt.text = "Fehler beim Übertragen der Daten";
}

var gbData_arr:Array = new Array();
readData();

function renderData():void
{
	ausgabe_txt.htmlText = "";
	var outputStr:String = "";
	
	for (var i:uint = 0; i<gbData_arr.length; i++)
	{
		outputStr+="<b>"+gbData_arr[i].myname+"<\b> schrieb am: ";
		outputStr+=gbData_arr[i].datum+" um ";
		outputStr+=gbData_arr[i].zeit+"<br>";
		outputStr+=gbData_arr[i].msg+"<br>";
		
		if (gbData_arr[i].web!="") 
		{
			outputStr+="Web: "+gbData_arr[i].web+"<br><br>";
		}
	}
	ausgabe_txt.htmlText=outputStr;
}

var sentState:Boolean = false;
send_mc.addEventListener(MouseEvent.CLICK, writeData);

function writeData(e:MouseEvent):void 
{
	if (sentState == false)
	{
		var myLoader:URLLoader = new URLLoader();
		var myDate:Date = new Date();
		var timestamp:uint = myDate.getTime();
		var myRequest:URLRequest = new URLRequest("http://www.meineAdresse/writeData.php?"+timestamp);
		
		myRequest.method = URLRequestMethod.POST;
		
		var myVars: URLVariables = new URLVariables();
		
		myVars.vorname = vornameBG_mc.input_txt.text;
		myVars.nachname = nachnameBG_mc.input_txt.text;
		myVars.email = emailBG_mc.input_txt.text;
		myVars.web = webBG_mc.input_txt.text;
		myVars.msg = msgBG_mc.input_txt.text;
		
		myRequest.data = myVars;
		myLoader.dataFormat= URLLoaderDataFormat.VARIABLES;
		myLoader.load(myRequest);
		myLoader.addEventListener(Event.COMPLETE, transferedOutput);
		myLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
		myLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
	} else
		{
			status_txt.text="Du hast dich bereits eingetragen.";
		}
}

function transferedOutput(e:Event):void 
{
	status_txt.text="Ihr Eintrag wurde eingefügt";
	sentState = true;
	readData();
}
Soweit der Flash-Code. Der dazugehörige PHP-Code der writeData.php:

PHP-Code:
<?php
    
include 'derZugang';
    function 
secureData($value) {
        if(
get_magic_quotes_gpc()) {
            
$value stripslashes($value);    
        }
        
$value mysql_real_escape_string($value);    
    }
    if(isset(
$_POST['vorname']) &&
        isset(
$_POST['nachname']) &&
        isset(
$_POST['msg'])) {
        
$datum date("Y").":".date("m").":".date("d");
        
$zeit date("H").":".date("i").":".date("s");
        
$vorname secureData($_POST['vorname']);
        
$nachname secureData($_POST['nachname']);
        
$email secureData($_POST['email']);
        
$web secureData($_POST['web']);
        
$msg secureData($_POST['msg']);
        
$conn mysql_connect($server,$benutzer,$kennwort);
        if (!
$conn) {
            die(
"Verbindung konnte nicht hergestellt werden.");
        }
        
$db "Datenbank";
        
$table "Tabelle";
        
$db_selected mysql_select_db($db$conn);
        if(!
$db_selected) {
            die(
"Datenbank konnte nicht ausgewählt werden.");
        }
        
$sql_query "INSERT INTO $table (datum,zeit,vorname,nachname,email,web,msg) VALUES ('$datum','$zeit','$vorname','$nachname','$email','$web','$msg')";

        
$result=mysql_query($sql_query,$conn);
        if(
$result) {
            echo 
"status=ok";
        } else {
            echo 
"status=error";
        }
}
?>
Vielen Dank, Gruß Markus
Markr ist offline   Mit Zitat antworten
Alt 16-03-2010, 16:31   #2 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.820
Mach einfach mal vor deiner Query ein echo aller Werte die du dort haben solltest - wenn die Fehlen liegt der Fehler vorher. Oder direkt mal ein print_r( $_POST ); am Anfang der Datei
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 21-03-2010, 14:50   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2010
Beiträge: 15
Also bei dem Echo gibt er mir nichts aus. Das mit print hab ich nicht ganz verstanden. Wie sollte das aussehen? Der Fehler scheint ja vorher zu liegen, oder? Ich hab mal noch was einfacheres geschrieben:

Code:
function timerComplete(e:TimerEvent):void
{
	if (mittags<=2 && sentState == false)
	{
		var myLoader:URLLoader = new URLLoader();
		myLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
		var myVars = new URLVariables();
		myVars.med1 = med1_str;
//		myVars.zeit = datumHeute;
		var myRequest:URLRequest = new URLRequest("meine Adresse");
		myRequest.method = URLRequestMethod.POST;
		myRequest.data = myVars;
		myLoader.load(myRequest);
		sentState == true;
	}
}
Also wenn ein Timer gelaufen ist und dann eine Variable noch unter drei liegt, soll eine mail geschickt werden. Auch in diesem Beispiel klappt alles, ich bekomme auch die Mail, aber leider komplett ohne Inhalt.

PHP-Code:
<?php
       
function clearString ($in){
       
$temp $in;
       
$temp preg_replace("/[^a-z0-9 !?:;,.\/_\-=+@#$&\*\(\)]/im"""$temp);
       
$temp preg_replace"/content-type:|bcc:|cc:|to:|from:)/im"""$temp);
       
$temp strip_tags($temp);
       
$temp utf8_decode($temp);
       return 
$temp;
       }
          
$med1 clearString($_POST['med1']);
          
$meineAdresse "meine Email";
          
$subject "Mail-Notifier";
          
$msg str_replace("\r""\n",clearString($msg));                                                   
          
          
      
$myMessage =  "$med1\n";
      
mail ($meineAdresse$subject$myMessage$header);
    
?>
Gibts da irgendeine Erklärung für?

Vielen Dank,
Gruß, Markus
Markr ist offline   Mit Zitat antworten
Alt 21-03-2010, 16:39   #4 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.820
Sicher dass deine RegExp da funktioniert und nicht alles ersetzt?
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 21-03-2010, 16:56   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2010
Beiträge: 15
Super, das hat geklappt. Hab die RegExp in der PHP rausgenommen. Jetzt gehts. Keine Ahnung, was ich da falsch gemacht hab, hatte das aus dem Workshop übernommen.

Danke vielmals!
Markr ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
datenübergabe, php, problem, sql

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
$_POST nimmt Daten nicht an - $GET schon? bigyeti ActionScript 3 5 20-11-2009 08:13
[Flash CS3] mc nimmt größe nicht an Flo_21 Flash Einsteiger 5 17-03-2009 15:29
FMS2 nimmt nicht auf suingomat Flash Media Server 1 07-12-2006 16:49
mysqldump nimmt nicht alle daten mit ingohill Server-Seite allgemein 6 28-09-2005 21:12
tell target nimmt Variable nicht xthetronx Flash MX 2 17-06-2002 17:02


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:44 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele