Avatar billede kridley Nybegynder
10. december 2002 - 22:32 Der er 37 kommentarer og
1 løsning

PHP -> Flash

Problem:

Jeg forsøger at læse et count(*) af en tabel i MySql ind i flash. Variablen der indeholder tallet hedder $total.

Jeg har et dynamisk tekstfelt (der hedder 'total') i samme frame som min loadvariablesNum:

loadVariablesNum ("php/highscore.php", 0, "POST");

I debug står der :

Variable _level0.total = "$total".

Selv hvis jeg tester php scriptet i en browser fortæller den at &total er sat til den rigtige variabel.

Hvorfor kan jeg ikke skrive den variabel ud i flash?
Avatar billede mat Nybegynder
10. december 2002 - 22:40 #1
måske fordi at din variabel bliver læst ind efter tekstfeltet bliver assignet en variabel? prøv som forsøg at give dit tekstfelt navnet _root.total
Avatar billede kridley Nybegynder
10. december 2002 - 22:54 #2
Det hjalp desværre ikke.
Her er det simple php script
<?

include ('Include.inc');

mysql_connect($DBhost,$DBuser,$DBpass);
@mysql_select_db("$DBName");

$query = "SELECT COUNT(*) AS cnt FROM highscore";
$result = mysql_query($query);

$total = mysql_result($result,0,"cnt");

print "&total=$total";

?>
Avatar billede nikolajdu Nybegynder
10. december 2002 - 23:05 #3
Prøv at sætte et & indd efter total og _root foran.

print "&_root.total=$total&";
Avatar billede kridley Nybegynder
10. december 2002 - 23:10 #4
Det hjalp desværre heller ikke.

Når jeg peger min browser på php-scriptet får jeg:
&_root.total=2&
(2-tallet er godt nok, der er 2 rækker i tabellen i MySql)

Når jeg tester i Flash Player står der "total" i det dynamiske tekstfelt.

Når jeg tester min flash .swf igennem browseren (altså når den ligger på severen) står der slet intet.

hmmm...ved ikke om det hjælper
Avatar billede nikolajdu Nybegynder
10. december 2002 - 23:43 #5
Skriver du total i instance feltet eller var feltet???

Skriv det umiddelbart i var feltet og prøv så at angive hele stien til tekstfeltet. Altså _root.evetueltMovieCip.total
Avatar billede kridley Nybegynder
11. december 2002 - 00:00 #6
Jeg skriver _root.total i det dynamiske tekstsfelts "variable". (Flash 5, Text Options).

Hmm...
Avatar billede webdesigner Praktikant
11. december 2002 - 08:47 #7
øhhh har du loadet php filen ind i dein flash fil??
Avatar billede kridley Nybegynder
11. december 2002 - 10:34 #8
Webdesigner: Jeg foretager flg. kald til php-scriptet...

loadVariablesNum ("php/highscore.php", 0, "POST");
Avatar billede pyroman Nybegynder
11. december 2002 - 12:28 #9
Har du prøvet med:

loadVariables ("highscore.php");

/Filip
Avatar billede kridley Nybegynder
11. december 2002 - 12:50 #10
loadVariables tager 2 parametre. Men selvom jeg henviser den til mit dynamiske tekstfelt, får jeg stadig samme resultat som før. Den printer IKKE variable men navnet på variablen.
Avatar billede sup Nybegynder
12. december 2002 - 20:30 #11
Hey kridley.

Det ser rigtigt nok ud bortset fra en ting.

Du skriver -> print "&total=$total";

Men dit dynamisk tekstfelt hedder total og ikke &total.

Prøv at skriv print "total=$total";

Og et andet rigtig grineren ting det også kunne være. Hvis du ved en fejltagelse har kommet til at give teksten i dit dynamiske tekstfelt den samme farve som baggrundsfarven kan du ikke se resultatet, selvom det faktisk virker.

Sup.
Avatar billede kridley Nybegynder
12. december 2002 - 20:39 #12
Ja, det er rigtigt at jeg nu kalder den &total, men det var kun fordi jeg fik et råd fra en af de andre om at sådan kunne det gøres...hmmm...jeg retter tilbage til "total=$total";...

Ja det kan klart være griner sådan noget...men desværre. Det er somom jeg loader $total som en tekst og ikke som en variabel.
Avatar billede barklund Nybegynder
12. december 2002 - 20:41 #13
Når du eksekverer den lokalt er det klart, at der kommer til at stå '$total' i tekstfeltet, da PHP ikke bliver evalueret som PHP lokalt men kun på din server... Prøv at lave et stort debug-tekstfelt i din film (multiline, word-wrap, selectable, border/bg, variable=debug)), lav det til et movieclip med F8 og skriv følgende på dette:

onClipEvent(enterFrame) {
    debug = "";
    for (i in _root)
        debug += "_root."+i+" = "+_root[i];
}

Så kan du se alle variabler der eksisterer i _root hele tiden.. Og lad os tage den derfra...

/Barklund
Avatar billede barklund Nybegynder
12. december 2002 - 20:43 #14
Hov... Der skal selvfølgelig være et linieskift:

onClipEvent(enterFrame) {
    debug = "";
    for (i in _root)
        debug += "_root."+i+" = "+_root[i]+"\n";
}
Avatar billede barklund Nybegynder
12. december 2002 - 20:45 #15
Og det gør ingenting, at der står "&" foran... Flash parser teksten således (pseudo-kode):

var v, s, t, variables = incoming.split("&");
for (i in variables) {
    v = variables[i];
    s = substring(v,0,v.indexOf("="));
    t = substring(v,v.indexOf("=")+1);
    _root[s] = t;
}

/Barklund
Avatar billede sup Nybegynder
12. december 2002 - 21:00 #16
Du er sikker på at dit dynamiske tekstfelt er rigtigt. Du har ikke lavet et instance name vel? Der er et dynamic tekst felt med Var:total

Prøv eventuelt loadVariablesNum ("php/highscore.php", 0);

Sup.
Avatar billede sup Nybegynder
12. december 2002 - 21:05 #17
Hvis din php fil viser de rigtige antal poster er den ihvertfald god nok.
Det er flash filen det er galt med.

Sup.
Avatar billede sup Nybegynder
12. december 2002 - 21:07 #18
Jeg behøver selvfølgelig ikke fortælle dig at du skal huske at overskrive flash filen på serveren hver gang du har lavet en ændring. Heh.

Sup.
Avatar billede barklund Nybegynder
12. december 2002 - 21:07 #19
Det er flash 5 (ref Kommentar: kridley 11/12-2002 00:00:27)

Der findes ikke instance-name på tekstfelter... :o)
Avatar billede kridley Nybegynder
12. december 2002 - 21:07 #20
Barklund -

Hermed debug feltets output (Afviklet på serveren):

root.total 
root.version  WIN ,,,
root.instance  level.instance
root.highscore  level.highscore
root.category  level.category
root.menu  level.menu

Afviklet i flash player:

root.total  total";
?
root.?

include ('Include.inc');

mysqlconnect(DBhost,DBuser,DBpass);

mysqlselectdb("DBName");

query    "SELECT COUNT() AS cnt FROM highscore";

result  mysqlquery(query);

total  mysqlresult(result,,"cnt");

print "
root.version  WIN ,,,
root.instance  level.instance
root.highscore  level.highscore
root.category  level.category
root.menu  level.menu
Avatar billede kridley Nybegynder
12. december 2002 - 21:09 #21
Sup - ja det med at det er flashfilen er nok rigtigt..., ja jeg overskriver flashfilen hver gang. ;-)
Avatar billede barklund Nybegynder
12. december 2002 - 21:10 #22
Hvorfor er der ingen tal? Og hvor er lighedstegnene? Eller er det min browser, den er helt gal med?

_root.version kan aldrig være "WIN ,,," - den må indeholde tal... Og der bør være lighedstegn mellem variabel og værdi i fælge koden... Er font-outline inkluderet?
Avatar billede barklund Nybegynder
12. december 2002 - 21:12 #23
Du har glemt outline for alt andet end bogstaver... Det kan også være problemet for dit tekstfelt, der skal vise antallet af poster!!! Jeg er næsten 110% sikker på, at det er her, problemet ligger!
Avatar billede sup Nybegynder
12. december 2002 - 21:14 #24
Har du prøvet loadVariablesNum ("php/highscore.php", 0);

Sup.
Avatar billede kridley Nybegynder
12. december 2002 - 21:15 #25
Du er for vild...men det ved du sikkert allerede!! Kan du ikke lige uddybe. Det var løsningen!
Avatar billede barklund Nybegynder
12. december 2002 - 21:19 #26
Uddybe? Du havde valgt kun at have outline for almindelige bogstaver - du skulle bare vælge alle tegn eller ingenting (og playeren ville erstatte med en default font)...

Det var jo tydeligt at se i dit output, da koden sagde at der skulle stå "_root", men der kun stod "root" plus de øvrige nævnte ting - så var fejlen nem at finde :o)
Avatar billede barklund Nybegynder
12. december 2002 - 21:20 #27
Men som sup foreslår i sit sidste indlæg, så er det en rigtig god ide at fjerne POST, da php-scriptet overhovedet kan bruge samtlige variabler i din flash film (som er hvad der bliver sendt) til noget som helst...
Avatar billede kridley Nybegynder
12. december 2002 - 21:25 #28
Vi har kun et lille problem, og det er at du kun har skrevet kommentarer og skal skrive et svar for at få pointene.

Nu hvor jeg alligevel har dig, ved du så noget om at anvende XMLSockets sammen med PHP, og hvordan det forholder sig hvis man vil køre en socket server på en server der står hos et Hosting Firma? Jeg er villig til at give dig massere af point hvis vi kan maile lidt om det.
Avatar billede sup Nybegynder
12. december 2002 - 21:27 #29
Tror heller ikke man kan støde ind i det problem i den nye Flash.
Troede egentlig at den var forvirret over POST og over hvilken level variablerne skulle loades i. 0 ville betyde at loade variablerne i din main timeline.
Ik barklund. Ved ikke om flash 5 er helt på samme måde her.

Sup.
Avatar billede barklund Nybegynder
12. december 2002 - 21:28 #30
PHP kan lave sockets, men jeg har aldrig prøvet at sætte det op mod flash...

Jeg har flere gange leget (en ret alvorlig leg - se http://www.partymoto.com :o) med XMLSocket op mod en Java-server, men det kræver jo, at man kan køre en sådan applikation på serveren, og det får du garanteret ikke lov til af din host! :o)

Er det vigtigt for dig, at bruge en socket-connection? For ellers vil jeg bare foreslå en helt almindelig xml-interaktion, som vi bruger i mit firma (www.shockwaved.com) undtagen til meget store realtime multiplayer spil som partymoto eller tilsvarende...
Avatar billede barklund Nybegynder
12. december 2002 - 21:29 #31
Og et svar... :o)
Avatar billede kridley Nybegynder
12. december 2002 - 21:37 #32
Det du har givet mig nu klarer mig igennem hvad jeg skal kunne bruge, jeg skal sådan set bare lave et quizspil, et almindeligt chatroom til roskilde festviallens nye community site.

Lyder virkeligt interessant med java. Har selv en del erfaring med JSP/Java/Resin, men mest fra lidt mindre flash orienterede sammenhænge.

Mit problem er at de bliver hostet med et php/mysql site, og det kan der vist ikke laves om på.
Avatar billede kridley Nybegynder
12. december 2002 - 21:41 #33
Værsgod, og tak for hjælpen.
Avatar billede barklund Nybegynder
12. december 2002 - 21:42 #34
Til et simpelt quiz-spil vil jeg sige, at det er overkill med en socket.. Flash5 XML-objekt er lynhurtigt til at sende forespørgsler og parse svaret, så du kan bare bruge dette...

anvendt på: http://www.sundhedsduellen.dk - vurder selv hastigheden fra klik til svar :o)
Avatar billede kridley Nybegynder
12. december 2002 - 21:46 #35
Jeg havde mere noget i retning af et peer-peer hvor folk kunne udveksle video, billeder og så videre fra festivalen. Jeg kunne forstå at det var den funktionalitet sockets gav mig...nå men jeg holder mig til det simple.

Hvis jeg nu skulle rende ind i vanskeligheder igen, er det så okay, jeg dropper dig en mail, skal nok betale point for det?
Avatar billede barklund Nybegynder
12. december 2002 - 21:50 #36
Nope... Det er ikke p2p, men kun via en server.. . Flash kan ikke selv agere server men kun client, så dine to flashfilm på hver sin maskine kan hver agere klienter hos samme server og interagere via denne - men ikke direkte...

Og smid bare en mail nu og da på morten.barklund@shockwaved.com - det er ganske gratis...

Men hvis du stiller spm's herinde, så er du til gengæld garanteret hurtige svar, da der er mange andre end mig til at reagere... :o)
Avatar billede kridley Nybegynder
12. december 2002 - 21:54 #37
Cool. Tak for det!
Avatar billede barklund Nybegynder
12. december 2002 - 21:57 #38
Og tark for point...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Junior Projektkonsulent til program Digital og Operativ Transformation

Capgemini Danmark A/S

AI/Data Engineer

Politiets Efterretningstjeneste

Data engineer til PET

Forsvarsministeriets Materiel- og Indkøbsstyrelse

IT-supporter til Level 3 support på Forsvarets operative C2 systemer