Toon posts:

[Flash MX 2004] PHP variabelen met loadVars

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit met een probleem waar ik na 2 dagen fulltime proberen nog niet uit ben gekomen. Ik wil de waarde van een variabele uit PHP (een locatie van een plaatje) koppelen aan een waarde binnen mijn actionscript. Het wil me maar niet lukken, ondanks de vele goede voorbeelden die hier op GoT te vinden zijn. Ik heb het idee dat ik iets kleins fout doe, maar na het urenlange staren naar mijn code en het proberen van alternatieven zie ik het niet meer.

code imgedit.php:
code:
1
2
3
4
5
6
7
8
9
10
<?php

$path = $_REQUEST["imgpath"];
$file = $_REQUEST["imgfile"];
$img = ereg_replace("&","%26",$path.$file);
echo("&imgfile=$img&klaar=waar;");

...(hier staat de rest van de php code)...

?>


In mijn flash-movie heb ik 1 frame, met op het eerste frame een movieClip met daaraan gekoppeld het volgende actionscript:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
onClipEvent(load) {
  var loadPage = http://localhost/imgedit.php
  myVars = new LoadVars();
  myVars.onLoad = function (success) {
    if(success) {
      _global.imgfile = (myVars.imgfile);
      trace(_global.imgfile);
      _root.createTextField("textveld",10,10,10,80,30);
      _root.textveld.htmlText = _global.imgfile;
    }
  }
  myVars.load(loadPage);
}


Tijdens het testen is het volgende gebleken:
mijn trace geeft de waarde: $img
mijn textfield blijft leeg.

Wanneer ik in mijn phpcode

echo("&imgfile=$img&klaar=waar;");

vervang door

echo("&imgfile=locatie/plaatje.jpg&klaar=waar;");

geeft mijn trace de waarde: locatie/plaatje.jpg
en mijn textfield de waarde: locatie/plaatje.jpg

Op deze manier werkt het dus wel en kan ik de variabele imgfile in mijn flashmovie gebruiken. Het probleem is dat ik de string met daarin de locatie van het plaatje niet hard in code kan zetten omdat deze dynamisch wordt gegenereerd (zie code)

Hoe kan ik mijn $img doorgeven aan Flash zodat hij er iets mee kan? Is het zo dat Flash MX 2004 hier niet mee om weet te gaan? Moet ik het anders doen? Vergeet ik iets? Veel vragen voor op de late vrijdagmiddag, maar ik hoop ondertussen toch echt dat het aan mij ligt, en dat iemand hier dit probleem al lang getackled heeft....

[ Voor 5% gewijzigd door Verwijderd op 07-10-2005 19:02 ]


  • LB Back
  • Registratie: November 2004
  • Laatst online: 14-03 23:22
Verwijderd schreef op vrijdag 07 oktober 2005 @ 16:29:
code:
1
2
3
4
5
6
7
8
9
10
11
onClipEvent(load) {
  var loadPage = http://localhost/imgedit.php
  myVars = new LoadVars();
  myVars.onLoad = function (success) {
    if(success) {
      _global.imgfile = (myVars.imgfile);
      trace(_global.imgfile);
      _root.createTextField("textveld",10,10,10,80,30);
      _root.textveld.htmlText = _global.imgfile;
    }
}
Drie dingen die me aan je As opvallen:

1) een url is een string en moet quotes hebben (en een semicolon)
2) volgens mij mist er een }
3) ik zie nergens een myVars.load(loadPage);

Verwijderd

en als je doet
code:
1
echo("&imgfile=".$img."&klaar=waar;");

maakt dat verschil?

Verwijderd

Topicstarter
nope helaas...ik heb alle "echo" en "print" varianten geprobeerd en ook alle mogelijke manieren om vars in te laden in Flash. Ik heb hier wel ergens iets uit een reply meegekregen over headers en content-types, maar in alle gevonden voorbeelden komt dit weer helemaal niet terug. Ik weet ook niet wat ik daar nu mee moet doen...

  • LB Back
  • Registratie: November 2004
  • Laatst online: 14-03 23:22
Deze php code:
code:
1
2
3
4
5
6
<?php
$path = "locatie/";
$file = "plaatje.jpg";
$img = ereg_replace("&","%26",$path.$file);
print '&imgfile=' . $img;
?>

en dit AS:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
onClipEvent (load) {
    var loadPage = "http://localhost/imgedit.php";
    myVars = new LoadVars();
    myVars.load(loadPage);
    myVars.onLoad = function(success) {
        if (success) {
            _global.imgfile = (myVars.imgfile);
            trace(_global.imgfile);
            _root.createTextField("textveld", 10, 10, 10, 80, 30);
            _root.textveld.htmlText = _global.imgfile;
        }
    };
}

kan niet anders dan werken, heb ik echt vaak gebruikt.
edit:
Misschien stomme vraag maar draai je PHP lokaal?

[ Voor 14% gewijzigd door LB Back op 07-10-2005 18:32 ]


Verwijderd

Topicstarter
LB Back schreef op vrijdag 07 oktober 2005 @ 18:02:
[...]

Drie dingen die me aan je As opvallen:

1) een url is een string en moet quotes hebben (en een semicolon)
2) volgens mij mist er een }
3) ik zie nergens een myVars.load(loadPage);
1) bij het laden van een variabele met loadVars zijn de waarden die je terug krijgt toch altijd strings?
2) kan kloppen (heb de code met de hand overgetypt, stond op mijn andere werkstation)
3) kan kloppen (om dezelfde reden als hierboven) ;)

in mijn flashmovie staat dit natuurlijk wél goed....zal mijn topicstart even editen...

@LB Back:
jouw "print" variant ga ik proberenheb ik geprobeerd, maar helaas zonder succes....en ja: ik draai PHP lokaal. (zie "localhost" in AS). Kan ik voor de loadPage ook een relatieve URL opgeven? dus ipv http://localhost/imgedit.php gewoon imgedit.php? De swf staat in de dezelfde directory....

[ Voor 5% gewijzigd door Verwijderd op 07-10-2005 19:06 ]


  • LB Back
  • Registratie: November 2004
  • Laatst online: 14-03 23:22
Verwijderd schreef op vrijdag 07 oktober 2005 @ 19:00:
[...]


1) bij het laden van een variabele met loadVars zijn de waarden die je terug krijgt toch altijd strings?
ja maar de url heb je in je as staan, dat is ook een string: dus quotes
@LB Back:
jouw "print" variant ga ik proberenheb ik geprobeerd, maar helaas zonder succes....en ja: ik draai PHP lokaal. (zie "localhost" in AS). Kan ik voor de loadPage ook een relatieve URL opgeven? dus ipv http://localhost/imgedit.php gewoon imgedit.php? De swf staat in de dezelfde directory....
Dat weet ik niet maar hier op mijn webserver krijg ik toch echt de string in het textField

Verwijderd

Topicstarter
Ik zie het bij jou werken, maar ik weet het niet meer. |:( Ligt het aan de manier waarop mijn php versie met variabelen omgaat? mijn phpinfo() geeft me hier geen antwoord op....

zou je je fla en php bestand anders naar me willen mailen? Kijken wat er bij mij gebeurt als ik jouw code op mijn lokaal draaiende apache webservertje uitvoer....als het bij mij niet werkt weet ik in ieder geval dat het niet aan de as en php licht!

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 25-03 10:55

XangadiX

trepanatie is zóó kinderachtig

Verwijderd schreef op vrijdag 07 oktober 2005 @ 18:02:
en als je doet
code:
1
echo("&imgfile=".$img."&klaar=waar;");

maakt dat verschil?
sinds wanneer moeten er haken om echo commando's heen

code:
1
echo "&imgfile=".$img."&klaar=waar";


lijkt me afdoende ( de ; achter waar mag ook weg)

[ Voor 11% gewijzigd door XangadiX op 07-10-2005 22:21 ]

Stoer; Marduq


Verwijderd

XangadiX schreef op vrijdag 07 oktober 2005 @ 22:21:sinds wanneer moeten er haken om echo commando's heen
het hoeft niet, maar ik vind het altijd wel overzichtelijk.

Verwijderd

Topicstarter
owke...nou ik ben weer een stapje verder, en in ieder geval weer wat wijzer.... ik maak nu gebruik van de volgende php-code:

vars.php:
code:
1
2
3
4
$path = $_GET["imgpath"];
$file = $_GET["imgfile"];
$img = ereg_replace("&","%26",$path.$file);
print '&imgfile=' . $img;


de actionscript code is gelijk gebleven.
Dit werkt dus niet en ik denk dat ik weet waarom: wanneer ik in de actionscript myVars.load("vars.php") aanroep dan zijn de GET waarden imgpath en imgfile natuurlijk leeg. Vandaar dat mijn flash ook niet weet wat te doen, en het textfield leeg blijft. Wanneer ik in de bovenstaande phpcode $_GET["imgpath"] en $_GET["imgfile"] vervang door "locatieplaatje/" en "plaatje.jpg" dan werkt het dus wel.

het laden van variabelen lukt nu dus wel, maar het probleem is dat ik binnen mijn flash geen POST en GET waarden kan opvragen...(in ieder geval niet via de vars.PHP).

Waarom de GET waarden: Ik laat gebruikers op een thumbnail klikken. Hierna opent zich een nieuw venster (ook php-pagina) met daarin wat informatie over het plaatje en de flash movie waarmee het plaatje kan worden bewerkt (bijsnijden,kleurcorrectie e.d.) (locatie en naam van het plaatje wordt via GET aan dit nieuwe venster meegegeven). Het is voor de flash movie dus wel belangrijk dat de locatie en de naam van het plaatje bekend zijn.

Ik hoop dat het probleem (en de verschuiving ervan) een beetje duidelijk is. Het gaat nu dus om het opvragen van geposte (met GET of POST) variabelen die uit een ander venster komen....ik kan deze door php keurig laten echo'en, maar flash laadt de pagina met loadVars gewoon opnieuw en dan zijn de GET en POST waarden dus leeg....

Verwijderd

dan kan je de getvars toch gewoon aan flash meegeven, en dan
var loadPage = "http://localhost/imgedit.php?imgfile="+imgfile"+&imgpath="+imgpath;

Verwijderd

Topicstarter
Verwijderd schreef op zaterdag 08 oktober 2005 @ 17:16:
dan kan je de getvars toch gewoon aan flash meegeven, en dan
var loadPage = "http://localhost/imgedit.php?imgfile="+imgfile"+&imgpath="+imgpath;
Deze vlieger gaat natuurlijk niet op, omdat ik imgfile en imgpath (dikgedrukt) in mijn flashmovie niet weet. Daar gaat het namelijk om! Als ik die waarden eenmaal in mijn flashmovie weet dan is mijn probleem opgelost....

  • sanderb
  • Registratie: November 2000
  • Laatst online: 01:23
je kan de variables wel in je flash movie krijgen door bij de source van je swf deze erachter te zetten.

jouwding.swf?imgfile="imgfile"&imgpath="imgpath"

die kun je dan in flash gewoon gebruiken, de waarden zijn gewoon bekend op de root.
met die vars kun je dan weer alsnog in flash variables laden vanuit php waarbij je imgfile en imgpath post naar php..

" A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools. " - Douglas Noel Adams


Verwijderd

Topicstarter
en we hebben een winnaar! sanderb harstikke bedankt. Ik was weer eens moeilijker aan het denken dan uiteindelijk nodig was...in plaats van het laden van mijn locatie+plaatje met behulp van loadVars doe ik het nu op sander's manier. Dat ik daar zelf niet op gekomen ben! (maarja dat is natuurlijk vaak he.... ;)
Pagina: 1