Volledige versie bekijken : vraagje over LoadVars vs XML
latino
%Europe/Berlin %414 %2005, 10:57
Mensen,
Als je tutorial leest dan hoor je iederreen zeggen dat je beter via XML alles kan ophalen.
Dus: mysql ->php ->xml opmaak -> naar flash
Als dit zo is waarom bestaat er dan LoadVars??
Loadvars is veel makkelijker vind ik ook als je het in twee richtingen op wil doen :)
latino
%Europe/Berlin %576 %2005, 14:49
is ie zo moeilijk ;)
Roenes
%Europe/Berlin %589 %2005, 15:08
neej hoor, is nie zo moeilijk. :)
Ik zal er strax eens een verhaaltje over typen. Nu niet. Ben net voor de 2e keer wakker geworden vandaag. Dus je zult nog even op mijn reactie moeten wachten ;)
Roenes
%Europe/Berlin %627 %2005, 16:03
Kijk eens aan. Uurtje later en ik ben er weer ;) Tijd om te knallen:
Het grote voordeel van xml is dat je data gestructureerd is. Hierdoor is het dus makkelijker om door je data heen te lopen. En je weet ook precies op welke manier je het binnen krijgt. Maar xml is nog niet zo heel lang populair en daarom werd voorheen altijd externe data in een tekstbestandje gezet en deze werd opgehaald met LoadVars(). Nadeel hiervan was dat je een hele lange string kreeg met variabelen erin. Dit maakt het ten eerste niet leesbaar en ten tweede is het niet gestructureerd. Toch kan je deze manier nogsteeds gebruiken. Bv als je bepaalde instellingen van je flashsite wilt opslaan op je server. Dan schrijf je wat gegevens in een txt weg via LoadVars.
Xml wordt vaak gebruikt als je vaak dezelfde soort data hebt. Bv 10 namen + scores. Kun je in een txt doen maar dat is zoals gezegd niet leesbaar. Via xml wel. Hetzelfde is als je een gastenboek maakt. Je kunt al je gegevens opslaan in een txt maar das niet handig. XML is wederom overzichtelijker. Ook kun je veel makkelijker navigeren in flash door xml omdat deze uit nodes bestaat. Hierdoor krijg je een hierarchie. Dit is makkelijker als bv 100 vars met eigen waardes die totaal geen hierarchie hebben.
Nu terugkomend op je vraag. LoadVars bestaat dus omdat dit vroeger veel gebruikt werd icm txt bestandjes. Nu zie je steeds meer dat mensen overstappen op xml omdat xml gewoon veel voordelen heeft tov txt bestandjes. Aangezien flash een aparte XML-classe heeft haal je hier je data mee op. LoadVars wordt dan wat overbodig.
Jij zegt ook nog dat je LoadVars veel makkelijker vind als je data 2 kanten op wilt sturen. Dit vind ik raar. Met een xml object heb je ook send en load methodes net als de LoadVars classe. Dus wat dat betreft kun je hetzelfde resultaat behalen.
Ik hoop dat het een beetje duidelijk is wat ik wil aantonen :)
gbolssens
%Europe/Berlin %679 %2005, 17:18
Mensen,
Dus: mysql ->php ->xml opmaak -> naar flash
En waarom niet
mysql -> php -> naar flash
??
Als je geen 100 man tegelijk verwacht die je database gaan belasten kan dat best. XML lezen is sneller dan via php je database queryen (alhoewel dat ook in de range van enkele honderden milliseconden blijft hoor), maar elke keer als je data verandert moet je ook je XML file aanpassen middels PHP (mss kan dat wel met een cronjob ofzo, daweetikniezeker).
greetz,
GB
P.S.: Verfrissende ideën op dit vlak interesseren me eigenlijk wel dus spui maar, zou ik zo zeggen. Zo krijgt Latino ook zo veel mogelijk info in deze post.
P.S.2: Latino, op het serverside scripting forum (ik veronderstel dat dat nog wel bestaat na "da jump") vind je ook nuttige info over dit onderwerp en mensen die er dagelijks mee bezig zijn.
Roenes
%Europe/Berlin %729 %2005, 18:31
En waarom niet
mysql -> php -> naar flash
??
Waarom zou je in je php file je data niet opmaken als een xml. Anders krijg je al die onsamenhangende variabelen die binnenkomen in flash. En iedere keer als je data veranderd moet je die toch via je php script binnenhalen. Dus je kunt net zo goed een xml opmaak in dat script opnemen.
Of begrijp ik je opmerking verkeerd? :)
Dauntless
%Europe/Berlin %743 %2005, 18:50
maar elke keer als je data verandert moet je ook je XML file aanpassen middels PHP (mss kan dat wel met een cronjob ofzo, daweetikniezeker).
Zie ook de topic starter's post:
mysql ->php ->xml opmaak -> naar flash
Dus niet: mysql -> php -> xml file -> flash.
Je maakt immers geen xml file aan, je print hem alleen. Een voorbeeldje hier:
<?php
// database gegevens inladen
include "config.php";
// verbinding maken met database
$connection = mysql_connect($dbHost, $dbUser, $dbPass) or die ("kon geen verbinding maken met server. Fout: ".mysql_error());
// de juiste db nemen
mysql_select_db($dbName, $connection) or die ("Kon de db 'maps' niet selecteren. Fout: ".mysql_error());
$query = "SELECT name, link, authName FROM `maps`;";
$resultaat = mysql_query($query) or die ("Kon de data niet downloaden. Fout: ".mysql_error());
$xmlString = "<maps>";
while($record = mysql_fetch_object($resultaat)){
$xmlString .= "<map>";
$xmlString .= "<name>$record->name</name>";
$xmlString .= "<link>$record->link</link>";
$xmlString .= "<auth>$record->authName</auth>";
$xmlString .= "</map>";
}
$xmlString .= "</maps>";
print urlencode($xmlString);
?>
Je print gewoon xml, je maakt geen apparte xml file aan...
//Grr, dat krijg je er dus van als je die kader zo lang laat openstaan, en dan pas reageert.. :p
latino
%Europe/Berlin %830 %2005, 20:55
ok bedankt..dus de kans is dat LoadVars verdwijnt? Ik zal er dus toch aan moeten geloven?
Roenes
%Europe/Berlin %833 %2005, 21:00
Nou LoadVars zal nog niet snel verdwijnen hoor. En misschien ook wel helemaal niet. Ach, zolang set- en getProperty nog ondersteund worden zou ik me nergens zorgen over maken ;)
Dauntless
%Europe/Berlin %526 %2005, 13:38
tenslotte een php doc die je aanroept en geen xml of heb ik het fout?
Nee, je zit niet fout, maar het gaat gewoon! :)
var myXML:XML = new XML();
myXML.ignoreWhite = true;
myXML.onLoad = onLoadHandler;
myXML.load("myPHPPagina.php");
function onLoadHandler() {
//...
}
meagain
%Europe/Berlin %553 %2005, 14:16
Flash Remoting vind ik nog beter dan xml of loadvars (persoonlijke voorkeur!).
Heb wat ervaring met amfphp en vind dat als je het gewoon bent en je houdt je aan 'afspraken' wat betreft programma-structuren, je waarschijnlijk xml of loadvars links laat liggen.
Als je een flash-app wilt maken die zwaar op een db leunt, en je wilt gebruik gaan maken van grids ed, zou ik niet buiten amfphp willen.
Maar nog eens: persoonlijke voorkeur.... :p
latino
%Europe/Berlin %504 %2005, 13:07
wat is amfphp ?
Dauntless
%Europe/Berlin %535 %2005, 13:50
Een opensource project voor flash remoting met php :).
Zie www.amfphp.org ;)
De Kale
%Europe/Berlin %576 %2005, 14:50
ff kort over loadVars en xml, ik heb geen goede argumenten gehoord:
-of je nou je databasea uitleest en loadvars gebruikt met urlencoded name/value pairs of je poept er een xml file uit, je moet nog steeds je dataopmaak veranderen vanuit de database (met remoting overigens niet ;) )
- xml gebruikt meer bytes om over het net te knallen dan namevalue pairs.
- het argument over leesbaarheid is kolder, je hoeft je xml files niet te lezen, en ook niet je text files, je maakt een bestand dat uitgelezen wordt door een programma, maak je dat bestand en het uitlees protocol goed, dan hoef je nooit meer in je files te rommelen. dat een string met name value pairs niet gestructureerd is is ook niet waar, het is enkel een andere structuur.
- xml is niet heilig jongens, vergeet dat niet, maar het is een universele standaard geworden om data uitwisseling wat uniformer te maken, zodat verschillende programmas dmv xml (als standaard) dezelfde data kunnen gebruiken op dezelfde manier. DAAR ligt het grote voordeel van xml.
gebruik je een standalone flash movie, dan maakt het geen **** uit wat je gebruikt, maar zou ik persoonlijk zelf voor loadVars gaan omdat
a) je xml opmaak vanuit php een klein beetje moelijker is dan namevalue pairs
b) je bandwith kunt besparen
en c) persoonlijk: ik vind het loopen door xml nogal wat meer aarde in de voeten hebben aan de flash kant. eerst door je firstchild(rootnode), dan andere nodes, attributen etc etc.
ik gebruik dit soort dingen:
i=0;
while(this['id']+i != undefined){
trace('uit namevalue pairs: id'+i+': '+this['id'+i]);
++i;
}
zit wat mij betreft genoeg structuur in ;)
wat betreft loadVars makkelijker in twee richtingen: met php absoluut!!!!
- rauwe xml opvangen vanuit php betekent veel troubles, en als je bepaalde php server instellingen niet geod hebt (bij je provider) lukt het niet. Je moet de xml opvangen, dan parsen/uitlezen, dan interpreteren en dan pas acties onderneme.
met LoadVars stuur je GET/POST variables en dat is al zo oud als de eerste forms op het internet: een gestandaardiseerde manier om vars te versturen. Pik de variable op en onderneem je actie! makkelijker kan niet.
standaard manier om xml te versturen is er niet (jaja SOAP ed. maar dat is _net_ ietsje anders)
zie ook mijn tutorial voor makkelijke manier om met LoadVars te werken.
Don't get me wrong, I love xml, maar die discussies over 'wat is beter' met de die hard verdedigers in twee kamp[en maken me moe.... Gebruik wat jij lekker vindt, als het goed werkt en duidelijk is moet je gewoon lekker gebruiken wat goed voor jou voelt, of het nou remoting, xml, of loadVars is....
De Kale
%Europe/Berlin %582 %2005, 14:58
geen gezeik over jou dauntless, maar dit is dus ook onzin:
$resultaat = mysql_query($query) or die ("Kon de data niet downloaden. Fout: ".mysql_error());
dat is geen xml!!!! hoe vang je dat dan af aan de flashkant?
voor je error handling in dynamisch gegeneerde xml zul je dus ook een extra xml bouw process moeten maken....
Dit is een zoveel voorkomende fout: mensen gebruiken niet de goede error handling...
Ff voor de duidelijkheid: dit is geen tekortkoming van xml, maar een foute implementatie van data overdracht via xml in het php script
die() in een script moet met loadvars zo gebruiken:
die('&resultaat=0&boodschap='.urlencode('er is iets fout gegaan').'&');
en in xml zo:
die(generateXmlError('er is iets fout gegaan');//genereateXmlErroris een functie die je zelf hebt gemaakt om fouten af te vangen, flash moet van die error xml structuur apart op de hoogte zijn..
Ea.Z
%Europe/Berlin %586 %2005, 15:04
Offtopic// ik heb zelf al eens geprobeerd om flash remoting te gebruiken, en eerlijk gezegd vind ik het niet erg handig...
OnTopic// XML VS LoadVars
XML makkelijk in te laden in flash, met mooie hierarchie, kun je ook makkelijk loops mee genereren.
LoadVars is makkelijk als je maar enkele waarden wilt ontvangen, omdat je dan geen xml opmaak nodig hebt, die op dat moment ook wel volledig overbodig is, en alleen je bandbreedte voor deze enkele variablen zou verdubbelen...
ik gebruik xml om mijn menuitems te populaten, en LoadVars om post van flash naar serverside te sturen...
ik denk dat het uiteindelijk een kwestie is van hoe je zelf het liefst werkt...
edit: OffTopic// Roenes, ik vind die nieuwe sig van je overigen super ;)
Dauntless
%Europe/Berlin %590 %2005, 15:10
$resultaat = mysql_query($query) or die ("Kon de data niet downloaden. Fout: ".mysql_error());
Ik test m'n php files altijd buiten flash... Dan heb ik ook niet echt xml nodig daar...
Voor bv een mailform ga ik ook geen xml gebruiken hoor... Maar bv dit:
klik (http://www.dauntless.be/Projects/MarioWorld/Maps/test.xml) (Dit is nu ff een xml document, maar normaal wordt hij geprint met php).
Hoe ga je dát doen met loadVars? Lijkt me super onhandig! Ook bv een flash forum. Ga je dat ook allemaal met LoadVars doen? Je moet bv met LoadVars al elke keer gaan meesturen hoeveel topics je hebt, omdat flash het zelf niet kan vinden (tenzij je met een while != undefined doet, maar dat is eigenlijk ook wel verschrikkelijk omslachtig.).
En qua xml opvangen in php en zo: Wel, je schrijft 1malig een mooie classe die dat voor je doet, en dan heb je daar voor de rest ook geen last meer van...
Qua structuur:
&naam="jeroen"&&leeftijd="16"&&geslacht="m"&
of
<naam="jeroen leeftijd="16" geslacht="m">Jeroen</naam>
Dan vind ik dat tweede toch echt gestructureerder. En vóór je die mooie afhandeling hebt van de data moet je wél zelf je LoadVars object gaan doorspitten/lezen zodat je weet wat je nu tot je beschikking hebt en wat niet. Bij xml kan je dan eenvoudig ff de firstChild.childNodes doorlopen, kijken wat hun naam is en dan weet je dat. Bij LoadVars moet je echt gaan kijken naar je txt output, want 'k denk niet dat dat zo simpel gaat gaan rechtstreeks via flash.
De Kale
%Europe/Berlin %668 %2005, 17:03
Ik test m'n php files altijd buiten flash... Dan heb ik ook niet echt xml nodig daar...
ja, maar flash moet het inlezen... op het moment dat jij het goed getest hebt en het werkt, en dan knalt door een fout vanje provider je database eruit... dan moet er IN flash een verwittiging naar de gebruiker komen dat er iets mis is... dan kan jij het wel goed getest hebben,maar nogmaals: het PROGRAMMA moet met de data werken...
Voor bv een mailform ga ik ook geen xml gebruiken hoor... Maar bv dit:
klik (http://www.dauntless.be/Projects/MarioWorld/Maps/test.xml) (Dit is nu ff een xml document, maar normaal wordt hij geprint met php).
Hoe ga je dát doen met loadVars? Lijkt me super onhandig!
dat is totaal geen moeite... ik heb al vaker meerdimensionale data structuren met loadvars doorgepassed, in het voorbeeld van jou: &t1_1=0&t1_2=0 etc etc.... erg simpel
Ook bv een flash forum. Ga je dat ook allemaal met LoadVars doen? Je moet bv met LoadVars al elke keer gaan meesturen hoeveel topics je hebt, omdat flash het zelf niet kan vinden (tenzij je met een while != undefined doet, maar dat is eigenlijk ook wel verschrikkelijk omslachtig.).
dat is niets anders dan een for(var in in childnodes) loop, alleen dan met while loop...
En qua xml opvangen in php en zo: Wel, je schrijft 1malig een mooie classe die dat voor je doet, en dan heb je daar voor de rest ook geen last meer van...
absoluut mee eens, maar alsnog te moelijk voor velen en moelijker dan het opvangen van post/get vars ;)
Qua structuur:
&naam="jeroen"&&leeftijd="16"&&geslacht="m"&
of
<naam="jeroen leeftijd="16" geslacht="m">Jeroen</naam>
Dan vind ik dat tweede toch echt gestructureerder. En vóór je die mooie afhandeling hebt van de data moet je wél zelf je LoadVars object gaan doorspitten/lezen zodat je weet wat je nu tot je beschikking hebt en wat niet. Bij xml kan je dan eenvoudig ff de firstChild.childNodes doorlopen, kijken wat hun naam is en dan weet je dat. Bij LoadVars moet je echt gaan kijken naar je txt output, want 'k denk niet dat dat zo simpel gaat gaan rechtstreeks via flash.
daar ben ik het dus niet met je eens, dat is persoonlijke voorkeur, nogmaals: het is een andere structuur, maar wel de
gelijk een structuur, zonder structuur was dataverkeer niet eens mogelijk...
daarbij, je moet je xml ook doorspitten...
let it go... het is persoonlijke voorkeur, beide methodes kun je gebruiken, we hoeven geen gelijk te krijgen, het is nu gewoon eenmaal een feit dat je zowel met de tram als met de auto ergens kunt komen (en ga nou niet lullen over lada's en ferrari's ;) )
Ik heb beide methoden vaak genoeg gebruikt, mijn voorkeur ligt bij loadVars, omdat ik er sneller mee werk, maar xml is net zo easy.
als er meerdere progs met de data moeten werken: ga voor xml.
maakt het niet uit: doe wat je wilt ;)
Dauntless
%Europe/Berlin %673 %2005, 17:09
let it go... het is persoonlijke voorkeur, beide methodes kun je gebruiken, we hoeven geen gelijk te krijgen, het is nu gewoon eenmaal een feit dat je zowel met de tram als met de auto ergens kunt komen (en ga nou niet lullen over lada's en ferrari's ;) )
Hehe, groot gelijk ! :)
Nog 1 snel vraagje. Stel: je geeft een type aan elk item uit de 2d array, ga je dat dan zo doen:
$t_1_1_type="water" ?
De Kale
%Europe/Berlin %674 %2005, 17:11
ik gebruik xml om mijn menuitems te populaten, en LoadVars om post van flash naar serverside te sturen...
ik denk dat het uiteindelijk een kwestie is van hoe je zelf het liefst werkt...
kijk, dat vind ik goed omdat je duidelijk doorhebt dat de techniek een MIDDEL is en geen DOEL!! :D
let wel dat met 2 verschillende data uitwisselings technieken binnen 1 file je logica er niet duidelijker op wordt
De Kale
%Europe/Berlin %676 %2005, 17:14
Hehe, groot gelijk ! :)
Nog 1 snel vraagje. Stel: je geeft een type aan elk item uit de 2d array, ga je dat dan zo doen:
$t_1_1_type="water" ?
nee, dan zou ik ook een structuur meegeven die een 'lookup' array wordt
var la = new Array('water','lucht');
var myType = la[0];//water
of gewoon een nummer, het model heeft verder geen interesse in de benaming van de types, maar wel in de types zelf, en dan is een nummer duidelijker/korter/sneller/minder bytes
Roenes
%Europe/Berlin %677 %2005, 17:16
edit: OffTopic// Roenes, ik vind die nieuwe sig van je overigen super ;)Dank je :D
Maar nog even over LoadVars: als je bv een top 10 maakt met naam en score en evt extra vars, hoe doe je dat dan? Je maakt zo'n lange string, dat snap ik. Dan in flash kun je het doorlopen met een lusje, maar blijven de vars op dezelfde volgorde staan (volgens mij wel)? En hoe maak je dit voorbeeldje bv op want per iteratie van je lus heb je maar 1 var ter beschikkeing? Ik zie zo snel niet hoe je dat moet doen...
Zelf vind ik in dit soort gevallen xml fijner, maar zoals je al aangaf is dit geen discussie die iemand moet winnen. :) Toch zou ik het fijn vinden om even een klein voorbeeldje te zien van bovengenoemde om wat dit betreft een helder beeld te krijgen van het gebruik van LoadVars voor zoiets. Het is altijd handig als je meer dan 1 weg naar Rome kent natuurlijk ;)
//Edit
Misschien een leuk idee om deze topic naar ASSC te verplaatsen aangezien dat ook de plaats is voor AS discussies. Ook blijft de topic beter bewaart omdat ASSC minder druk bezocht wordt als AS forum :)
latino
%Europe/Berlin %680 %2005, 17:19
ik heb net wat fotos ingeladen met xml...maar met loadvars zou ik zo klaar zijn geweest, maar ik wilde wat leren...als ik naar php wil gebruik ik lekker LoadVars dmv POST enzo...veel makkelijker en sneller
De Kale
%Europe/Berlin %682 %2005, 17:22
print '&r=1&m=data opvragen is gelukt&n1=rolf&n2=roenes&h1=php&h2=flash&
in flash:
var i=1;
while(this['n'+i] != undefined){
var hobby = this['h'+i];
var name = this['n'+i];
++i;
trace('de hobby van '+name+' is '+hobby);
}
Dauntless
%Europe/Berlin %683 %2005, 17:23
kijk, dat vind ik goed omdat je duidelijk doorhebt dat de techniek een MIDDEL is en geen DOEL!! :D
Ik doe meestal iets van:
myXML.load("mijnPhp?var=item");
Roenes
%Europe/Berlin %683 %2005, 17:24
Tuurlijk! Dat had ik ook moeten zien.. :)
Toch dank voor je voorbeeldje! :)
Ben
%Europe/Berlin %855 %2005, 21:32
Ik zie dat de discussie xml wel/niet lekker bezig is hier :)
Ik vind voor alles wat te zeggen, maar heeft iemand rekening gehouden met performance? Voor zover ik weet (niet zelf getest) is het doorlopen van xml sneller dan het werken/doorlopen/bewerken van strings in flash. Dus heeft iemand rekening gehouden met het feit dat de grotere xml in kb's (rekening gehouden met gzip compressie) en het parsen daarvan bij elkaar sneller kan zijn dan de kleinere strings en het parsen daarvan?
If so, lijkt het wat mij betreft een makkelijke keus :D. Ben benieuwd of iemand hier wat benches van heeft. Handig om te weten nl.
Ea.Z
%Europe/Berlin %930 %2005, 23:20
tiens, ik werk nu al 3-4 maand met XML, op mijn huidige homesite draait alles nog met loadVariables(erg he? :p) en kzie nie direct een verschil met veel data of weinig data.... maar wel handig dat je ons hiervan inlicht. thx :D
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.