Avatar billede brink99 Nybegynder
28. marts 2005 - 19:34 Der er 23 kommentarer og
1 løsning

Bileder fra Mysql ind i flash

Hej i nørder derude, jeg har brug for lidt hjælp...

Jeg har en MySQL database med en tabel der hedder contacts, som indeholder 7 rækker hvoraf den ene er en sti til et billede f.eks mig.jpg.

på nuhværende tidspunkt er der kun 3 billeder i databasen, men der vil komme mange flere.

disse billeder vil jeg gerne have ind i flash via php, i et MC der hedder picholder, på en sådan måde at hvis der bliver opdateret i databasen vil det blive opdateret på sitet.

det er lykkeds mig at få tekst ind på den måde men billederne vil simpelt hen ikke.

Venlig hilsen
brink
Avatar billede _k Nybegynder
29. marts 2005 - 12:26 #1
Smid koden hvor du henter tekst (og billeder) ind i Flash.
Avatar billede brink99 Nybegynder
29. marts 2005 - 22:00 #2
Dette er mit php script der er lidt rest kode fra noget andet men det skulle ikke have noget at sige.

<?php
mysql_connect("xxxxx","xxxxx","");
mysql_select_db("adressebog");

$qr = mysql_query("SELECT * FROM contacts");

// start output string with number of entries
$nrows = mysql_num_rows($qr);
$rString = "n=".$nrows;

for ($i=0; $i < $nrows; $i++) {
    $row = mysql_fetch_array($qr);
    $rString .= "&lastName".$i."=".$row['lastName']."&firstName".$i."=".$row['firstName'];
    $rString .= "&phone".$i."=".$row['phone']."&email".$i."=".$row['email'];
    $rString .= "&picFile".$i."=".$row['picFile']."&caption".$i."=".$row['caption'];
}
echo $rString;
?>



dette ligger på en knap i flash

on (release) {
    _root.showContentstor();
    noget.sendAndLoad("Stor_textReturn.php",noget,"POST");
}



dette ligger i frame 1

var noget = new LoadVars();
noget.onLoad = showContentstor;

function showContentstor() {
    var i;
    content.htmlText = "";
    for (i=0; i < this.n; i++) {
        content.htmlText += "<b>" + this["firstName"+i] + " " + this["lastName"+i] + "</b><br>";
        content.htmlText += "&nbsp;&nbsp;" + this["phone"+i] + "<br>";
        content.htmlText += "&nbsp;&nbsp;<a href='mailto:" + this["email"+i] + "'>" + this["email"+i] + "</a><br><br>";
    }
}
stop();

jeg vil gerne have en knap mere bare hvor billederne bliver loadet ind i mit MC picholder eller gerne i hver sit MC.

/brink
Avatar billede _k Nybegynder
29. marts 2005 - 22:10 #3
Hvad sker der, hvis du sætter den her linje ind i din sidste for-løkke:

trace("Billedfil nr" + i + ": " + this["picFile" + i]);

Hvis den outputter nogle billednavne, kan du bruge noget loadMovie i stedet for trace.
Avatar billede brink99 Nybegynder
30. marts 2005 - 15:52 #4
Det gør den selvfølgelig ikke da jeg er nød til at køre den i en browser og der virker trace ikke.
Avatar billede _k Nybegynder
30. marts 2005 - 15:53 #5
Så kør den i Flash i stedet ;o)
Avatar billede brink99 Nybegynder
30. marts 2005 - 15:58 #6
det har jeg prøvet men der kan den ikke snakke direkte med databasen. så der kommer mare til at snakke Output: billedfil nr:
Avatar billede brink99 Nybegynder
30. marts 2005 - 15:59 #7
prøver lige igen

det har jeg prøvet men der kan den ikke snakke direkte med databasen. så der kommer mere til at stå Output: billedfil nr:
Avatar billede _k Nybegynder
30. marts 2005 - 16:04 #8
Hvis du har fået Flash til at snakke direkte med databasen, skal du nok kontakte Macromedia, som så står klar med en milionkontrakt til dig ;o)

Du skal bare kalde den specifikke url i stedet for den relative på det php-dokument du henter ind. Altså:  noget.sendAndLoad("http://www.domænenavn.dk*/Stor_textReturn.php",noget,"POST");
Avatar billede brink99 Nybegynder
30. marts 2005 - 16:48 #9
Nu har jeg lavet en ny knap med denne kode
on (release) {
    _root.showContentpicholder();
    noget.sendAndLoad("http://localhost/flash%20php%20mysql/stor_textReturn.php",noget,"POST");
}

og en ny function.
var pic = new LoadVars();
pic.onLoad = showContentpicholder;
function showContentpicholder() {
    var i;
    for (i=0; i<this.n; i++) {
        picHolder += "<b>"+this["picFile"+i]+"</b><br>";
    }
}

men det virker ikke snøft...

har prøvet trace igen men det skriver det samme som før.
Avatar billede brink99 Nybegynder
30. marts 2005 - 16:57 #10
Knappen ser selvfølgelig sådan her ud
on (release) {
    _root.showContentpicholder();
    pic.sendAndLoad("http://localhost/flash%20php%20mysql/stor_textReturn.php",pic,"POST");
}

er det foresten nok at skrive mig.jpg i databasen eller skal der mere til
Avatar billede _k Nybegynder
30. marts 2005 - 20:23 #11
Jeg ved ikke helt hvad du vil med: picHolder += "<b>"+this["picFile"+i]+"</b><br>"; ?

Din adresse ser også lidt mistænkeligt ud. %20 indikerer at du har mellemrum i et biblioteksnavn, hvilket er skidt praksis.

Hvad er det præcis der bliver tracet ud?
Avatar billede brink99 Nybegynder
31. marts 2005 - 11:00 #12
når jeg skriver trace("Billedfil nr" + i + ": " + this["picFile" + i]); skriveer den tilbage Billedfil nr: og ikke mere
Avatar billede _k Nybegynder
31. marts 2005 - 13:22 #13
Gør den det samme med "this["lastName"+i]" ?

Hvad udskriver din php-side hvis du kalder den udenfor Flash? Indeholder outputtet en streng der hedder noget i retning af "picFile=navnet på dit billede"?
Avatar billede brink99 Nybegynder
01. april 2005 - 20:46 #14
Min phpfil skriver som du siger "picfile=mig.jpg" og det samme med lastname firstname osv...

har prøvet det med "this["lastname"+i]" og det er det samme...
Avatar billede _k Nybegynder
02. april 2005 - 10:32 #15
Ok, vi må vist lige begynde forfra. Virker dit script i funktionen "showContentstor" du startede med at vise i spørgsmålet?

Hvis den virker, skal vi i forlængelse af den hente nogle billeder ind, ikke? Eller skal det ligge i en funktion for sig selv?

Jeg ville personligt bygge det op således, at når man alligevel henter alle variable, ville jeg også hente billeder (som du jo også gør nu). Billedstierne ligger så i dit LoadVars objekt, som du evt. kan tilgå fra andre funktioner.
Når et billede så skulle vise, ville jeg skabe et tomt mc med createEmptyMovieClip() (slå det evt. op i hjælpen), loade billedet ind i det og flytte det hen hvor det skal placeres.

Hvis du stadigvæk fatter hat af hvad jeg ævle om, så forklar endelig mere præcis hvad det er du vil, så jeg kan læne mig op af det når jeg forsøger at forklare.
Avatar billede brink99 Nybegynder
04. april 2005 - 10:23 #16
Det er helt rigtigt som du udlægger det, men jeg vil gerne have billederne ind via en function for sig selv så kan jeg altid bygge dem sammen hvis det bliver relevant.

Min function "showContentstor" virker rigtig fint, men det er desvære kun tekst.

I prinsippet er jeg ligeglad hvordan det bliver gjort bare det bliver gjort, så hvis du har en anden måde som er nemmere er det fint med mig. du er også velkommen til at lave min php om hvis det hjælper.... det jeg sider og laver nu er kun de indledende runder til mit site, jeg kan altid rette det til senere.
Avatar billede _k Nybegynder
04. april 2005 - 11:27 #17
Ok, det lyder fornuftigt.

Når du henter dine variable ind via LoadVars objektet, bliver de liggende i det. Dvs. at du fra en anden funktion sagtens kan hente dine billedstier ind når du har brug for dem - uden at hente php-dokumenter igen og igen.

Nu er jeg ret dårlig til at lege clairvoiant, så jeg ved ikke hvordan og hvornår du vil hente billederne ind. Men hvis vi er ude i, at du vil hente et billede der skal matche en tekst, kunne jeg forestille mig noget i retning af det her:

function hentBillede(nr:Number) { // nr indikerer hvilket billede der skal hentes
    this.createEmptyMovieClip("mc" + nr, this.getNextHighestDepth());
    eval("mc" + nr).loadMovie(eval("LoadVarsobjekt.pic" + nr));
    eval("mc" + nr)._x = 100; // Sætter x-positionen
    eval("mc" + nr)._y = 100; // Sætter y-positionen
}
Avatar billede brink99 Nybegynder
04. april 2005 - 12:52 #18
OK jeg er ked af det men nu er jeg helt tabt..... hvis du gider.... Hvad har jeg på min knap hvad har jeg i frame 1 og hvordan ser mit php ud nu...

har fået rodet lidt rundt i det.
Avatar billede _k Nybegynder
04. april 2005 - 13:19 #19
Tænkte det bare som en udvidelse af scriptet i frame 1. Du skulle så smide noget script på knapperne der fortæller hvilket billede de skal hente - eller et script på en knap, der automatisk tæller op eller noget i den retning.

Men hvad er det helt præci du vil lave? Fortæl bare i store træk. Er det til et galleri, en webshop eller noget helt tredje?
Avatar billede brink99 Nybegynder
04. april 2005 - 14:27 #20
OK nu er jeg startet forfra og det virker her er koden på mit php

<?php
mysql_connect("localhost","*****","*****");
mysql_select_db("adressebog");


$qr = mysql_query("SELECT * FROM contacts");

// start output string with number of entries
$nrows = mysql_num_rows($qr);
$rString = "n=".$nrows;

for ($i=0; $i < $nrows; $i++) {
    $row = mysql_fetch_array($qr);
    $rString .= "&picFile".$i."=".$row['picFile'];
}
echo $rString;
?>

"n" er selvfølgelig antal rækker og skriptet skriver sådan her

n=3&picFile0=mig.jpg&picFile1=mig.jpg&picFile2=mig.jpg

det er det samme billede i alle rækker som jeg bruger som du kan se.


Første frame i min flash ser sådan her ud

var pic = new LoadVars();
pic.onLoad = showContent;

function showContent() {
    var i;
    for (i=0; i<this.n; i++) {
        loadMovie(this["picFile"+i], _root.picHolder);
    }
}
stop();


min knap ser sådan her ud
on (release) {
    showContent();
    pic.sendAndLoad("billede.php", pic, "POST");
}

Dette virker Men du siger noget med at jeg ikke behøver at kalde mit php hvergang og jeg vil gerne have at den henter alle billederne ind i hver deres MC.
Avatar billede _k Nybegynder
04. april 2005 - 14:38 #21
Når du siger "virker", hvordan virker det så? Umiddelbart ser det ud som om alle billeder bliver loadet ind i samme mc, hvilket resultere i at du overskriver det samme billede igen og igen. Er jeg helt forkert på den?

Bruger du den funktion jeg snakkede om tidligere, kan du supplere et argument til den. Det betyder at du, når du trykker på din knap delt kan specifiere at du vil hente billede 3 ind samt at du ikke henter variablen fra php, men i stedet i det LoadVars objekt der allerede én gang har haft snablen nede i php'en.
Avatar billede brink99 Nybegynder
04. april 2005 - 16:42 #22
Jeg er ved at lave en shop.

det er rigtigt at den loader billederne ind i samme MC

har prøvet dette i frame 1 men det vil ikke helt lystre.

var pic = new LoadVars();
pic.onLoad = showContent;
function showContent() {
    noge =_root.picHolder
    i = 0;
    while (i<this.n) {
        loadMovie(this["picFile"+i], noge[i]);
        _root.picHolder.duplicateMovieClip("picHolder"+i, i);
        _root["picHolder"+i]._x = _root["picHolder"+i]._x+100;
        _root["picHolder"+i]._y = _root["picHolder"+i]._y+100;       
        i++
       
    }
}
stop();

det er "noget" der ikke er dynamisk... hvad gør jeg ved det jeg har stadig et MC på scenen der hedder picHolder
Avatar billede brink99 Nybegynder
06. april 2005 - 10:39 #23
jeg har fundet ud af det... men jeg syntes aligevel du har været meget hjælpsom selv om det ikke var helt det der blev løsningen... så hvis du skriver et svar så syntes jeg du har fortjent nogle point.

/brink
Avatar billede _k Nybegynder
06. april 2005 - 13:40 #24
Lyder godt at det virker :o) Jeg smider et svar.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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