Zurück   Flashforum > Flash und Server > Flash Remoting

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-03-2006, 15:26   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 106
ColdFusion Query an Flash senden

Hallo,
ich hab mir eine CF geschrieben, die eine Datenbankabfrage per Result an Flash übergibt.
PHP-Code:
<cfcomponent>
    <
cffunction name="team" access="remote" returntype="any">
        <
cfargument name="nix" type="string" required="false">
        <
cfquery datasource="meinDSN" name="teams">SELECT FROM team ORDER BY rang ASC</cfquery>
        <
cfset result=#teams#>
        
<cfreturn result>
    </
cffunction>
</
cfcomponent
Flashseitig sieht das so aus:
PHP-Code:
import mx.remoting.*;
import mx.remoting.debug.*;
var 
cfcGatewayString "http://localhost/flashservices/gateway";
var 
cfcGateway NetServices.createGatewayConnection(cfcGatewayString);
var 
cfcService cfcGateway.getService("cfc.team"this);
function 
team_Result(result){
    
this.teams result;
}
function 
team_Status(status){
    
this.teams status.description;
}
cfcService.team(); 
Wobei this.teams die Variable des dyn. Textfeldes darstellt.
Wenn ich nun den Film teste bekomme ich als Ausgabe im Textfeld
[object Object].
Habe es bereits mit result.teams versucht, da das Query in CF ja teams heisst, dann erhalte ich leider nur "undefined" als Ausgabe.
Need help....
Slashwalker ist offline   Mit Zitat antworten
Alt 02-03-2006, 16:56   #2 (permalink)
Neuer User
 
Registriert seit: Apr 2005
Beiträge: 47
@Slashwalker

... ich habe hier im Forum ein ähnliches Problem gehabt, allerdings mit amfphp und Flash.

Da kam dann von "mo" ein toller Hinweis:

PHP-Code:
this.teams.getItemAt(i
i steht in dem Fall für die Position des Zeigers.

Vielleicht ist es in deinem Fall ähnlich?!
Habe leider keine Erfahrungen mit CF. Braucht man um mit CF Dateien zu arbeiten eigentlich zwingend einen CF Server auf dem Host?

Mfg
crashT
crashT ist offline   Mit Zitat antworten
Alt 02-03-2006, 17:19   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 106
@chrashT
werde das morgen mal testen, hab hier grad kein Flash zur Hand.
Um CF Dateien zu testen brauch man auf jeden Fall einen CF Server. Die Developer Version kann man gratis bei macrobe laden.Es gibt aber auch alternativen, die aber nicht alle Tags verarbeiten können. BlueDragon z.B.

Geändert von Slashwalker (02-03-2006 um 17:20 Uhr)
Slashwalker ist offline   Mit Zitat antworten
Alt 02-03-2006, 18:39   #4 (permalink)
Neuer User
 
Registriert seit: Apr 2005
Beiträge: 47
Danke für deine Antwort, brauche mich also nicht weiter mit CF beschäftigen da mein Hoster keinen CF Server hat bzw. es nicht unterstützt.

Viel Spaß beim testen, ich hoffe es hilft dir?!
crashT ist offline   Mit Zitat antworten
Alt 02-03-2006, 22:03   #5 (permalink)
Supermassive
 
Benutzerbild von elysian
 
Registriert seit: Aug 2004
Ort: Frankfurt, Bornheim
Beiträge: 861
PHP-Code:
import mx.remoting.*;
import mx.remoting.debug.*;
var 
cfcGatewayString "http://localhost/flashservices/gateway";
var 
cfcGateway NetServices.createGatewayConnection(cfcGatewayString);
var 
cfcService cfcGateway.getService("cfc.team"this);
function 
team_Result(result){
    
this.teams result// breakpoint!!
}
function 
team_Status(status){
    
this.teams status.description;
}
cfcService.team(); 
xervus

mach dir mal in die oben markierte zeile einen breakpoint und starte den film mit debugger. du kannst dir zum zeitpunkt des breakpoints ansehen, wie das result-set von coldfusion in flash ankommt und wie du auf die enthaltenen informationen zugreifen musst.

greetz, elysian.

p.s. für's produktivsystem denke daran, den netdebug-import wieder raus zu schmeissen...
__________________
Personal » amenity*blogging » elysian.de » Flexpertise - Enterprise Flex Collaboration
Networks » Xing » ColdFusion Community
Everything Cairngorm »
cairngormdocs.org
elysian ist offline   Mit Zitat antworten
Alt 03-03-2006, 07:30   #6 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 106
Danke elysian. So funktionierts:
PHP-Code:
import mx.remoting.*; 
import mx.remoting.debug.*; 
var 
cfcGatewayString "http://localhost/flashservices/gateway"
var 
cfcGateway NetServices.createGatewayConnection(cfcGatewayString); 
var 
cfcService cfcGateway.getService("cfc.team"this); 
function 
team_Result(result){ 
    
this.teams result.items[i].name

function 
team_Status(status){ 
    
this.teams status.description

cfcService.team(); 
Wobei name nicht, wie bei XML den Nodename ausgibt. name ist der Spalten name aus der MySQL DB. Wenn ich also die Spalte id ausgeben möchte:
result.items[i].id;

Geändert von Slashwalker (03-03-2006 um 07:37 Uhr)
Slashwalker ist offline   Mit Zitat antworten
Alt 03-03-2006, 21:11   #7 (permalink)
Supermassive
 
Benutzerbild von elysian
 
Registriert seit: Aug 2004
Ort: Frankfurt, Bornheim
Beiträge: 861
PHP-Code:
function team_Result(result){ 
    
this.teams result.items[i].name// <------- ?

...und wo kommt hier dein i her? schleife vergessen!?

greetz, elysian.
__________________
Personal » amenity*blogging » elysian.de » Flexpertise - Enterprise Flex Collaboration
Networks » Xing » ColdFusion Community
Everything Cairngorm »
cairngormdocs.org
elysian ist offline   Mit Zitat antworten
Alt 06-03-2006, 08:19   #8 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 106
Moin elysian. Sorry für die verwirrende Schreibweise, ich habe [i] nur Symbolisch gemeint. Bisher funktioniert die for Schleife nicht wie gewünscht.

PHP-Code:
function team_Result(result){
    for(
i=0;i==result.items.length;i++)
        
this.teams=result.items[i].name;
            } 
Bringt keine Ausgabe.

PHP-Code:
function team_Result(result){
    for(
i=0;i==result.items.length;i++){
             
trace(i);
        
this.teams=result.items[i].name;}
            } 
Bringt eine Ausgabe, aber leider nur den letzten Row.
Wie krieg ich Flash dazu, alle Rows auszugeben???
Und vor allem, warum funktioniert die for Schleife nur, wenn ich trace???
Slashwalker ist offline   Mit Zitat antworten
Alt 06-03-2006, 09:08   #9 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 106
Hab es gerade wie folgt probiert:
PHP-Code:
function team_Result(result){
    for(
i=0;i==result.items.length;i++);
    
teamlist= new Array();
    
teamlist[i]= result.items[i].name+"\n"+result.items[i].rang;
        
this.teams=teamlist;
            } 
Wieder nur der letzte Row!
Slashwalker ist offline   Mit Zitat antworten
Alt 06-03-2006, 09:47   #10 (permalink)
Supermassive
 
Benutzerbild von elysian
 
Registriert seit: Aug 2004
Ort: Frankfurt, Bornheim
Beiträge: 861
in etwa so...
PHP-Code:
function team_Result(result){
 for(
i=0i<result.items.lengthi++){
   
trace('result.items[' ']: '+result.items[i]);
 }

achte auf deine syntax - schleifen werden auch mit {} geklammert, wenn sie mehr als eine anweisung enthalten!

greetz, elysian.
__________________
Personal » amenity*blogging » elysian.de » Flexpertise - Enterprise Flex Collaboration
Networks » Xing » ColdFusion Community
Everything Cairngorm »
cairngormdocs.org
elysian ist offline   Mit Zitat antworten
Alt 06-03-2006, 12:40   #11 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 106
Hi elysian. Hab deinen Code gerade probiert
PHP-Code:
function team_Result(result){
    for(
i=0i<result.items.lengthi++){ 
   
trace('result.items[' ']: '+result.items[i].name
 } 
  } 
Der liefert im Ausgabe Fenster von Flash folgende Meldung:
result.items[0]: Test2
result.items[1]: Test

Aber wenn ich das dann an das dyn. Textfeld übergebe, kommt nur Test, also items[1].
PHP-Code:
function team_Result(result){
    for(
i=0i<result.items.lengthi++){ 
   
teams=result.items[i].name
 } 
  } 

Geändert von Slashwalker (06-03-2006 um 12:46 Uhr)
Slashwalker ist offline   Mit Zitat antworten
Alt 06-03-2006, 13:38   #12 (permalink)
Supermassive
 
Benutzerbild von elysian
 
Registriert seit: Aug 2004
Ort: Frankfurt, Bornheim
Beiträge: 861
Zitat:
Zitat von Slashwalker
[/PHP]
Der liefert im Ausgabe Fenster von Flash folgende Meldung:
result.items[0]: Test2
result.items[1]: Test

Aber wenn ich das dann an das dyn. Textfeld übergebe, kommt nur Test, also items[1].
naja, ist ja doch auch logisch... du weist dem textfeld in jedem schleifendurchlauf einen neuen wert (i, i+1, i+2, ...) zu und am ende steht der letzte drin. mein code sollte ja auch nur verdeutlichen, wie du die elemente des resultset durchlaufen kannst....

was willst du denn am ende erreichen?

greetz, elysian.
__________________
Personal » amenity*blogging » elysian.de » Flexpertise - Enterprise Flex Collaboration
Networks » Xing » ColdFusion Community
Everything Cairngorm »
cairngormdocs.org

Geändert von elysian (06-03-2006 um 13:39 Uhr)
elysian ist offline   Mit Zitat antworten
Alt 06-03-2006, 13:47   #13 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 106
Ziel ist es, das in dem Textfeld alle Rows angezeigt werden.Also so:


Test2
Test

Das Hauptproblem ist halt, das ich im voraus nicht weiss, wie viele Rows es später mal sein werden, deshalb wollte ich es über die for Schleife probieren.
Slashwalker ist offline   Mit Zitat antworten
Alt 06-03-2006, 14:17   #14 (permalink)
Supermassive
 
Benutzerbild von elysian
 
Registriert seit: Aug 2004
Ort: Frankfurt, Bornheim
Beiträge: 861
okay, textfelder sind dur zur anzeige von strings da. du kannst später also nicht mehr feststellen, welche einträge in den string geflossen sind - das ist tatsächlich nur text.

wenn das so sein soll, musst du in der schleife aus den results einen string zusammenbauen und diesen NACH der schleife dem textfeld zuweisen....

greetz, elysian.
__________________
Personal » amenity*blogging » elysian.de » Flexpertise - Enterprise Flex Collaboration
Networks » Xing » ColdFusion Community
Everything Cairngorm »
cairngormdocs.org
elysian ist offline   Mit Zitat antworten
Alt 06-03-2006, 14:45   #15 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 106
Ich geb auf!
Hab es gerade noch einmal probiert:
PHP-Code:
function team_Result(result){
    for(
i=0i<result.items.lengthi++){ 
    
teamlist= new Array();
    
teamlist[i]=result.items[i].name;
 }
teams=teamlist.toString(); 
  } 
Ausgabe im Textfeld:
undefined,Test

Ich mach es jetzt auf die "unsaubere Art". Vom Query über XML nach Flash. Dann kann ich mit den einzelnen Nodes arbeiten.

Geändert von Slashwalker (06-03-2006 um 15:01 Uhr)
Slashwalker 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 03:06 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele