Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 04-10-2004, 19:17   #1 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
FAQ/Help zum Shoutbox Tutorial

Hi,

ich bekomme in regelmäßigen Abständen per PN die Anfrage, ob ich die Fla und die weiteren Sources zu diesem Tutorial vergeben kann.

Nun… das ganze war eine Quick'n'Dirty Sache und hat insgesamt ca. 20min gedauert… jeder, der das Tutorial umfassend gelesen hat, wird seinen Lernerfolg nur so prüfen können, indem er das ganze einfach selbst erledigt… ist ja auch irgendwie Sinn der Sache…
Dann entstehen zb. nicht solche Fragen, wie man zb. das ganze um die Angabe eines „Verfassers“ erweitern könnte… da man bei Lernerfolg das ganze in Analogie ableiten kann.

Anyway… ich meine die Fla mal an jemanden verschickt zu haben… selbst habe ich diese gar nicht mehr… wenn dieser jemand das hier liest, sollte er bitte kurz sich melden…die Fla kann gerne weiterverschickt werden.

Für alle anderen… das ist echt nicht so schwer. Ein wenig Geduld, dann klappt das auch.

Ansonsten hier der offizielle Help Thread… jenachdem wie die aktuelle Joblage aussieht, helfe ich gerne weiter. Aber bitte nicht per PN bombadieren…

Liebe Grüße

Yves
  Mit Zitat antworten
Alt 04-10-2004, 19:19   #2 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hier wird nach der Erweiterung um das Feld „Verfasser“ gefragt… sehr gut erklärt.

Frage zum Tutorial .

Liebe Grüße

Yves
  Mit Zitat antworten
Alt 05-10-2004, 17:43   #3 (permalink)
...disguised
 
Benutzerbild von levelG
 
Registriert seit: Apr 2003
Ort: GHC
Beiträge: 315
... Und es funktioniert immer noch net! Mist!
Is das schlimm wenn sich die Shoutbox eine dBase mit nem Forum teilt?
Wenn nicht, muss ich an der table.txt noch was verändern bzw. anpassen?
__________________
Stolz ist die Leere im Herzen der Dummen! - Rantanplan
levelG ist offline   Mit Zitat antworten
Alt 05-10-2004, 18:17   #4 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi…

table.txt? Ich hab gesehen, das du da wohl den SQL Befehl drin stehen hast… was soll der denn da? Der gehört in ein DBMS wie MySQL!

Erklär mal kurz bitte, wie du die Datenbankanbindung realisiert hast…


Yves
  Mit Zitat antworten
Alt 05-10-2004, 19:35   #5 (permalink)
...disguised
 
Benutzerbild von levelG
 
Registriert seit: Apr 2003
Ort: GHC
Beiträge: 315
----------Bahnhof----------
SQL? Hä? Was isn das?
Nee aber mal im Ernst, das mit dem SQL Befehl in der *.txt Datei hab ich mir von ner anderen Shoutbox abgekuckt, die ich ca. 1 Woche vor deiner probiert hab:
Folgender Content (von der anderen):
CREATE TABLE shout (
id int(11) NOT NULL auto_increment,
posted tinyint(4) NOT NULL default '0',
nama varchar(100) NOT NULL default '',
email varchar(100) NOT NULL default '',
pesan text NOT NULL,
reply text NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;

Meine "Datenbankanbindung" wollte ich (bestimmt dämlicherweise) realisieren in dem ich die table.txt einfach auf meinen Server schmeiße! Ich hab auch schon gesucht, hab keine Datei gefunden, die nach der "table.txt" (oder wie sie heißen soll) fragt. Das hat bestimmt was mit dem obstinösen ???DBMS??? zutun.
__________________
Stolz ist die Leere im Herzen der Dummen! - Rantanplan

Geändert von levelG (05-10-2004 um 19:36 Uhr)
levelG ist offline   Mit Zitat antworten
Alt 05-10-2004, 20:50   #6 (permalink)
...disguised
 
Benutzerbild von levelG
 
Registriert seit: Apr 2003
Ort: GHC
Beiträge: 315
Ok, *mySQL installiert*,*so ungefähr wissend was DBMS ist* aber trotzdem *nicht weiterkommend*.
hier steht was von 'Aufrufsyntax'. Wo schreib ich denn die hin?? Ich mein, die kann ich doch nicht einfach in eine *.txt Datei schreiben und die aufen Server schmeißen, oder? Weiter unten steht:
(...)auch mit einem ASCII-Editor in eine Datei schreiben und diese dann abarbeiten lassen. Der Aufruf, der das Abarbeiten der Datei startet, ähnelt dem normalen mysql-Aufruf:
mysql -p{Paßwort} -u{Benutzername} {DB-Name} < dateiname(...)
Und von wem lass ich das abarbeiten? Im MySQL Verzeichnis ist keine *.exe o.ä. zu finden! Kompliziert? Oder stell ich mich ein bischen blöd an?
__________________
Stolz ist die Leere im Herzen der Dummen! - Rantanplan
levelG ist offline   Mit Zitat antworten
Alt 07-10-2004, 18:47   #7 (permalink)
...disguised
 
Benutzerbild von levelG
 
Registriert seit: Apr 2003
Ort: GHC
Beiträge: 315
O mann ist der obige "Beitrag" peinlich. Naja wenn man halt nichts weis. Nu hab ichs gepackt. Die Tabelle steht und als ich das erste mal was geschrieben hab ist es auch prompt erschienen und das Input Feld ist leer. ABER Wenn ich jetzt das InputFeld leer lasse und auf 'Senden' drücke, erscheint mein zu allererst geschriebener "shout". Ausserdem erscheint dieses <br> Zeichen aber es wird kein Zeilenumbruch gemacht. Woran liegt das? Refresh oder Neustart hilft (logischerweise) nicht!
__________________
Stolz ist die Leere im Herzen der Dummen! - Rantanplan
levelG ist offline   Mit Zitat antworten
Alt 07-10-2004, 19:36   #8 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Also… mal ganz von vorne…

MySQL ist ein DBMS. Database Management System.

Ein Table ist eine Struktureinheit innerhalb einer Datenbank, in der Datensätze in ein Spaltenschema eingefügt werden.

SQL, structured query language, ist eine Abfragesprache, um genau zu spezifizieren, welche Operationen du in einem DBMS durchführen möchtest.



Der CreateTable Befehl, den du in eine .txt Datei geschrieben hast, ist dort absolut trivial, da er dort keine Aufgabe hat.

Schau am besten mal bei mysql.com und lies dir die Funktionsreferenz durch, um eine kurzen Überblick über die Befehle zu bekommen.

SQL Befehle, sowie zb den CreateTable Befehl, kann man direkt über den in MySQL enthaltenen Daemon zb via Telnet und Commandline ausführen lassen, oder aber via PHP. Dafür gibt es dann auch Tools wie phpMyAdmin, die das ganze erleichtern.

Für das Anlegen des Tables mittels eines SQL Befehls via Telnet/Commandline habe ich dir mal zu Veranschaulichung eine Logdatei gepostet. Sensitive Informationen sind natürlich durch xxxxxxxxxxxxxxxx unkenntlich gemacht.

Code:
Last login: Wed Sep  8 15:44:40 on ttyp1
Welcome to Darwin!
iMac:~ Yves$ telnet -a www.xxxxxxxx.de
Trying 192.xx.xxx.56...
Connected to iiweb6.xxxxxx.de.
Escape character is '^]'.
WebMailer Telnet Access   -  Welcome to the new world order
Login: xxxxxxxxxxxxx
Password:
tcsh: using dumb terminal settings.
xxxxxxxxxxx> mysql -h rdbms -u xxxxxxxxxx -p xxxxxx
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4460128 to server version: 4.0.12

Type 'help' for help.

mysql> CREATE TABLE `delfinball` (
    ->   `id` smallint(5) unsigned NOT NULL auto_increment,
    ->   `timestamp` timestamp(14) NOT NULL,
    ->   `name` varchar(64) NOT NULL default '',
    ->   `vorname` varchar(64) NOT NULL default '',
    ->   `strasse` varchar(64) NOT NULL default '',
    ->   `plz` smallint(5) unsigned NOT NULL default '0',
    ->   `ort` varchar(64) NOT NULL default '',
    ->   `telefon` varchar(64) NOT NULL default '',
    ->   `email` varchar(64) NOT NULL default '',
    ->   `score` int(6) unsigned NOT NULL default '0',
    ->   PRIMARY KEY  (`id`),
    ->   UNIQUE KEY `timestamp` (`timestamp`)
    -> ) TYPE=MyISAM AUTO_INCREMENT=0 ;
Query OK, 0 rows affected (0.02 sec)

mysql> quit
Bye
xxxxxxxxxxxx> exit
logout

PHPmyAdmin wäre aber das beste für dich am Anfang.


Nun zum Teil der Shoutbox.

Um die Daten aus der MySQL Dbase zu bekommen, benötigen wir einige Abfragestatements, sowie zum Einfügen einige Insertstatements. Diese werden in PHP eingebettet. PHP gibt dabei die spezifizierten Informationen an Flash weiter bzw. holt sich diese und verarbeitet diese. Aus Serversicht ist es eigentlich der Flashplayer/worlduser, der dieses tut… naja… so in etwa… das ist hier nicht wichtig.

Wenn du dir das mit einem SQL Befehl in einer Textdatei aus einem Tutorial abgeschaut hast, sollte der Autor dieses Tutorials zum Mond geschossen werden.
Garantiert war das eine Shoutbox, die ihre Information mittels fwrite() etc. in PHP in eine Textdatei geschrieben hat.

Aber nun gut…

Jetzt zu deinem Problem.

Zitat:
Die Tabelle steht und als ich das erste mal was geschrieben hab ist es auch prompt erschienen und das Input Feld ist leer.
Mich würde jetzt spontan erstmal nichts mehr wundern… daher erkläre bitte, wie du den Table angelegt hast.
(Ist nicht böse gemeint, du fängst halt grad erst an.)

Zitat:
ABER Wenn ich jetzt das InputFeld leer lasse und auf 'Senden' drücke, erscheint mein zu allererst geschriebener "shout".
Vernachlässige das jetzt erstmal bitte.

Zitat:
Ausserdem erscheint dieses <br> Zeichen aber es wird kein Zeilenumbruch gemacht. Woran liegt das? Refresh oder Neustart hilft (logischerweise) nicht!
Htmltext wird sowie ich es im Tutorial geschrieben habe, zugewiesen. Das machst du wahrscheinlich auch so. Wichtig ist, das du im Propertymanager auch das dynamische Textfeld HTML-fähig setzt, da sonst die HTML Tags nicht interpretiert werden.



Zitat:
hier steht was von 'Aufrufsyntax'. Wo schreib ich denn die hin?? Ich mein, die kann ich doch nicht einfach in eine *.txt Datei schreiben und die aufen Server schmeißen, oder?
Diese kommt in PHP logischerweise. Ich habe das in die query.php geschrieben… da wo SELECT etc im der mysql_query() Funktion steht.


Zitat:
(...)auch mit einem ASCII-Editor in eine Datei schreiben und diese dann abarbeiten lassen.
Damit meint man das coden von PHP Dateien.

Zitat:
Der Aufruf, der das Abarbeiten der Datei startet, ähnelt dem normalen mysql-Aufruf:
mysql -p{Paßwort} -u{Benutzername} {DB-Name} < dateiname(...)
Das ist der Commandlinebefehl. Hier die Anmeldung am DBMS. Das geschieht in PHP ebenfalls mittels eines Befehls, welcher in der config.inc.php steht, die immer mit require_once() included wird.

Zitat:
Und von wem lass ich das abarbeiten?
Das PHP Modul auf dem (zb) Apacheserver macht das für dich, sobald man eine PHP Datei dort aufruft.

Zitat:
Im MySQL Verzeichnis ist keine *.exe o.ä. zu finden! Kompliziert? Oder stell ich mich ein bischen blöd an?
Naja… du bist ein Anfänger und machst gerade den zweiten Schritt vor dem ersten.

Lerne am besten erstmal:

1.) Was ist MySQL? Was ist ein DBMS? Was ist SQL?

2.) Was ist PHP? Was ist Apache? Was machen die beiden?

3.) Lerne die SQL Basics (SELECT, INSERT, UPDATE, DELETE)!

4.) de.php.net, dort nach mysql_query() suchen und das verstehen!

5.) Die gelernten SQL Kenntnisse in PHP's mysql_query() anwenden, mittels einfacher Aufgabe (zb HTML Formular, welches Daten insert(et)).

Wenn du das Prinzip begriffen hast, lerne, wie Flash Variablen erstellt, verändert, übergibt.
Dann ziehe den logischen Schluß und überlege, wie man PHP und Flash kommunizieren lassen kann (PHP <--> MySQL solltest du dann ja wissen).

Und dann bau die Shoutbox.

Ansonsten empfehle ich dir, mein Tutorial wirklich Schritt für Schritt, Zeile für Zeile selbst abzuschreiben und alles was du nicht verstehst, nachzuschlagen.

de.php.net, mysql.com sowie F1 in Flash sind deine Freunde.



Yves
  Mit Zitat antworten
Alt 07-10-2004, 21:05   #9 (permalink)
...disguised
 
Benutzerbild von levelG
 
Registriert seit: Apr 2003
Ort: GHC
Beiträge: 315
Die Shoutbox funktioniert ja soweit und ich weis jetzt auch wo ich die ganze chose eingeben muss, PHPmyAdmin hab ich mittlerweile installiert. Das hast du warscheinlich falsch verstanden.
Nun nochmal zum Problem.
Wenn man seinen Text eingibt-
-senden drückt-
-"leert" sich ja das input Textfeld wieder.
Bis hierhin funktioniert das ganze. Beim allerersten mal
ist der Text (z.B. "Mein erster Test") dann auch im output Feld erschienen. Wenn ich dann, egal ob input voll oder leer, auf Senden drücke, passiert nix.
Wenn ich die Seite neu lade (refresh)--> output leer
und nachdem ich auf Senden gedrückt hab (egal ob input voll oder leer) erscheint wieder: "Mein erster Test".
Wenn ich dann wieder auf Senden drücke (egal ob input voll oder leer)passiert nix.
Es bleibt nur: "Mein erster Test" im output Feld stehen.
Allerdings zeigt mir der/die/das Table für jeden neuen gesendeten shout einen neuen Eintrag an (so wie es sein muss).
Daraus schließ ich mal das es was mit der insert.php zutun hat.
Egal. Morgen ist auch noch ein Tag. Ich hoff das krieg ich noch hin. Wow, hätt nicht gedacht das ich so "tief" in sql eintauchen muss. Naja, jetzt hab ich einmal angefangen also hör ich auch erstmal nicht wieder auf. BASTA.

Thx

levelG
__________________
Stolz ist die Leere im Herzen der Dummen! - Rantanplan

Geändert von levelG (07-10-2004 um 21:08 Uhr)
levelG ist offline   Mit Zitat antworten
Alt 07-10-2004, 21:21   #10 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Zitat:
Zitat von levelG
Die Shoutbox funktioniert ja soweit. Das hast du warscheinlich falsch verstanden. Denn wenn man seinen Text eingibt-
-senden drückt-
-"leert" sich ja das input Textfeld wieder.
Ok, das scheint korrekt zu sein.
(Hätte ich mal einen Callback eingebaut, dann wäre die Fehlersuche einfacher… hehe…)


Zitat:
Zitat von levelG
Bis hierhin funktioniert das ganze. Beim allerersten mal
ist der Text (z.B. "Mein erster Test") dann auch im output Feld erschienen.
Dann ist sowohl die query.php als auch die insert.php in Ordnung. Sonst könnte der Text nicht mittels Flash eingetragen und ausgegeben werden.

Zitat:
Zitat von levelG
Wenn ich dann, egal ob input voll oder leer, auf Senden drücke, passiert nix.
Sollte aber… auf jedenfall wenn der Input voll ist. Sehr seltsames Problem, da es beim ersten mal funktioniert!

Wenn ich die Seite neu lade (refresh)--> output leer [/QUOTE]
Du musst in den ersten Frame natürlich einmal den Aufruf der Read Funktion tätigen!
Code:
_global.dbaseOutput();
Hatte ich dir aber auch in der korrigierten Fla eingebaut und deutlich kommentiert

Zitat:
Zitat von levelG
und nachdem ich auf Senden gedrückt hab (egal ob input voll oder leer) erscheint wieder: "Mein erster Test".
Ja, klar, weil die Input Funktion onLoad die Output Funktion aufruft!


Zitat:
Zitat von levelG
Wenn ich dann wieder auf Senden drücke (egal ob input voll oder leer)passiert nix.
Es bleibt nur: "Mein erster Test" im output Feld stehen.
Logisch. Wenn das Inputfeld leer ist, wird auch nix in die dbase eingetragen.

Siehe insert.php
PHP-Code:
if(!empty($_POST['content'])) //: nur wenn Variable nicht leer ist!
****{ 
****
$timestamp=date('d.m.Y / h:i:s A'); 
****
$text=utf8_decode($_POST['content']); 
****
mysql_db_query($db_dbase,"insert into $db_tab (time,text) VALUES ('$timestamp','$text')"); 
****} 
Zitat:
Zitat von levelG
Allerdings zeigt mir der/die/das Table für jeden neuen gesendeten shout einen neuen Eintrag an (so wie es sein muss).
Wenn das Inputfeld voll war und sich nach Absenden geleert hat, ist ein MySQL Eintrag erfolgt. Dann wird das ganze auch erneut aufgerufen. So ists richtig.

Zitat:
Zitat von levelG
Daraus schließ ich mal das es was mit der insert.php zutun hat.
Falsch!

Ich nehme einfach mal an, das das Senden eines leeren Forms dein Problem ist.
Du kannst sowohl Senden, als auch Auslesen. Die PHP Dateien sind in Ordnung.
Schreibe jetzt noch den o.g. Hinweis zum erstmaligen Aufruf des Ganzen in den ersten Frame (nicht in den Preloader–…sollte ich vielleicht dazusagen )…


Zitat:
Zitat von levelG
Egal. Morgen ist auch noch ein Tag. Ich hoff das krieg ich noch hin. Wow, hätt nicht gedacht das ich so "tief" in sql eintauchen muss.
Du solltest schon mal ein wenig Grundlagen lernen… sonst wirst du immer wieder vor solchen Problemen stehen!

Zitat:
Zitat von levelG
Naja, jetzt hab ich einmal angefangen also hör ich auch erstmal nicht wieder auf. BASTA.
Naja… am besten, du machst das Tutorial mal ganz ruhig von Anfang an und versuchst, auch alles zu verstehen, was da steht.

Yves
  Mit Zitat antworten
Alt 08-10-2004, 10:10   #11 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Beiträge: 25
Hallo,
ich habe auch eine Frage bezüglich des Tutorials.
Ich habe die Abfrage per PHP gemacht und diese klappt einwandfrei
Was ich allerdings nicht ganz verstehe ist, wenn ich dann in Flash per Actionscript die Daten aus der query.php auslese, in welcher Variable werden diese gespeichert?
Wenn ich z.B. eine Textbox mit dynamischem Text mache, welche Variable muss ich dieser zuweisen, damit die Abfrage aus query.php in ihr erscheint?

Vielen Dank & Gruss
OnTheRun ist offline   Mit Zitat antworten
Alt 08-10-2004, 13:23   #12 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Zitat:
Zitat von OnTheRun
Was ich allerdings nicht ganz verstehe ist, wenn ich dann in Flash per Actionscript die Daten aus der query.php auslese, in welcher Variable werden diese gespeichert?
Das LoadVars Objekt liest die query.php aus. Und dort ist nur ein einziger echo Befehl…
PHP-Code:
echo '&output='.$result
Die Variable heisst also „output“. Und da diese in das loadvars Objekt eingelesen wird, heisst sie innerhalb dieses Objektes „this.output“ oder auch read.output.

Siehe aber auch in der AS Funktion…
PHP-Code:
_root.output.htmlText=this.output.split('\r\n').join('\r'); 
Zitat:
Zitat von OnTheRun
Wenn ich z.B. eine Textbox mit dynamischem Text mache, welche Variable muss ich dieser zuweisen, damit die Abfrage aus query.php in ihr erscheint?
Logischerweise innerhalb des loadVars „this.output“. Allerdings ist es (in diesem Fall) besser, der Textfeldinstanz defacto Text zuzuweisen, als eine Variable für dieses zu definieren…

PHP-Code:
_root.output.htmlText=this.output.split('\r\n').join('\r'); 
Das Textfeld liegt also im _root und hat den Instanznamen „output“.

Liegt das Textfeld in zb. _level200.timbuktu, dann

PHP-Code:
_level200.timbuktu.htmlText=this.output.split('\r\n').join('\r'); 


Yves
  Mit Zitat antworten
Alt 08-10-2004, 13:56   #13 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Beiträge: 25
Hallo, vielen Dank für deine Antwort!
Also ich habe nun ein Textfeld erstellt und dieses in eine Grafik mit dem Namen output umgewandelt.
Somit sollte der Output meiner PHP-Datei nun dort erscheinen oder?
Muss ich vorher noch eine Funktion oder etwas aufrufen?

Edit: ich habe nun mal die Funktion weggelassen und es per Trace versucht. Ich erhalte folgenden Output:

Code:
Variable aus PHP angekommen:
'.$res;

?>
Soweit so gut, allerdings erscheint dieser Output nicht in meinem Textfeld.
Wieso dies?

Vielen Dank & Gruss

Geändert von OnTheRun (08-10-2004 um 14:04 Uhr)
OnTheRun ist offline   Mit Zitat antworten
Alt 08-10-2004, 14:11   #14 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Zitat:
Zitat von OnTheRun
Hallo, vielen Dank für deine Antwort!
Also ich habe nun ein Textfeld erstellt und dieses in eine Grafik mit dem Namen output umgewandelt.
Somit sollte der Output meiner PHP-Datei nun dort erscheinen oder?
Muss ich vorher noch eine Funktion oder etwas aufrufen?
Paaaaaaaanik!



Was soll denn eine Grafik mit dem Text, hm?
Was ist, wenn in dieser Grafik mehrere Textfelder wären, wer bekommt dann den Text?
Man kann einem Textfeld auch einen Instanznamen geben!

Zitat:
Zitat von 409Coffeemaker, letzes Posting, bezugnehmen auf das Tutorial ;)
Das Textfeld liegt also im _root und hat den Instanznamen „output“.
Du kannst es auch „lustiger_text“ nennen… wenn es dann im _root liegt, heisst der Pfad eben _root.lustiger_text . Wenn du nun den Text innerhalb dieses Textfeldes ansprechen möchtest, heisst das ganze _root.lustiger_text.text… soll HTML zum Einsatz kommen heisst es _root.lustiger_text.htmlText


Sorry… ich muss weg… und ich komm nicht mehr wieder…


Yves
  Mit Zitat antworten
Alt 08-10-2004, 14:19   #15 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Schau mal den Screeny…


Yves
Angehängte Grafiken
Dateityp: jpg screen.jpg (32,0 KB, 98x aufgerufen)
  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 09:35 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele