Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-02-2004, 22:06   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Ort: Mannheim
Beiträge: 8
GET-Variable an PHP senden, Rückvariablen erhalten - wie?

Guten Abend.

Ich möchte eine GET-Variable (eine MySQL-Spalten-id-Zahl *g*) an ein PHP Script senden, das dann darauf reagiert und mir Variablen zurücksendet. Wie kann ich das machen?

[AS]loadVariables("laden.php", "", "GET");//Variable senden
loadVariables("laden.php", "");//nun empfangen...[AS]

Geht das so???

Gruß Futzel
Futzel ist offline   Mit Zitat antworten
Alt 24-02-2004, 22:17   #2 (permalink)
anyway
Gast
 
Beiträge: n/a
Wenn der Server irgendwelche Daten zurückgibt, die dann von Flash verwendet werden sollen, lass ich die Antwort meist in ein LoadVars-Object geben..so in der Art müsste das funzen:

ActionScript:
  1. vrs = new LoadVars();
  2. vrs.onData = function () {
  3. trace("Serverantwort:");
  4. trace("");
  5. trace(this);
  6. };
  7. loadVariables("deinPHP.php?jedemengeVariablen=jedeMengeWerte", vrs, "GET");
  Mit Zitat antworten
Alt 24-02-2004, 22:19   #3 (permalink)
Flash-Wüstling
 
Benutzerbild von pheidrias
 
Registriert seit: Dec 2001
Ort: Halle/Saale
Beiträge: 4.300
ActionScript:
  1. lv=new LoadVars();
  2. lv.onLoad=function(ok) {
  3.  if(!ok) trace("dummgelaufen");
  4.  _root.textfeld.text=this.phpvarname;
  5. }
  6. lv.getVar="wert";
  7. lv.sendAndLoad("dein.php",lv,"GET");

PHP-Code:
//Teil 1 ist deine Sache...

echo "phpvarname=".urlencode(utf8_encode($dieVariable)); 
Damit hast du das Grundgerüst ---> viele Beispiele dann hier im Forum ersuchen !

tanti saluti,
pheidrias
__________________
Ehrlich währt am LÄNGSTEN !
pheidrias ist offline   Mit Zitat antworten
Alt 24-02-2004, 22:28   #4 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Ort: Mannheim
Beiträge: 8
Also ich habe es nochmal versucht, bevor ich eure beiden Beiträge las:

ActionScript:
  1. loadVariables("laden.php?anzahl="add anzahl,"");

SO ging es.
Eure Scripte verstehe ich leider noch nicht, ich lerne Flash aber auch erst seit 4 Tagen . Aber ist nicht schlimm, wenn ich es mal besser kann, schau ich mir eure Schnipsel nochmal an - DANKE.
#

Gruß Futzel
Futzel ist offline   Mit Zitat antworten
Alt 24-02-2004, 22:30   #5 (permalink)
Neuer User
 
Benutzerbild von Kryz
 
Registriert seit: Oct 2001
Ort: Hamburg
Beiträge: 45
Nicht ganz. ;-)

Senden von Variablen aus Flash heraus
loadVariables("http://www.domain.de/send.php", this, "POST");

sendet z.B. alle (!) Variablen der Zeitleiste, aus der diese Zeile aufgerufen wird, in diesem Fall per POST. Spielt aber hier keine Rolle, denn Du willst ja offensichtlich genau einen (kleinen) Wert übergeben.


Entgegennehmen u. Verarbeiten der Variablen: send.php
PHP-Code:
<?php
   
// meineVar ist die Var. aus Flash
   
if ($meineVar == 99) {
      echo 
"&sendback=Sie haben die ID 99 übergeben&eof=1&";
   }
?>
Jede Variable, die aus Flash heraus gesendet wurde, steht dem PHP-Skript als $dieVariable zur Verfügung, also hier im Beispiel kommt aus Flash meineVar und landet in PHP als $meineVar, samt Inhalt natürlich.
Die IF-Abfrage ist nur ein Beispiel und prüft hier nur, ob $meineVar den Wert 99 enthält, und falls ja, einen String an Flash ausgibt, der die Variable sendback und die Variable eof enthält.

Flash seitig solltest Du dann eine Schleife bauen, die das Vorhandensein bzw. den Inhalt dieser Variablen eof (engl. "end of file") prüft und die dann abbricht, wenn eof gleich 1 ist. Denn dann sind alle Daten vom PHP-Skript an den Flashfilm zurückgeschickt worden, und Du kannst im Film mit ihnen arbeiten.
ActionScript:
  1. this.onEnterFrame = function() {
  2.    if (this.eof == 1) {
  3.       // alles geladen, weiter im Film
  4.       nextFrame(); // z.B.
  5.       // für weitere Lesevorgänge wieder auf Null setzen:
  6.    this.eof=0;
  7.       // schleife aus performancegründen löschen
  8.       delete this.onEnterFrame;
  9.    } else {
  10.       // noch weiter laden...
  11.       output = "Still reading..."; // z.B.
  12.    }
  13. };
  14. stop();
Ohne so eine Überprüfung kann es passieren, dass der Film noch nicht alle Werte vom PHP-Skript erhalten hat und ein Versuch, mit ihnen im Film zu arbeiten, fehlschlägt.

Der Echo-Befehl ist also das Entscheidende im PHP-Skript.
__________________
Gruß
Kryz | WeBlog: http://www.christianscholz.com

Geändert von Kryz (24-02-2004 um 22:34 Uhr)
Kryz ist offline   Mit Zitat antworten
Alt 24-02-2004, 22:36   #6 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Ort: Mannheim
Beiträge: 8
Ich habe mir deine Antwort mal durchgelesen, aber irgendwie noch nicht richtig verstanden. Hab aber auch Kopfweh vom Flash und schau mir das alles morgen nochmal an.

Gruß Futzel
Futzel ist offline   Mit Zitat antworten
Alt 25-02-2004, 18:07   #7 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 9
Eins kapier ich net... und zwar, wie das mit der
if (eof == 1) etc.... eine Schleife sein soll?! das ist doch einfach eine Verzweigung mit zwei Bedingungen. While.. oder for.. wäre doch eine Schleifen anweisung?

Gruss

Michi
__________________
Wer Schreibfehler findet, darf sie behalten
Michael Bürgy ist offline   Mit Zitat antworten
Alt 25-02-2004, 23:49   #8 (permalink)
Neuer User
 
Benutzerbild von Kryz
 
Registriert seit: Oct 2001
Ort: Hamburg
Beiträge: 45
Gut, dass Du fragst.
"IF-Schleifen" gibt es ja nicht.
Als ich oben von einer Schleife sprach, meinte ich den enterFrame-Anteil im Beispielskript, der ja mehrmals pro Sekunde ausgeführt wird und hier also checkt, ob eof schon gleich 1 ist.
__________________
Gruß
Kryz | WeBlog: http://www.christianscholz.com
Kryz ist offline   Mit Zitat antworten
Alt 26-02-2004, 15:41   #9 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 9
Ok, jetzt habe auch ich diesen Punkt begriffen

Ich arbeite momentan an einem ganz ähnlichem Projekt, aber bringe es einfach nicht fertig, dass es so funktioniert wie ich es mir vorstelle Ich schreibe mal die Idee hier rein, vielleicht kann mir ja jemand sagen, wo der Fehler liegt.

Ich will mit Flash eine variabel an PHP übergeben. Und zwar wenn ich auf einen Knopf drücke, wird die variabel vereinsname = "UHC Kleindoettingen" gesetzt. Diese Variabel wird an PHP übergeben und mit ihr mache ich eine MySQL-Datenbank-Abfrage.
Das Resultat dieser Abfrage wird in die variablen $kontakt, $verein, $email und $url aufgeteilt (Spalten der Datenbank).
All diese Variabeln werden wieder zürück an Flash gesendet, bzw. Flash liest all diese Variabeln aus um sie wieder zu verwenden.
Ich will aus versuchszwecken nur einmal die variabel verein in Flash ausgeben (durch das dyn. Textfeld name)

Die beschriebenen Aktionen laufen ja alle nacheinander ab, brauchen aber zum teil eine gewisse zeit bis sie ausgeführt sind. Und genau da, denke ich, liegt das problem: Dass die Variabeln aus PHP zu früh an Flash übergeben werden, wenn PHP den script gar noch nicht fertig ausgeführt hat und demnach die variabeln noch gar nicht gesetzt worden sind.

Hier der PHP-Script der die MySQL-Abfrage durchführt und das Ergebnis ausgibt. Flash liest von diesem Script die Variablen aus:

PHP-Code:
<?PHP
$eof
="0";
$db_server "localhost";
$db_name "michaelbuergy_db";
        
$db = @MYSQL_CONNECT($db_server) or die ("Konnte keine Verbindung zur Datenbank herstellen");
$db_check = @MYSQL_SELECT_DB($db_name);if($db);
$result mysql_db_query("michaelbuergy_db","SELECT * FROM vereine WHERE verein = '$vereinsname' ORDER BY id");
$row mysql_fetch_row($result);
$verein_fl $row[1];
$url_fl $row[2];
$kontakt_fl $row[3];
if(
$vereinsname != ""
{
$eof="1";
}
echo 
"kontakt=".$kontakt_fl."&verein=".$verein_fl."&url=".$url_fl."&eof=".$eof;

?>
Hier einmal der ActionScript des Knopfes (Beginn der Abfrage):

ActionScript:
  1. on (release) {
  2.     vereinsname = "UHC Kleindoettingen";
  3.     getURL("test.php", "php" ,"GET");
  4.     nextFrame();
  5. }


Dann gehts weiter im 2. Frame in Flash (selbe Ebene) in welchem ich 2 Movieclips mit je 2 Frames habe (der Grundgedanke, weshalb ich MovieClips gewählt habe ist der, dass diese ja endlos wiederholt werden -> somit wahrscheinlich auch der Script der in den MovieClip-Frames ist.

Hier der ActionScript des 1.Movieclips (abfrage1) (Abfrage ob PHP-Script vollständig ausgeführt wurde):

ActionScript:
  1. if(eof == 1) {
  2.     loadVariables("test.php",abfrage2);
  3. }



2.Movie (abfrage2) Script im ersten Frage des MC:

ActionScript:
  1. if(verein == "UHC Kleindoettingen") {
  2.     name = verein;
  3.     stop();
  4. }

wie schon erwähnt ist dabei name das dyn. Textfeld.

Aber eben irgendwie funzz das ned! Das Textfeld bleibt leer.
Kann mir jemand unter die Arme greifen? Danke euch!

Gruss

Michi
__________________
Wer Schreibfehler findet, darf sie behalten
Michael Bürgy ist offline   Mit Zitat antworten
Alt 29-02-2004, 00:01   #10 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 9
Unhappy

Hat wirklich niemand einen Lösungsansatz für mein riesen "Problemchen" Oder liegt es daran, dass ich es etwas wirr beschrieben habe

gruss

michi
__________________
Wer Schreibfehler findet, darf sie behalten
Michael Bürgy ist offline   Mit Zitat antworten
Alt 29-02-2004, 00:14   #11 (permalink)
::: codeslinger :::
 
Benutzerbild von L4M4R
 
Registriert seit: Apr 2003
Ort: schweiz
Beiträge: 725
wir sind hier im MX Forum also verwendet doch bitte auch MX Funktionen

ActionScript:
  1. //kann irgendwo stehen, vorzugsweise aber Frame 1 oder externe *.as
  2. MovieClip.prototype.MySQL = function(x:String){
  3. MyVars = new LoadVars();
  4. MyVars.f_verein = x;
  5. MyVars.sendAndLoad("test.php?" + new Date().getTime(), MyVars, "POST");
  6. MyVars.onLoad = function(x){
  7. if(x){
  8. trace(MyVars.kontakt);
  9. trace(MyVars.verein);
  10. trace(MyVars.url);
  11. trace(MyVars.eof);
  12. }
  13. }
  14. }
  15.  
  16. //Afuruf
  17. on(press){
  18. MySQL("UHC Kleindoettingen");
  19. }

PHP-Code:
<?PHP
$eof
="0";
$db_server "localhost";
$db_name "michaelbuergy_db";
        
$db = @MYSQL_CONNECT($db_server) or die ("Konnte keine Verbindung zur Datenbank herstellen");
$db_check = @MYSQL_SELECT_DB($db_name);if($db);
$result mysql_db_query("michaelbuergy_db","SELECT * FROM vereine WHERE verein = '$f_verein' ORDER BY id");
$row mysql_fetch_row($result);
$verein_fl $row[1];
$url_fl $row[2];
$kontakt_fl $row[3];
if(
$vereinsname != ""
{
$eof="1";
}
echo 
"&kontakt=".$kontakt_fl."&verein=".$verein_fl."&url=".$url_fl."&eof=".$eof."&";

?>
PS: Das PHP sieht ziemlich schelcht gelöst aus, bina ber zu müde um das noch zu richten *gähn*
__________________
Am Anfang schuf Gott das Advanced Research Projects Agent Network, dass auf den Namen ARPAnet getauft wurde, und das ARPAnet wuchs und gedieh und zeugte das Milnet, und das ARPAnet und das Milnet zeugten das Internet, und das Internet und seine Nachkommen, USENET Newsgroups und das World Wide Web, wurden zu einer Dreifaltigkeit, die das Leben seines Volkes für alle Zeiten grundlegend veränderte. L4M4R
L4M4R ist offline   Mit Zitat antworten
Alt 29-02-2004, 10:12   #12 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 9
sorry, dein Vorschlag funzt irgendwie ned :P
Sorry, wegen des PHP-Scripts... bin eher noch ein newbie als ein Profi
__________________
Wer Schreibfehler findet, darf sie behalten
Michael Bürgy ist offline   Mit Zitat antworten
Alt 29-02-2004, 10:17   #13 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
[QUOTE]Geschrieben von L4M4R
wir sind hier im MX Forum also verwendet doch bitte auch MX Funktionen ...[/as]

...und dann am Besten auch noch richtig..
Die von kryz lang und breit erklärte if(eof==1)-Abfrage wird doch mit dem loadVars-Objekt gar nicht mehr benötigt man braucht also in diesem fall in php auch nicht die variable $eof....
...der onLoad-Handler wird automatisch immer aktiv, wenn ein Datenpaket übergeben wird....diese ganze Geschichte funktioniert also automatisch, wenn der Handler erst funktionieren soll, wenn wirklioch alles geladen ist kann mann dann auch noch die loaded-Funktion nutzen (bei mir funktionierte aber biisher alles immer noch ohne loaded), so ich versuchs mal blind hier rein zu scripten (werde dabei copy&paste nutzen):
ActionScript:
  1. //das loadVars-Objekt initialisieren
  2. MyVars = new LoadVars();
  3. //die Funktion onLoad wird 'immer' aktiviert,
  4. //wenn MyVars Daten übermittelt bekommt
  5. //man braucht sie also bei erneuter Abfrage
  6. //nicht noch einmal zu schreiben
  7. MyVars.onLoad = function(success) {
  8.     if (success) {
  9.         if (this.loaded) {
  10.             //wie gesagt bei mir hat bisher alles
  11.             //auch ohne diese loaded Abfrage funktioniert
  12.             if (this.verein) {
  13.                 //noch eine Abfrage die ich eingefügt habe
  14.                 trace(this.kontakt);
  15.                 trace(this.verein);
  16.                 trace(this.url);
  17.             } else {
  18.                 trace("keine Daten zum Verein "+this.f_verein+" gefunden");
  19.             }
  20.         }
  21.     } else {
  22.         //ein weiterer Vorteil des loadVars-Objekts:
  23.         //wenn der Zugriff nicht erfolgreich ist
  24.         //kann man auch das abfangen
  25.         trace("connection failed");
  26.     }
  27. };
  28. //so das obere musst Du also nur einmalig initialisieren
  29. //danach musst Du zur Datenbankabfrage immer nur noch folgendes machen:
  30. MyVars.f_verein = "meinVerein";
  31. MyVars.sendAndLoad("test.php?"+new Date().getTime(), MyVars, "POST");
...und dann die vereinfachte php:
PHP-Code:
<?PHP
$db_server 
"localhost";
$db_name "michaelbuergy_db";
        
$db = @MYSQL_CONNECT($db_server) or die ("Konnte keine Verbindung zur Datenbank herstellen");
$db_check = @MYSQL_SELECT_DB($db_name);if($db);
$result mysql_db_query("michaelbuergy_db","SELECT * FROM vereine WHERE verein = '$f_verein' ORDER BY id");
$row mysql_fetch_row($result);
$verein_fl $row[1];
$url_fl $row[2];
$kontakt_fl $row[3];
echo 
"&kontakt=".echo "phpvarname=".urlencode(utf8_encode($kontakt_fl))."&verein="echo "phpvarname=".urlencode(utf8_encode($verein_fl))."&url="echo "phpvarname=".urlencode(utf8_encode($url_fl))."&";
?>
Gruß

Alois

Edit: ...und dann noch das posting von pheidrias beachten, das macht wenigstens Sinn
Edit: Nr.2 Ich hab phei's info mal in die php eingefügt (das ist wg. der Umlaute
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-

Geändert von Alois (29-02-2004 um 10:30 Uhr)
Alois ist offline   Mit Zitat antworten
Alt 29-02-2004, 10:29   #14 (permalink)
::: codeslinger :::
 
Benutzerbild von L4M4R
 
Registriert seit: Apr 2003
Ort: schweiz
Beiträge: 725
@Alois
und wo ist da der Unterschied von Deinem zu meinem AS? Bzw. was ist an meinem falsch
__________________
Am Anfang schuf Gott das Advanced Research Projects Agent Network, dass auf den Namen ARPAnet getauft wurde, und das ARPAnet wuchs und gedieh und zeugte das Milnet, und das ARPAnet und das Milnet zeugten das Internet, und das Internet und seine Nachkommen, USENET Newsgroups und das World Wide Web, wurden zu einer Dreifaltigkeit, die das Leben seines Volkes für alle Zeiten grundlegend veränderte. L4M4R
L4M4R ist offline   Mit Zitat antworten
Alt 29-02-2004, 10:41   #15 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
grundsätlich falsch ist deines nicht, nur hast Du einige überflüssige Sachen in eine Funktion gepackt:
Bei Aufruf Deiner Funktion:
-erstellst Du jedesmal das loadVars-Objekt neu >>unnötig einmal erstellt, bleibt das Objekt ja bestehen
-richtest Du den onLoad-Handler wieder neu ein>>unnötig einmal eingerichtet wird er ja automatisch immer wieder ausgeführt wenn das loadVars-Objekt Daten bekommt

...ausserdem ist im php-script noch die eof-Variable, die ja nur benötigt wird, weil kryz die ganze Geschichte mit loadVariables aufgezogen hat.

Gruß

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois 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



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

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


Copyright ©1999 – 2012 Marc Thiele