PDA

Volledige versie bekijken : PHP/LoadVars vraagje


maccable
%Europe/Berlin %634 %2005, 16:13
Hai,

Ik heb een php script als volgt:

<?
mysql_connect("localhost","user","pass");
mysql_select_db("db");

$query = mysql_query("SELECT * FROM news");

$i=0;

while ($row=mysql_fetch_array($query)){
$i++;
$vartxt[$i] ="$row[kop] $row[newstext]";
echo "&vartxt[$i]=".$vartxt[$i];
}

?>

Dus bij elk result die uit de database komt wordt er opgeteld bij de variabele $vartext.

Nu wil ik deze dus in flash binnenhalen m.b.v. LoadVars.
Ik heb dit script:

my_lv = new LoadVars();
my_lv.load("http://192.9.100.113:9000/listboxtest/script.php");
my_lv.onLoad = function (success) {
if (success) {
tekstveld.htmlText=my_lv.vartext;
} else {
tekstveld.htmlText="Error loading data";
}
}

Nu werkt dit natuurlijk als ik 1 variabele op wil halen en in een textveld wil zetten...
Nu wil ik voor elk variabele ($vartext[1],$vartext[2] etc.) een nieuw textveld aangemaakt hebben onder elkaar.

Hoe moet ik verder?

Dauntless
%Europe/Berlin %696 %2005, 17:42
Je kan in flash een for loop zetten, maar dan moet je ook al mee geen printen (in php) hoeveel items er zijn.

Daarom: Gebruik XML! :). Print je data in php in de vorm van een xml . In flash kan je die gewoon laden met myXMLObject.load("mijnPHP.php");

Op die manier kan je heel gemakkelijk gestructureerde data binnen halen.

(En je kan [*PHP] en [*AS] tags gebruiken om rond je code te zetten :)).

maccable
%Europe/Berlin %365 %2005, 09:46
ok ik heb nu dus dit in php:
<?
mysql_connect("localhost","root","");
mysql_select_db("db");

$query = mysql_query("SELECT * FROM news");

$news .= "<news>";

while ($row=mysql_fetch_object($query)){
$news .= "<news>";
$news .= "<kop>".$row>kop."</kop>";
$news .= "<newstext>".$row>newstext."</newstext>";
$news .= "</news>";
}

$news .= "</news>";

echo $news;
?>

en dit in flash:
var xml = "script.php";
news = new XML();
news.ignoreWhite = true;
news.load(xml);
news.onLoad = function(){
var root,kop,newstext
root = this.firstChild;
if( root.hasChildNodes() ) {
for( var i = 0; i < root.childNodes.length; i++){
kop = root.childNodes[i].attributes.kop;
newstext = root.childNodes[i].attributes.newstext;
trace(kop);
}
}
trace(root.childNodes.length);
}

Maar in flash krijg ik dus:
undefined
undefined
undefined
3

Ik heb ook 3 records in de db staan....

Wat doe ik fout?

Dauntless
%Europe/Berlin %372 %2005, 09:56
In php:


while ($row=mysql_fetch_object($query)){
$news .= "<news>";
$news .= "<kop>".$row>kop."</kop>";
$news .= "<newstext>".$row>newstext."</newstext>";
$news .= "</news>";
}

Moeten die '>' geen '->' worden? (Of is dat misschien php 5 of zo?).

In AS:

news.onLoad = function(){
var root,kop,newstext
root = this.firstChild;
if( root.hasChildNodes() ) {
for( var i = 0; i < root.childNodes.length; i++){
kop = root.childNodes[i].attributes.kop; //atributes?
newstext = root.childNodes[i].attributes.newstext;
trace(kop);
}
}
trace(root.childNodes.length);
}

Je print je xml niet in de vorm van node argumenten... Eerder iets van: rood.childNodes[i].firstChild.nodeValue;

maccable
%Europe/Berlin %377 %2005, 10:03
Php heb ik veranderd in -> was ik vergeten ja.

In as heb ik nu dit:
var xml = "script.php";
news = new XML();
news.ignoreWhite = true;
news.load(xml);
news.onLoad = function(){
var root,kop,newstext
root = this.firstChild;
if( root.hasChildNodes() ) {
for( var i = 0; i < root.childNodes.length; i++){
kop = root.childNodes[i].firstChild.nodeValue.kop;
newstext = root.childNodes[i].firstChild.nodeValue.newstext;
trace(kop);
}
}
trace(root.childNodes.length);
}

Is dit ongeveer wat je bedoelde? Want ik krijg nog steeds undefined...

Dauntless
%Europe/Berlin %384 %2005, 10:13
news.onLoad = function() {
var root, kop, newstext;
root = this.firstChild;
if (root.hasChildNodes()) {
for (var i = 0; i<root.childNodes.length; i++) {
kop = root.childNodes[i].firstChild.firstChild;
newstext = root.childNodes[i].firstChild.firstChild;
trace(kop);
}
}
trace(root.childNodes.length);
};

maccable
%Europe/Berlin %390 %2005, 10:21
Sorry als ik vervelend ben en teveel vraag maar...

Hij klopt nu...maar al ik newstext trace dan heeft deze dezelfde waarde als kop. :(

Dauntless
%Europe/Berlin %399 %2005, 10:34
Mijn fout :)
news.onLoad = function() {
var root, kop, newstext;
root = this.firstChild;
if (root.hasChildNodes()) {
for (var i = 0; i<root.childNodes.length; i++) {
kop = root.childNodes[i].firstChild.firstChild;
newstext = root.childNodes[i].childNodes[1].firstChild;
trace(kop);
}
}
trace(root.childNodes.length);
};

maccable
%Europe/Berlin %401 %2005, 10:37
Ok dan...Top man. Heel erg bedankt...
Als ik weer wat vragen heb dan kom ik zeker bij je terug ;)

Roenes
%Europe/Berlin %431 %2005, 11:21
Op aanvraag van Dauntless heb ik je volgende vraag afgesplitst naar een topic in het AS forum.

Die topic is HIER (http://flashfocus.nl/forum/showthread.php?t=2250) te vinden :)