Zurück   Flashforum > Flash und Server > Flash und Datenbanken

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-04-2007, 13:57   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 53
Lightbulb DB-Daten in XML schreiben

Hi,

ich habe mir ein kleines Newsscript in php programmiert.

Nun habe ich mir hier auf flashforum.de auch schon das, für mich, sehr hilfreiche Tutorial "XML in Flash einlesen und darstellen" (oder so ähnlich) durchgelesen, soweit ist für mich also klar wie ich eine XML Datei in Flash einlesen kann. Ich hab auch schon hier in "Flash und Datenbanken" wegen meiner jetzigen Frage geguckt, aber leider nicht gefunden was mir weiterhilft. Ich glaube ich brauche Eure Hilfe.

Es ist so, dass ich mein php Newsscript so programmiert habe, dass die News (Überschrift, Kurztext, Langtext, Datum usw.) in einer DB gespeichert werden.

Somit hab ich keine XML-Datei vorliegen.

Desweiteren kann man mit meinem Newsscript auch Bilder "links" neben dem Newstext bei bedarf hochladen
Erläuterung: also beim erstellen einer neuen News kann ein lokaler Pfad auf der Festplatte angegeben werden, anschließend wenn die News geschrieben ist und auf senden/speichern geklickt wird, dann wird der Text in die DB geschrieben und das Bild in einen dafür vorgesehenen Ordner auf dem Server gespeichert. Falls ich irgendwas nicht ordentlich erklärt habe bitte fragt mich!

1. Frage
Wie kann ich nun die in der DB gespeicherten Daten in XML umwandeln? (denn somit hätte ich ja die .xml und kann diese in Flash einlesen!)

2. Frage
Wie geh ich die Sache mit den Bildern an? Ich will ja schließlich, dass die Bilder in Flash dann auch passend und entsprechend zugeordnet bei den News dargestellt werden!

Ich bin für Hilfe dankbar!

sonnige Grüße aus Regensburg :-)
Mach!N3 ist offline   Mit Zitat antworten
Alt 22-04-2007, 14:29   #2 (permalink)
dreizeiler
 
Benutzerbild von mojave
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 1.411
den umweg über xml musst du eigentlich nicht gehen, du kannst die daten einfach per php holden und in flash verarbeiten.

bsp ist nur als solches zu verstehen. es gibt andere lösungen.

flash::
PHP-Code:
var myLoadVars:LoadVars = new LoadVars();
myLoadVars.load("http://url/getdata.php");
myLoadVars.onLoad = function(geladen:Boolean){
      if(
geladen){
           var 
counter:Number Number(this['counter']);
           for(var 
i:Number =0icounteri++){
                  
trace(this['bild'+counter]);
           }

      }


php
PHP-Code:
<?php

//..... verbindung,  query..usw...
$counter 0;

    
$ergebnis mysql_query($query,$connection)or die (mysql_error());

    while (
$row mysql_fetch_array($ergebnisMYSQL_BOTH)) {

        

            
$bild $row["bild"];

            print(
'&bild'.$counter.'='.urlencode(utf8_encode($bild)));

            
$counter++;

            

    }

    print(
'&counter='.$counter);

?>

Geändert von mojave (22-04-2007 um 14:31 Uhr)
mojave ist offline   Mit Zitat antworten
Alt 22-04-2007, 20:24   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 53
Hi Du,

zuerst einmal DANKE für Deine Hilfe.

Ich bin leider auf dem Gebiet (auch wenn ich ein Newsscript gecodet hab), denke ich, ein Anfänger auf dem Gebiet.

Darf ich Dir mal meinen Code für meine Scripts posten?

Also mir sagt des z.B. gar nix, wenn Du schreibst php holden (!?)

meine news.php (news-Ausgabe):
PHP-Code:
<?php
include("db_connect.php");
$sql "select titel, textkurz, textlang, sonstiges from newsdata order by id DESC";
$result mysql_query($sql) or die(mysql_error());
while(
$row mysql_fetch_assoc($result))
{
print 
"<table width=\"100%\"  border=\"1\" align=\"center\" cellpadding=\"3\" cellspacing=\"0\" bgcolor=\"#CCCCCC\" bordercolor=\"#666666\">";
print 
"<tr>";
print 
"<td align=\"left\"width=\"100\"><img src=\"".$filepath_pix_ausgabe.$row['sonstiges']."\"width=\"100\" height=\"100\"></td>";
print 
"<td align=\"left\" width=\"100%\">".$row['titel']."<hr size=\"1\">".$row['textkurz']."</td>";
print 
"</tr>";
print 
"<tr>";
print 
"<td height=\"10\" colspan=\"2\"><a href=\"langtext.php?langtext=".$row['textlang']."\">mehr lesen...</a></td>";
print 
"</tr>";
print 
"</table>";
print 
"<br>";
}
?>
Kann ich hiermit was anfangen und die Datei irgendwie "so" wie Sie hier ist in flash darstellen lassen?

Übrigens! Zu dem script für Flash (Action Script halt...) was Du mir geschrieben hast. Soll ich das mit einem "stop" Befehl in den ersten Frame setzen? muss ich in weiteren Frames noch etwas angeben?

Ich wäre Dir dankbar, wenn du mir nochmal helfen würdest.

Danke und schönen Wochenstart an alle
Mach!N3 ist offline   Mit Zitat antworten
Alt 22-04-2007, 20:26   #4 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 53
Ich weiß, dass solche Fragen immer etwas schlecht ankommen, aber ich glaube ich bräuchte konkrete Hinweise wie ich das in meinem Code anwende was Du mir geschrieben hast.

Oder meinst Du ich soll den von Dir geposteten Code in eine seperate .php-Datei packen?!

Danke
Mach!N3 ist offline   Mit Zitat antworten
Alt 23-04-2007, 09:45   #5 (permalink)
dreizeiler
 
Benutzerbild von mojave
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 1.411
holden = holen == tippfehler.

ich denke das bsp oben sollte ansatz genug sein.

flash actionscript siehe oben...

PHP-Code:
include("db_connect.php");
$sql "select titel, textkurz, textlang, sonstiges from newsdata order by id DESC";

$counter 0;

    
$ergebnis mysql_query($sql,$connection)or die (mysql_error());

    while (
$row mysql_fetch_array($ergebnisMYSQL_BOTH)) {


            
$titel $row["titel"];
            
$textkurz $row["textkurz"];
            
$textlang $row["textlang"];
            
$sonstiges $row["sonstiges"];

            print(
'&titel'.$counter.'='.urlencode(utf8_encode($titel)));
            print(
'&textkurz'.$counter.'='.urlencode(utf8_encode($textkurz)));
            print(
'&textlang'.$counter.'='.urlencode(utf8_encode($textlang)));
            print(
'&sonstiges'.$counter.'='.urlencode(utf8_encode($sonstiges)));

            
$counter++;  

    }

    print(
'&counter='.$counter); 
mojave ist offline   Mit Zitat antworten
Alt 24-04-2007, 07:19   #6 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 53
Guten Morgen,

ich verzweifle noch :-(

Ich hab jetzt folgendes Action-Script:

PHP-Code:
var myLoadVars:LoadVars = new LoadVars();
myLoadVars.load("http://web1.vs159021.vserver.de/scripts/newsscript/newsflash.php");
myLoadVars.onLoad = function(geladen:Boolean){
      if(
geladen){
           var 
counter:Number Number(this['counter']);
           for(var 
i:Number =0icounteri++){
                  
trace(this['titel'+counter]);
                  
trace(this['textkurz'+counter]);
                  
trace(this['textlang'+counter]);
           }

      }
}  
stop(); 
und folgendes php-Script:
PHP-Code:
<?php
include("db_connect.php");
$sql "select titel, textkurz, textlang from newsdata order by id DESC";

$counter 0;

    
$ergebnis mysql_query($sql) or die (mysql_error());
    while (
$row mysql_fetch_assoc($ergebnis)) 
    {
            
$titel $row["titel"];
            
$textkurz $row["textkurz"];
            
$textlang $row["textlang"];

            print(
'&titel'.$counter.'='.urlencode(utf8_encode($titel)));
            print(
'&textkurz'.$counter.'='.urlencode(utf8_encode($textkurz)));
            print(
'&textlang'.$counter.'='.urlencode(utf8_encode($textlang)));

            
$counter++;  

    }

    print(
'&counter='.$counter);  
?>
Das hier bekomme ich bei der eben geposteten newsflash.php
http://web1.vs159021.vserver.de/scri.../newsflash.php

Und das hier bekomme ich bei der eben geposteten newsflash.swf
http://web1.vs159021.vserver.de/scri.../newsflash.swf

Und hier die newsflash.html
http://web1.vs159021.vserver.de/scri...newsflash.html

Ich verstehe einfach nicht wieso ich keine Anzeige bekomme in Flash :-/

Ich habe ein neues Flash Dokument erstellt und in den ersten Frame den oben geposteten Code eingefügt.

Kann mir jemand helfen?
Mach!N3 ist offline   Mit Zitat antworten
Alt 24-04-2007, 07:39   #7 (permalink)
Neuer Benutzer
 
Benutzerbild von webxvideo
 
Registriert seit: Nov 2003
Ort: berlin
Beiträge: 883
Zumindest in Deinem AS-Script läst Du die Ergebnisse mit trace ausgeben.
Das funktioniert aber nur in der Entwicklungsumgebung.

Versuchs mal so:
PHP-Code:
var myLoadVars:LoadVars = new LoadVars(); 
myLoadVars.load("http://web1.vs159021.vserver.de/scripts/newsscript/newsflash.php"); 
myLoadVars.onLoad = function(geladen:Boolean){ 
      if(
geladen){ 
           var 
counter:Number Number(this['counter']); 
           var 
ausgabe="";
           for(var 
i:Number =0icounteri++){ 
                  
ausgabe+=this['titel'+counter]; 
                  
ausgabe+=this['textkurz'+counter]; 
                  
ausgabe+=this['textlang'+counter]; 
           }
           
deinTextfeld.text=ausgabe

      } 
}   
stop(); 
Jetzt brauchst Du noch ein dynamisches Textfeld "deinTextfeld":
webxvideo ist offline   Mit Zitat antworten
Alt 24-04-2007, 08:24   #8 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 53
Hi webxvideo,

jetzt bin ich ja wirklich schonmal erleichtert, dass ich überhaupt einen Anzeige bekomme!
Aber so wirklich klappen wills leider immer noch nicht :-(

Guck mal:
http://web1.vs159021.vserver.de/scri...newsflash.html
Mach!N3 ist offline   Mit Zitat antworten
Alt 24-04-2007, 08:30   #9 (permalink)
Trennschleifer
 
Benutzerbild von bobo_k1
 
Registriert seit: Apr 2004
Ort: Hamburg
Beiträge: 1.282
ich hatte mal ne PHP-Klasse geschrieben, um XML-Daten für ein Diagramm on-the-fly zu erzeugen. Vielleicht nutzt es dem ein oder anderen:

PHP-Code:
<?php

/**
 *  Datenexporter von DB-Arrays nach XML
 *
 *
 * @author Boris Horn
 * @package Bibliotheken
 * @subpackage dataprovider
 *
 * @version 1.000
 * @created 2007
 *
 */

class XMLDiagram{
    
    private 
$title;
    private 
$data;
    private 
$desc;
    private 
$url;
    
     
/**
     * Konstruktor
     *
     * setzt die benötigten Variablen und den Speicherpfad
     *
     * @author Boris Horn
     * @version 1.000
     * @created 2007
     *
     */
    
    
public function __construct($title$data$desc$url){
        
        
$this->title $title;
        
$this->data $data;
        
$this->desc $desc;
        
$this->url $url;
        
        
$this->generateXML($this->title$this->data$this->desc$this->url);
    }

     
/**
     * traceData()
     *
     * zum Testen der übergebenen Variablen
     *
     * @author Boris Horn
     * @version 1.000
     * @created 2007
     *
     */
    
    
public function traceData(){
        echo 
$this->title;
        echo 
"\n<br/><hr/>";
        
var_dump($this->data);
        echo 
"\n<br/><hr/>";
        
var_dump($this->desc);
        
    }
    
     
/**
     * generateXML()
     *
     * zum erzeugt ein valides XML-Dokument
     *
     * @author Boris Horn
     * @version 1.000
     * @created 2007
     *
     */
    
    
private function generateXML($title,$data$desc$url){
     
           
    
$doc = new domDocument('1.0''utf-8');
    
// Root-Element erzeugen
    
$root = new domElement('chart');
    
$root $doc->appendChild($root);
    
$root->setAttribute('title',utf8_encode($title)); 
    for(
$x 0$x<count($data); $x++){
    
// Leeres XML-Dokument erstellen
   
    // Weitere Knoten erstellen
    
$chart $doc->createElement('chartData');
    
$chart $root->appendChild($chart);


    
// Atribute definieren
    
$chart->setAttribute('chartValue',$data[$x]);
    
// CDATA definieren
    
$cTitle = new domText(utf8_encode($desc[$x]));
    
$cTitle $chart->appendChild($cTitle);
    }

    
// Ausgabe in die Datei
    
file_put_contents($url,$doc->saveXML());
    
        
    }
    
}



?>
__________________
Es gibt nur zwei Arten von Menschen die Hawaiihemden tragen: Schwuchteln und dicke fette Partylöwen. Und du siehst nicht aus wie ein dicker fetter Partylöwe!" - Homer J. Simpson
bobo_k1 ist offline   Mit Zitat antworten
Alt 24-04-2007, 08:36   #10 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 53
danke,
wie man xml in flash lesen kann hab ich auch schon gelesen in den FAQs.

Jetzt würd ich aber lieber bei meinem "angefangenem" in diesem _Thread diskutiertem bleiben.

Kannst Du mir dazu vllt. helfen?
Mach!N3 ist offline   Mit Zitat antworten
Alt 24-04-2007, 08:40   #11 (permalink)
dreizeiler
 
Benutzerbild von mojave
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 1.411
in deiner php datei steckt der wurm. die gibt nur die variablennamen aus. "titel1 = $titel" ist die ausgabe.
versuch mal while ($row = mysql_fetch_array($ergebnis, MYSQL_BOTH))
mojave ist offline   Mit Zitat antworten
Alt 24-04-2007, 08:43   #12 (permalink)
Trennschleifer
 
Benutzerbild von bobo_k1
 
Registriert seit: Apr 2004
Ort: Hamburg
Beiträge: 1.282
Zitat:
Zitat von Mach!N3 Beitrag anzeigen
danke,
wie man xml in flash lesen kann hab ich auch schon gelesen in den FAQs.

Jetzt würd ich aber lieber bei meinem "angefangenem" in diesem _Thread diskutiertem bleiben.

Kannst Du mir dazu vllt. helfen?
die PHP-Klasse macht aber nichts anders, als DB-Daten in ein valides XML-Dokument zu schreiben
__________________
Es gibt nur zwei Arten von Menschen die Hawaiihemden tragen: Schwuchteln und dicke fette Partylöwen. Und du siehst nicht aus wie ein dicker fetter Partylöwe!" - Homer J. Simpson
bobo_k1 ist offline   Mit Zitat antworten
Alt 24-04-2007, 08:49   #13 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 53
hm...
ich glaub ich hab echt probleme mir beispielhaften Code auf meine Bedürfnisse anzupassen...
Daher weiß ich auch nicht viel mit Deinem Code anzufangen Bobo.

@web
Ich hab jetzt die while Schleife angewendet:
mein php-Code atm sieht so aus, aber ich habe immer noch das gleiche ergebnis in Flash, obwohl jetzt die Inhalte aus der DB ausgegeben werden, zwar nicht formatiert, aber das kann ich ja noch nachholen!

PHP-Code:
<?php
include("db_connect.php");
$sql "select titel, textkurz, textlang from newsdata order by id DESC";

$counter 0;

    
$ergebnis mysql_query($sql) or die (mysql_error());
    while (
$row mysql_fetch_array($ergebnisMYSQL_BOTH))
    {
            
$titel $row["titel"];
            
$textkurz $row["textkurz"];
            
$textlang $row["textlang"];

            print(
'&titel'.$counter.'='.urlencode(utf8_encode($titel)));
            print(
'&textkurz'.$counter.'='.urlencode(utf8_encode($textkurz)));
            print(
'&textlang'.$counter.'='.urlencode(utf8_encode($textlang)));

            
$counter++;  

    }

    print(
'&counter='.$counter);  
?>
Mach!N3 ist offline   Mit Zitat antworten
Alt 24-04-2007, 09:06   #14 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 53
Aber ist es denn nicht so, dass im dynamischen Textfeld zumindest irgendwas ausgegeben werden müsste und nicht nur "undefined" ?
Das PHP Script könnte ich denke ich alleine entsprechend abändern von der Formatierung her.

Hier die momentane Ausgabe der php datei welche in flash eingelesen werden soll: (die Tabellennamen werde ich noch wegnehmen, denn ich brauch eigentlich nur die Inhalten ordentlich formatiert)

PHP-Code:
<?php
include("db_connect.php");
$sql "select titel, textkurz, textlang from newsdata order by id DESC";

$counter 0;

    
$ergebnis mysql_query($sql) or die (mysql_error());
    while (
$row mysql_fetch_array($ergebnisMYSQL_BOTH))
    {
            
$titel $row["titel"];
            
$textkurz $row["textkurz"];
            
$textlang $row["textlang"];

            print(
'&titel'.$counter.'='.urlencode(utf8_encode($titel)));
            print(
'&textkurz'.$counter.'='.urlencode(utf8_encode($textkurz)));
            print(
'&textlang'.$counter.'='.urlencode(utf8_encode($textlang)));

            
$counter++;  

    }

    print(
'&counter='.$counter);  
?>
und hier das action script in flash. Dem dyn. Textfeld brauch ich doch nur einen Namen, eine Variable und Mehrzeilig zuweisen, ja und dass es halt ein dyn. Textfeld sein soll, ansonsten brauch ich doch nix oder?

hier das action-script:

PHP-Code:
var myLoadVars:LoadVars = new LoadVars(); 
myLoadVars.load("http://web1.vs159021.vserver.de/scripts/newsscript/newsflash.php"); 
myLoadVars.onLoad = function(geladen:Boolean){ 
      if(
geladen){ 
           var 
counter:Number Number(this['counter']); 
           var 
ausgabe="";
           for(var 
i:Number =0icounteri++){ 
                  
ausgabe+=this['titel'+counter]; 
                  
ausgabe+=this['textkurz'+counter]; 
                  
ausgabe+=this['textlang'+counter]; 
           }
           
deinTextfeld.text=ausgabe

      } 
}   
stop(); 

Oh Herr, lass es WISSEN regnen
Mach!N3 ist offline   Mit Zitat antworten
Alt 24-04-2007, 11:00   #15 (permalink)
Neuer Benutzer
 
Benutzerbild von webxvideo
 
Registriert seit: Nov 2003
Ort: berlin
Beiträge: 883
Schreib doch mal in Dein AS folgendes:
PHP-Code:
var myLoadVars:LoadVars = new LoadVars();  
myLoadVars.load("http://web1.vs159021.vserver.de/scripts/newsscript/newsflash.php");  
myLoadVars.onLoad = function(geladen:Boolean){  
      if(
geladen){  
           var 
counter:Number Number(this['counter']);  
           var 
ausgabe="Ausgabe:"
           for(var 
i:Number =0icounteri++){  
                  
ausgabe+=this['titel'+counter];  
                  
ausgabe+=this['textkurz'+counter];  
                  
ausgabe+=this['textlang'+counter];  
           } 
           
deinTextfeld.text=ausgabe;  

      }  
}    
stop(); 
Jetzt sollte in Deiner SWF zumindest "Ausgabe:" erscheinen!
Wenn es das nicht tut, liegts an Deinem Textfeld.
Lautet der Name Deines Textfeldes wirklich "deinTextfeld"?
Was für eine Schrift hat Dein Textfeld (wenn Du nicht sans, sans-serif oder monospace nimmts, musst Du die Schrift einbetten)?
Und welche Farbe hat die Schrift?

Geändert von webxvideo (24-04-2007 um 11:01 Uhr)
webxvideo 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 00:14 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele