Daten aus DB in Dropdownlist füllen

astaluego

Erfahrenes Mitglied
Tach! Ich bin müde geworden vom durchforsten des Forums über eine verständliche Erklärung wie ich Daten aus der Datenbank raushole (allgm) .

Also ich hab ne Tabelle t_test mit ID und name reicht ja mal fürs Beispiel.
Wie ich die Daten über php rausfinde ist kein Problem. Aber ich hät schon mal fragen wie die ganze Übergabe stattfindet.

a) müssen die Daten aus PHP in ein externes Textfile geschrieben werden damit Flash sie dann aus diesem File laden kann?!
b) Wenn nicht, wie sollte dann das PHP script aussehen nach dem Befehl : mysql_query($sql) ?
c) Wie lad ich nun alle Namen aus der Datenbank in die Dropdownlist welche als Instanz auf der Bühne ist?

Danke an alle
gruss ana
 
Hi,

die Übertragung von Daten zwischen Server und Client ist mit Flash und PHP eigentlich recht unkompliziert.

Die Daten, die Du in Flash benötigst, gibst Du einfach mit echo oder write aus, wobei die notwendige Formatierung von dem Objekt abhängt, mit dem Du die Daten in Flash einließt. URL-Codiert mit dem LoadVars-Objekt:
PHP:
// PHP:
for ($i = 0; $i < $entrys; $i++) {
 echo("&vorname=".$forename[$i]."&nachmame=".$lastname[$i]);
}

// und in Flash mit dem LoadVars-Objekt einlesen:
var lv = new LoadVars();
lv.load("meinphp.php", "POST");
lv.onLoad = function() {
    trace(this.vorname);
    trace(this.lastname);
}
oder z.B. XML-formatiert:
PHP:
// PHP:
echo("<entry id=\"menue\" caption=\"Home\">");
echo("    <entry id=\"submenue \" caption=\"Home 1\" src=\"home1.swf\" />");
echo("</entry>");

// und in Flash mit dem XML-Objekt einlesen:
var xm = new XML();
xm.ignoreWhite = true;
xm.load("meinphp.php", "POST");
xm.onLoad = function() {
    traceMe(this);
}

function traceMe(node) {
    for (var i=0; i<node.ChildNodes.length; i++) {
        trace(node[childNodes[i].attributes.caption);
        traceMe(node.childNodes[i]);
    }
}

Gruß

P.S.: Es bietet sich an, Daten für den Versand mit urlencode zu codieren und nach dem Einlesen mit unescape wieder umzuwandeln.
.
 
danke!
ich hab zwar gleich nachdem ich den thread eröffnet habe folgendes gefunden :
macromedia
Ist aber sehr fehleranfällig wenn man sich verklickt hat bei diesen Components.
Ich probier mal deine Lösung aus.
Was ich aber festgestellt habe bei dem xml connector: habe ich 2 szenen in der ersten irgendwas und in der zweiten meinen xml con. dann kann er die Daten nicht laden. Schmeiss ich die erste szene raus sind alle Daten vorhanden. -> c'est mysterieux :confused:

greetz ana
 
hmm... da kann ich spontan nicht viel zu sagen; die eingebauten Komponenten fasse ich normalerweise nicht an (XML-Connector? Nie gehört). Nur soviel: Szenen && Dynamic = Probleme, das zeigt sich immer wieder. Setze Deine Inhalte in verschiedene Frames einer Zeitleiste oder packe sie in MovieClips und verzichte ganz auf mehrere Frames in der Hauptzeitleiste.

Gruß
.
 
na gut. Hab schon eine "Umgeh"-lösung gefunden.
Weiss du zufällig wie ich von der Combobox das label, value oder wie es sonst heisst (einfach den Text den ich in der Combobox seh) bekomme?
 
hmm... ich sagte ja: ich und Kompontenten :rolleyes:

Die Hilfe meint:
ComboBox.addItem()
Verfügbarkeit
Flash Player 6.0.79.

Verwendung 1:
comboBoxInstance.addItem(label[, data])

Verwendung 2:
comboBoxInstance.addItem({label:label[, data:data]})

Verwendung 3:
comboBoxInstance.addItem(obj);

Parameter
label - Eine Zeichenfolge, die die Bezeichnung für das neue Element angibt.

data - Die Daten für das Element mit beliebigem Datentyp. Dieser Parameter ist optional.

obj - Ein Objekt mit einer label-Eigenschaft und einer optionalen data-Eigenschaft.
... und mit selectedItem bekommst Du das ausgewählte Feld:
PHP:
var item = meineComboBox.selectedItem;
trace("Sie haben das Element " + item + " ausgewählt.");

Gruß
.
 
lol sorry ich musste ne antwort rausquetschen!
ok wenn ich es nach deiner Version lade habe ich immer noch einen Datensatz "[type Funktion]" den er mir automatisch zu meinen Datensätzen hinzufügt und ich krieg den nich weg :suspekt:
 
Hi,

wie lädst Du die Daten nun ein, mit dem LoadVars- oder dem XML-Objekt? Wenn ich mit einem LoadVars-Objekt "unformatierte" Daten, also Daten, die nicht als URL-codierte Variablen vorliegen, einlade, erhalte ich als Wert des Objektes eine Zeichenkette mit besagtem "TypeFunction" am Ende (eigentlich nicht schlimm, manchmal will ich eine beliebige Datei laden, dann verwende ich LoadVars.toString() und schneide die letzten 23 Zeichen oder so mit substr weg). Wenn die Länge Deiner Datensätze unbekannt ist, und Du keine extra-Variable für die Anzahl einfügen willst, bietet sich das XML-Objekt an, mit dem Du z.B. über XML.childNodes.length die Anzahl der Einträge erfahren kannst.

Alternativ kannst Du die Variablen eines LoadVars-Objektes durchnummerieren, und eine Schleife so lange laufen lassen, bis der erste Eintrag "undefined" ist:
PHP:
var amt = 0;

while (meinLoadVars["variable" + amt] != undefined) {
    meinCombo.addItem(meinLoadVars["variable" + amt]);
    amt ++;
}

Gruß
.
 
ne habs mti loadvars gemacht das xml is mir zu kompliziert. Habs mit der If-Abfrage weggebracht die Daten wurden ja in die Combobox geladen.
Ich hätt da aber eine rein allgemeine Frage
Ich weiss das es in C# (auch in javascript) z.B möglich ist zu sagen getElementById("button_" + i)
Ist so etwas auch in Flash möglich?
ich hab nämlich 6 verschiedene Eingabefelder mit instanznamen t1 - t6
und jetzt träume ich davon die Felder so anzusprechen: [concat("t" , i)].text = "blabalbla";
 

Neue Beiträge

Zurück