Problem mit Variablenübergabe aus PHP

Rollo

Erfahrenes Mitglied
Hallo liebe Tutorials Freunde,
Ich versuche nun schon seit einigen Tagen Variablen aus PHP in ein dynamisches Textfel in Flash zu laden. Die Inhalte der Veriablen kommen aus einer Mysql Datenbank.

Hier mein PHP Code
PHP:
<?php
include 'mysql.php';
@mysql_connect($HOST, $USER, $PASS) OR die();
mysql_select_db($DB) OR die();

$sql = "SELECT
							*
				FROM
							news
				ORDER BY
							ID DESC";
$result = mysql_query($sql) OR die();

$zeilen = mysql_num_rows($result);
echo "&zahl=".$zeilen."&";

while($row = mysql_fetch_assoc($result)){
	$variable = $row['News'];
	echo "&variable=".$variable."&";
	echo "&test=bla&";
}
?>

und mein Actionscript
PHP:
varladen = new LoadVars();
varladen.load("f_news.php");
varladen.onLoad = function(laden) {
	if (laden) {
		_root.zahl.text = this.zahl;
		_root.news.text = this.variable;
		_root.test.text = this.test;
		trace(this.zahl);
		trace(this.variable);
		trace(this.test);
	}
}

Mit der Variable test funktioniert es auch. Da erhalte ich, wie in der PHP Datei defeniert "bla". Bei den anderen beiden Variablen erhalte ich für zahl ".$zeilen." das und für variable ".$variable." das, obwohl ich in PHP defeniert habe das die Variable $variable = $row['News'] sein soll.

Ich komm nicht weiter. Ich habe auch schon Google befragt, doch auch da erhalte ich bei Vorschlägen wie es funktionieren könnte immer wieder den selben Fehler.

Für Hilfe bedanke ich mich im Voraus.
 
Zuletzt bearbeitet:
Ok wenn ich es mir im Browser ausgeben lasse stehen die Inhalte für die Variablen da.

und zwar:
&zahl=1&&variable=Das ist ein Testeintrag. Mal schauen ob es in Flash funktioniert. Wäre ja ein Traum.&&test=bla&
 
und was wird nun in Flash angezeigt?

Der einzige gravierende Fehler, den ich aus dem Quelltext ersehen kann, ist, dass Du hier:
PHP:
while($row = mysql_fetch_assoc($result)){
eine Schleife einsetzt, die u.U. mehrmals durchlaufen wird, aber jedes Mal die Variable mit dem Namen "variable" ausgeben lässt: Dadurch wird der Wert ggf. immer überschrieben.

Gruß
.
 
Ja, jetzt funktioniert es. Aber was mache ich dann wenn ich mehrere Einträge aus der Datenbank anzeigen lassen möchte?

Mein derzeitiger PHP Code:
PHP:
<?php
include 'mysql.php';
@mysql_connect($HOST, $USER, $PASS) OR die();
mysql_select_db($DB) OR die();

$sql = "SELECT
							*
				FROM
							news
				ORDER BY
							ID DESC";
$result = mysql_query($sql) OR die();
$row = mysql_fetch_array($result);

$zeilen = mysql_num_rows($result);
echo "&zahl=".$zeilen."&";

	$variable = $row['News'];
	echo "&variable=".$variable."&";
	echo "&test=bla&";
?>

Ich danke dir für die Hilfe!
 
Hi,

Du könntest die Variablenbezeichner mit einem Counter hochzählen:
PHP:
$c = 0;
while ($row = mysql_fetch_accoc($result)) {
    $c ++;
    echo '&variable'.$c.'='.$row['id'];
}
Ausgabe hier z.B.:
Code:
&variable1=1&variable2=2&variable3=3
In Flash müsstest Du Dich dann an die Anzahl der Einträge herantasten:
Code:
lv.onLoad = function() {
    var c = 0;
    var variable = new Array();
    do {
        if (this["variable" + c] != undefined) {
            variable.push(this["variable" + c]);
            c ++;
        }
    } while (this["variable" + c] != undefined)
}

Einfacher wäre bei einer flexiblen Anzahl Einträge das XML-Objekt:
PHP:
while ($row = mysql_fetch_accoc($result)) {
    echo '<entry id="'.$row['id'].'"><![CDATA['.$row['inhalt'].']]></entry>';
}
Ausgabe z.B.:
Code:
<entry id="1"><![CDATA[Hier kann was stehen]]></entry>
<entry id="2"><![CDATA[Hier auch]]></entry>
<entry id="3"><![CDATA[Eigentlich kann hier ne Menge stehen]]></entry>
Abfrage in Flash dann in etwa:
Code:
var xm = new XML();
xm.ignoreWhite = true;

xm.onLoad = function() {
    for (var i=0; i<this.childNodes.length; i++) {
        trace(this.childNodes[i].attributes.id + ": " + this.childNodes[i].firstChild);
    }
}

xm.load("script.php");
Näheres zur Verwendung des XML-Objektes erfährst Du aus der Flash-Referenz, den FAQ im Forum (schau mal in den Sammelthread) und den zahlreichen Threads im Flashforum, die sich mit XML-Anwendungen auseinandersetzen.

Gruß
.
 
Ok. Danke für die groß Hilfe. Da werde ich mich mal ran setzen :).

Einen schönen Tag wünsche ich dir noch.

Gruß Rollo
 
Zurück