// Daten senden
this.loadVariables("datei.php?cache=" + (new Date().getTime()));
this.onData = function() {
_root.textfeld_1 = this.inhalt_1; // Variable aus dem PHP Script einem Textfeld zuweisen
_root.textfeld_2 = this.inhalt_2;
}
// Flash MX Variante 2
v = new LoadVars();
// Wenn Daten geladen wurden sind
v.onLoad = function(geladen) {
if(geladen) {
_root.textfeld_1 = this.inhalt_1; // Variable aus dem PHP Script einem Textfeld zuweisen
_root.textfeld_2 = this.inhalt_2;
}
}
// Daten senden
v.load("datei.php?cache=" + (new Date().getTime()));
Dann noch zwei Textfelder mit Variablennamen:
_root.textfeld_1
_root.textfeld_2
auf die Bühne.
Dort werden dann die Texte aus der PHP Datei angezeigt.
Beispiel für die Rückgabe eines PHP Script:
PHP:
1 2 3 4 5 6 7 8 9
<?
$meineDaten_1 = 'Das könnte natürlich auch aus einer DB kommen';
$meineDaten_2 = 'Zwei Variablen als Beispiel. Ein %26 Zeichen muss man per Hexcode übergeben.\nEine Hexcode Übersicht findet ihr im Download Bereich.';
Beiträge: 354 Wohnort: Roetgen bei
Aachen Registriert: Jun 2002
mahlzeit,
kleine Erweiterung für den Fall, dass mehrere Daten reinkommen und Sie jeweils in einer Schleife geparsed werden sollen.
Im php rufen wir meinetwegen die Variablen aus einer Datenbank ab.
Diese Daten liegen dann vor durch z.b:
PHP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<?
//hierbei ruft er aus der Datenbank 'Flashhilfe'
//in der Tabelle 'daten' das feld 'feld' ab
//und gibt es jeweils als var1, var2, var3 ...
//heraus
$conn = mysql_connect("server", "flash", "seppel");
mysql_slect_db('flashhilfe');
$daten = mysql_query("SELECT * from daten");
while($row = mysql_fetch_array($daten)){
$i++;
echo('var'.$i.'='.Row["feld"]);
}
mysql_close($conn);
echo('geladen=1');
?>
nun kann mann diese in Flash konfortabel einlesen.
Diese Art der "Datenflut" kommt z.b bei einem Flashforum , einem Gästebuch, einer Newsdatei
und überhaupt in Applikationen, in denen Daten periodisch hinzugefügt werden und nachher in Tabellenform oder ähnlichem wieder abgerufen werden, vor.
Der Flashteil:
in Keyframe 1 läd er die Datei, und geht in 2,3 in eine
Schleife die erst weitergeht, sobald die Variable 'geladen'
nicht leer ist. Das ist die Variable die vom php als letztes übergeben wird.
//Frame 1
loadVariablesNum("daten.php",0);
//Frame 2
//leer!
//Frame 3
if(geladen != ""){
gotoAndPlay(4);
}else{
gotoAndPlay(2);
}
//Frame 4
/*
ich habe einen MovieClip, der wie eine Zeile in einer
Tabelle aussieht und ein dynamisches Textfeld namens
"inhalt" hat. Diesen duplizier ich jetzt jeweils untereinander, sodass eine Tabelle entsteht.
*/
function leseDaten(){
if(_root.geladen != ""){
zahl = 4;
beginy = _root.zeile._y;
for(i=1;i<zahl;i++){
if(_root["var"+i] != ""){ //var nicht leer ?
duplicateMovieClip("_root.zeile", "zeile"+i, _root.tiefe);
zahl++;
_root.tiefe++;
myZeile = _root["zeile"+i]; //ansprechen des neuen
myZeile.inhalt = _root["var"+i]; //parsen der php var
myZeile._y = beginy+i*zeile._height; //untereinander
}else{ // sobald var+i leer, also keine php var mehr da
break; //abbrechen
}
}else{ // wenn geladen leer
gotoAndPlay(1); //nochmal laden
}
}
leseDaten(); //init
In dieser funtion kann man der mittleren teil natürlich variieren. Denkbar wären ebenfalls teilzuweisungen, oder random zuweisungen o.ä zb für einen Newsticker, der
Zufällig sich die News selektiert:
Beiträge: 354 Wohnort: Roetgen bei
Aachen Registriert: Jun 2002
mahlzeit,
also wie holly schon sagte muss das
"slect" in "select" gewandelt werden.
Der php script lautet dann wie folgend:
PHP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<?
//hierbei ruft er aus der Datenbank 'Flashhilfe'
//in der Tabelle 'daten' das feld 'feld' ab
//und gibt es jeweils als var1, var2, var3 ...
//heraus
$conn = mysql_connect("server", "flash", "seppel");
mysql_select_db('flashhilfe'); //<-- korrigiert
$daten = mysql_query("SELECT * from daten");
while($row = mysql_fetch_array($daten)){
$i++;
echo('var'.$i.'='.Row["feld"]);
}
mysql_close($conn);
echo('geladen=1');
?>
Im Flash script habe ich eine "}" vergessen, und zwar die,
die die If schleife in der for schleife beendet.
Daraus ergibt sich dann folgender script:
function leseDaten(){
if(_root.geladen != ""){
zahl = 4;
beginy = _root.zeile._y;
for(i=1;i<zahl;i++){
if(_root["var"+i] != ""){ //var nicht leer ?
duplicateMovieClip("_root.zeile", "zeile"+i, _root.tiefe);
zahl++;
_root.tiefe++;
myZeile = _root["zeile"+i]; //ansprechen des neuen
myZeile.inhalt = _root["var"+i]; //parsen der php var
myZeile._y = beginy+i*zeile._height; //untereinander
}else{ // sobald var+i leer, also keine php var mehr da
break; //abbrechen
}
} // <-- hate ich vergessen
}else{ // wenn geladen leer
gotoAndPlay(1); //nochmal laden
}
}
leseDaten(); //init
sorry, warn zwei Verschreiberchen, ansonsten
MfG
schamahn
Master of
http://www.kommunalwahl-bw.de
http://www.uvip-media.de
Beiträge: 6940 Wohnort: München Registriert: Jan 2002
Themenautor/in
Schamahn hatte noch nen Scriptfehler.... wie oben erwähnt (Re5) aber hier nocheinmal um Misverständnisse auszuräumen:
PHP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<?
//hierbei ruft er aus der Datenbank 'Flashhilfe'
//in der Tabelle 'daten' das feld 'feld' ab
//und gibt es jeweils als var1, var2, var3 ...
//heraus
$conn = mysql_connect("server", "flash", "seppel");
mysql_select_db('flashhilfe'); //<-- korrigiert
$daten = mysql_query("SELECT * from daten");
while($row = mysql_fetch_array($daten)){
$i++;
echo('var'.$i.'='.$row["feld"]);
}
mysql_close($conn);
echo('geladen=1');
?>
ist zwar schon ne ganze weile her, dass du den thread geschrieben hast, aber für alle, die nachlesen ein nicht unwichtiger hinweis, wie es bei mir gefunkt hat:
das ergebnis aus der db sollte folgende form haben:
PHP (z.b variablen.php):
echo "&inhalt=$inhalt&inhalt2=$inhalt2";
bei mir hat es erst funktioniert, als ich auch vor das erste "inhalt" das "&" gesetzt habe - habe aber auch 2 tage gebraucht, um da drauf zu kommen!
Beiträge: 170 Wohnort: Bei Karlsruhe Registriert: Nov 2002
Ich löse das Problem mit den Schleifen in Flash mit einer leeren Filmsequenz. Andere Möglichkeiten irgendetwas mehrmals auszuführen (mit Zeitabstand) gibts offenbar in Flash5 noch nicht (while und for u.ä. will flash immer im vorraus berechnen).
Wie erstellt man einen leeren MC?
Einfügen->Neues Symbol (oder: STRG/CTRL + F8)->Namen eingeben->OK drücken->aus Symbolbearbeitungsmodus gehen->Symbol aus Bibilothek (STRG/CTRL + L) ziehen->Objektaktionen öffnen (STRG/CTRL + ALT + A)->AS drauflegen->FERTIG
Also ich weiß ja nicht. Ich habe alles hier beschriebene probiert und Sebastians Quelltext fast 1:1 übernommen. Bei mir scheint er aber die Datei nicht richtig auszulesen und läuft sich damit einen Wolf und erzeugt hundert millionen mal die zeile.
Ich habe es auch mal mit " (_root.geladen != undefined ) " probiert, statt " (_root.geladen != "" ) " aber da brach er immer gleich ab, da er scheinbar die Daten entweder gar nicht oder nicht richtig ausliest.
Die testdaten.php liegt auch im gleichen Verzeichnis wie die Flash-Dateien.
Beiträge: 30 Wohnort: Recklinghausen Registriert: Jan 2003
hi nochaml,
also das problem besteht leider noch.
aber ich glaube ich weiss jetzt warum :
die variable $i wird auf 0 gesetzt.
dann zählt sie einen hoch beim aufruf der php datei aus flash. dann wird sie geschlossen und wieder aufgerufen für die nächste variable.
nur leider wird i dabei wieder auf 0 gesetzt.
und somit +1 also auf 1.
so geht das immer weiter.
soll heissen man muss die variable i global setzen und in der php datei rausholen und dann wieder +1 rechnen.
nur leider habe ich keinen schimmer wie ich eine variable global setze.
ich habe mal das $i=0 in der php datei weggelassen. leider ändert sich aber nichts.
eine möglichkeit wäre, dass man die vriable i auch in flash rausläd, dann mit mget wieder bagibt und in der php datei i gezogen wird ?!
werde ich die dtage mal ausprobieren und mich melden ob es geklappt hat.
wenn einer weiss wie, dann möge er es doch kund tun ;-)
hallihallo ...
ich hab mir das hier alles mal so durchgelesen und dachte eigetlich auch, dass es mein problem loesen wuerde - aber irgendwie klappt es immer noch nicht !? :(
mein problem:
----------------------------------------
1) login mit zwei feldern => login_name, login_pin
die werden an mein phpskript per
// Verbindung zum Server herstellen =========================
$link = mysql_connect($server, $username, $password) or $login = "Verbindung zum Server fehlgeschlagen.\n";
// Verbindung zur Datenbank ---------------------------------
mysql_select_db($database) or $login = "Verbindung zur Datenbank fehlgeschlagen.\n";
hallo sebastian,
vielen dank fuer den tip - werd das dann mal demnaechst ausprobieren ...
was mich nur wundert, dass es bei den beiden variablen, die ich in textfeldern ausgebe ($php, $login) funktioniert - es wird korrekt angezeigt, aber bei den beiden anderen nicht?!
zum abschluss noch eine frage: wo genau muss man denn das loadVars-object erzeugen, wenn das