Avatar billede webweaver Praktikant
22. september 2006 - 10:33 Der er 32 kommentarer og
1 løsning

Fra MySQL til Flash

Hej Mester :)

Var lidt i tvivl om jeg skulle poste her, eller i PHP kategorien, men jeg gjorde mit valg. Jeg har en database med en masse tekster ... Siden skal være på flere sprog og den er i Flash.

Jeg ville høre hvordan du mener det bedst laves, med hensyn til at skifte sprog. Altså bare have dansk på engelsk på .dk domænet, og engelsk på .com eller lave en eller smart funktion på en måde, så man kun skal lave sitet 1 gang.

Og så vil jeg også høre hvordan man henter teksten ud fra databasen, og få smidt det ind i flash'en i et dynamisk textfelt eller lignende?

Tak for hjælpen :)

Mvh. Lasse Jensen
Avatar billede tribalroots Nybegynder
23. september 2006 - 01:46 #1
Dette er en meget simpel login jeg på et tidspunkt lavede med flash - PHP - mySQL:

============================================================================

lvOut = new LoadVars();
lvIn = new LoadVars();
loginBtn.onRelease = function() {
    lvOut.bruger = bruger.text;
    lvOut.kode = kode.text;
    lvOut.sendAndLoad("login.php", lvIn, "POST");
};
lvIn.onLoad = function(success) {
    if (success) {
        if (lvIn.Login == 1) {
            spnum.text = lvIn.spillernummer;
            mail.text = lvIn.email;
            output.text = "succes";
        } else {
            output.text = "Access denied";
        }
    } else {
        output.text = "connection failed";
    }
};
stop();

============================================================================
Avatar billede tribalroots Nybegynder
23. september 2006 - 01:48 #2
Dette er php'en:

============================================================================
<?PHP
    //Først starter vi vores seesion og etablere herefter vores initierende variabler
    session_start();
    $db_user = 'input-dit-eget';
    $db_pass = 'input-dit-eget';
    $brugernavn = $_POST['bruger']; //Denne lagrer brugernavnet, men fordi den bliver ændret senere, gemmes brugernavnet også i $nick
    $nick = $_POST['bruger'];  //Dette er IKKE en fejl, vi bruger denne variabel til at gemme brugerens oprindelige brugernavn/nick
    $kodeord = $_POST['kode'];
    $email = $_POST['email'];
    $mail = $_POST['email']; //beregnet til at store den oprindelige mail

    //Skaber forbindelse til vores database
    $connection = mysql_connect('localhost', $db_user, $db_pass);
    mysql_select_db('tribalroots_org', $connection);
   
    $query = "SELECT brugernavn, kodeord, email FROM heffer_users";
    $result = mysql_query($query, $connection);
   
    while($dbstuff=mysql_fetch_array($result)){
    $dbbruger = $dbstuff['brugernavn'];
    $dbmail = $dbstuff['email'];
    //Vi konvertere her vores strenge til upper case letters. På denne måde undgår vi at 2 brugere skaber profiler som basicly har samme    //brugernavn. Eks: "jonas" og "JONAS" vil ikke kunne forkomme
    $dbbruger = strtoupper($dbbruger);
    $brugernavn = strtoupper($brugernavn);
    $dbmail = strtoupper($dbmail);
    $email = strtoupper($email);
}
    //Nu tester vi først om brugernavnet er taget, derefter om emailen er taget. Er ingen af dem registreret, oprettes brugeren
    if ($dbbruger == $brugernavn){
    $added=0;
    } else if ($dbmail == $email) {
    $added=1;
    } else {
    $query = "INSERT INTO heffer_users (id , brugernavn, kodeord, email) VALUES ('', '$nick', '$kodeord', '$mail')";
    mysql_query($query);
    $added=2;
    }
    echo "&added=$added&";

mysql_close();
?>
============================================================================
Avatar billede tribalroots Nybegynder
23. september 2006 - 01:49 #3
Der er garenteret massere af fejl som du bør ændre, bruger ikke selv denne model mere, men har ikke lige umiddelbart nogen anden skabelon liggende, så håber denne "dutter"!
Avatar billede webweaver Praktikant
23. september 2006 - 10:48 #4
Jeg kigger lige på det :)
Avatar billede webweaver Praktikant
23. september 2006 - 14:33 #5
Jeg tænkte egentlig på, hvorfor skal der bruges SESSION i PHP filen?

Og hvis man bare skal hente en tekst fra en database ind i Flash, kan man så bare skrive i AS;

TextIn = new LoadVars();
TextIn.load("clever_content.php", TextIn, "POST")

Og så i PHP filen, hente det ud af DB og gemme det i en variabel som hedder TextIn, og så skulle den være hjemme? Eller er det mig som ikke helt har gennemskuet systemet endnu?

Mvh. Lasse Jensen
Avatar billede webweaver Praktikant
23. september 2006 - 15:01 #6
Jeg kan umiddelbart ikke få det til at virke sådan.

Min flash fil ser således ud;

Jeg har 2 lag. Et til AS og et med et Dynamisk Textfelt, som jeg har givet Instance navn til "TextIn".

I AS laget har jeg følgende script.

TextIn = new LoadVars();
TextIn.load("clever_content.php", TextIn, "POST")
stop();

Og så har jeg en PHP fil, som hedder clever_content.php, som indeholder følgende;

<?

    $db_database = "webster_nyheder";
    include ("include/mysql_connect.php");
   
    $result = mysql_query("SELECT tekst FROM Nyheder") or die (mysql_error());
   
    while ($data = mysql_fetch_array($result)) {
    $TextIn = $data["tekst"];
    }

?>
Avatar billede webweaver Praktikant
23. september 2006 - 15:02 #7
Hov det var ikke meningen indlæget ovenover skulle postes endnu.

Men det er jeg har af filer og kode. Altså det viste ovenover.
Hvad mangler der før der kommer noget tekst hen til flash? Siden det ikke virker ...

På forhånd tak :)

Mvh. Lasse Jensen
Avatar billede tribalroots Nybegynder
23. september 2006 - 15:47 #8
Ok, du mangler nogle få ting, i flashen skal du skabe reference PHP'en til dit tekstfelt. For neden har jeg lavet de 2 koder, som du kan se henter vi alt vores data fra PHP'en via "lvIn".
I PHP'en skal du også huske at echo/print den data du ønsker sendt til flash. For at flash fatter at det er en variabel bruger vi &-tegnet (ampersand).
Prøv med disse 2 og se om det ikke skulle virke nu.
BTW, du har ret, der er reelt ikke noget behov for at starte en session i PHP'en! ;-)


==============AS=================
lvOut = new LoadVars();
lvIn = new LoadVars();
lvOut.sendAndLoad("clever_content.php", lvIn, "POST");

lvIn.onLoad = function(success) {
    if (success) {
        TextIn.text = lvIn.flashtext;
    }
}
=================================



===============PHP===============

<?PHP

    $db_database = "webster_nyheder";
    include ("include/mysql_connect.php");
 
    $result = mysql_query("SELECT tekst FROM Nyheder") or die (mysql_error());
 
    while ($data = mysql_fetch_array($result)) {
    $TextIn = $data["tekst"];
    }
    echo "&flashtext=$TextIn&";
?>
Avatar billede tribalroots Nybegynder
23. september 2006 - 15:50 #9
Oh, forøvrigt, du kan sagtens nøjes med at bruge lvIn.load, som du havde gjort foroven. Det er bare mig der sidder her og koger i ordenlig omgang influenza, er ikke superskarp! :)
Avatar billede webweaver Praktikant
23. september 2006 - 17:36 #10
Sådan det hjalp sku en del :)
Men, dog ikke helt. Det virker nu, når jeg kører det offline i Flash MX. Men lige så snart jeg smider det online på nettet, og går ind på .swf filen, så virker det ikke?
Hmm.. Så er textfeltet bare blankt.

Nogen erfaring med det?

Mvh. Lasse Jensen
Avatar billede tribalroots Nybegynder
24. september 2006 - 14:58 #11
Hmmmm, dobbelttjek evt. sti til db, navn på "Nyheder" og "tekst". Husk også at se om du skulle ha brugt store bogstaver istedet for små og omvendt! (eks: "nyheder" istedet for "Nyheder").
Avatar billede webweaver Praktikant
25. september 2006 - 10:22 #12
Sådan, nu virker det :)
Jeg ved ikke lige hvad fejlen var. Har umiddelbart ikke lige rettet i noget.
Men pyt med det, som sagt virker det :)

Jeg tænkte dog lige på, hvordan får jeg Flash til at vise æ, ø og å?
Lige så snart den støder på et af de bogstaver, stopper den med at printe resten af stringen ud.
Avatar billede tribalroots Nybegynder
25. september 2006 - 12:36 #13
System.useCodepage=true;
Avatar billede tribalroots Nybegynder
25. september 2006 - 12:48 #14
Oh, og du skal btw UTF8 encode din tekst hvis den ikke allerede er det. I PHP'en skal du bruge denne funktion: utf8_encode()
Avatar billede webweaver Praktikant
25. september 2006 - 13:56 #15
Hvor skal System.useCodepage=true; placeres henne?

Ja jeg har bare smidt utf8_encode ind like this,
$TextIn = utf8_encode($TextIn);

Går ud fra det er sådan den bruges? ...

På forhånd tak.

mvh. Lasse Jensen
Avatar billede tribalroots Nybegynder
25. september 2006 - 15:23 #16
Ser rigtigt ud!

System.useCodepage=true; skal bare placeres i den første frame!
Avatar billede webweaver Praktikant
26. september 2006 - 06:47 #17
Er det ligemeget hvor i AS i første frame det bliver smidt ind, fordi lige p.t. virker det ikke rigtig? Det gør ihvertfald ingen forskel.
Avatar billede tribalroots Nybegynder
26. september 2006 - 13:18 #18
Stort set, self. ikke lige midt inde i en funktion eller lign. Men prøv at smide den i førset frame, som den øverste linie actionscript!
Hvis det ikke virker, så prøv at smide den i starten af den kodeblok vi er kommet frem til herinde, altså:

System.useCodepage=true;
lvOut = new LoadVars();
lvIn = new LoadVars();
lvOut.sendAndLoad("clever_content.php", lvIn, "POST");

lvIn.onLoad = function(success) {
    if (success) {
        TextIn.text = lvIn.flashtext;
    }
}
Avatar billede tribalroots Nybegynder
27. september 2006 - 16:05 #19
Fået det til at virke?
Avatar billede tribalroots Nybegynder
28. september 2006 - 13:48 #20
allooo?
Avatar billede webweaver Praktikant
28. september 2006 - 14:24 #21
Nej det virker ikke.

Hvis jeg skriver;

System.useCodepage=true;
lvOut = new LoadVars();
lvIn = new LoadVars();
lvOut.sendAndLoad("clever_content.php", lvIn, "POST");

IvIn.onLoad = function(success) {
    if (success) {
        TextIn.text = IvIn.flashtext;
    }
}

Virker det slet ikke. Så kommer der ikke noget ud?

På forhånd tak :)

Mvh. Lasse Jensen
Avatar billede tribalroots Nybegynder
28. september 2006 - 15:49 #22
Ok, problemet er nok i php'en, for den streng er korrekt!
Prøv lige at smide mig php koden!
Avatar billede webweaver Praktikant
28. september 2006 - 16:54 #23
Således ser clever_content.php ud;

<?

    $db_database = "webster_diverse";
    include ("include/mysql_connect.php");
   
    $result = mysql_query("SELECT besked FROM guestbook") or die (mysql_error());
   
    while ($data = mysql_fetch_array($result)) {
    $TextIn = $data["besked"];
   
    $TextIn = utf8_encode($TextIn);
       
    }
   
    echo "&flashtext=$TextIn&";

?>

Kan ikke lige se fejlen.

Men faktum er at nu kan jeg slet ikke få det til at virke. Heller ikke på den anden måde, hvor det virkede halvt. Nu er textfeltet bare blankt. Hmm.. ;S

Mvh. Lasse Jensen
Avatar billede tribalroots Nybegynder
28. september 2006 - 21:41 #24
hmmm, ok, når du henter fra besked, så er det i et array! Hvis du skal sende en bestemt besked tilbage til flashen skal du først skrive hvilken en, eksempelvis:

echo "&flashtext=$TextIn[0]&";

Som du kan se foroven, jeg har tilføjet "[0]" for at indikere at det er den første besked du ønsker at sende!
Avatar billede webweaver Praktikant
29. september 2006 - 00:19 #25
Det virkede da ellers fint nok før, uden id angivelsen.
Når man har sin echo uden for while sætningen, henter/printer den kun den nyeste besked ud fra DB. Nå men jeg prøver lige det som du foreslår.
Avatar billede webweaver Praktikant
29. september 2006 - 00:31 #26
Det gør ingen forskel. Jeg kan simpelthen slet ikke få den til at vise noget mere.
Meget mystisk og irriterende. Hvorfor hulen vil den ikke nu. Argh..
Avatar billede tribalroots Nybegynder
29. september 2006 - 00:50 #27
Hmmm, know what! Imorgen prøver jeg selv lige at stykke det hele sammen, så må jeg se om jeg kan finde løsningen den vej!
Avatar billede webweaver Praktikant
29. september 2006 - 09:55 #28
Ja det kunne da være dejligt. Jeg har selv prøvet at lave det hele forfra, men det virker sku stadig ikke.
Avatar billede tribalroots Nybegynder
29. september 2006 - 18:54 #29
Dude, beklager, er blevet forhindret idag, men tager i kigger på det imorgen istedet!
Avatar billede tribalroots Nybegynder
30. september 2006 - 14:25 #30
Ok, grineren nok!
Har fundet 1 seriøs fejl i flashen:

forkert:  IvIn.flashtext;
korrekt:  lvIn.flashtext;

Som du kan se har du skrevet stort i istedet for lille L!
Avatar billede tribalroots Nybegynder
30. september 2006 - 14:28 #31
Skulle det stadig ikke virke, så prøv med følgende koder, de virker for mig:

=============================FLASH==================================
System.useCodepage = true;
lvIn = new LoadVars();
lvIn.onLoad = function(success) {
    if (success) {
        _root.TextIn.text = lvIn.flashtext;
    } else {
        _root.TextIn.text = "fejl";
    }
};
// vi benytter uniq til at mindske chancen for at IE
// ikke bare hiver tidl. data fra cachen!
lvIn.load("clever_content.php?uniq"+random(99999));
stop();

====================================================================
Den ovenstående flashkode skal placeres i den frame hvori du ønsker at loade din data ind.


==============================PHP===================================
<?PHP

    $db_user = 'dit_brugernavn';
    $db_pass = 'din_kode';
   
    //Skaber forbindelse til vores database 
    $connection = mysql_connect('localhost', $db_user, $db_pass);   
    mysql_select_db('din_database', $connection);   

    $query = "SELECT besked FROM guestbook";   
    $result = mysql_query($query, $connection);       

    while($dbstuff=mysql_fetch_array($result)){ 
          $TextIn = $dbstuff['besked']; 
         
          $TextIn = utf8_encode($TextIn);


}
    echo "&flashtext=$TextIn&";

?>
====================================================================
Avatar billede webweaver Praktikant
01. oktober 2006 - 15:56 #32
Tak for bug-searching. Det var self. den forkerte variabel som gjorde udslaget. Nu har jeg igen input i feltet :) Jeg havde dog stadig det samme problem med æ, ø og å. Men det har jeg nu løst ved at lave et array som erstatter aelig med æ og så videre.. Nu virker det helt fint :)

Mange tak for din hjælp :D Smid et svar, så du kan få dine point :D

Mvh. Lasse Jensen
Avatar billede tribalroots Nybegynder
01. oktober 2006 - 16:37 #33
Det lyder godt! =)

Pingeling!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester