Avatar billede Slettet bruger
24. oktober 2010 - 17:27 Der er 34 kommentarer og
1 løsning

Billede afhængig af værdi

Hvordan får jeg vist et billede afhængig af hvilken værdi der er lagt i databasen?

Jeg vil gerne ha vist et lille ikon ud for hver opskrift i stedet for tiden som den er skrevet i databasen. F.eks. 15 min så skal den vise 15.jpg, 30 min viser den 30.jpg osv.

Samme for personer, fryseegnet osv.
Avatar billede danco Nybegynder
24. oktober 2010 - 17:36 #1
$rs = mysql_query($sql);
$arr = mysql_fetch_array($rs);
$pic = '';
switch($arr['tid']) {
  case 15:
    $pic = '15.jpg';
    break;
    case 30:
      $pic = '30.jpg';
      break;
    case 45:
      $pic = '45.jpg';
      break;
}
echo $pic;

Det kunne være en løsning på dit tids problem.
Avatar billede kjeldsted Novice
24. oktober 2010 - 19:13 #2
Hvis der altid findes et billede for den pågældende værdi, kan du jo sådan set bare tilføje '.jpg' efter tiden.

$path = './pictures/'
$pic = $aar['tid'].'.jpg'

echo $path.$pic;

For eksempel. Hvis jeg har forstået dig problem korrekt. En anden mulighed, hvis ikke du vil have 300 forskellige billeder liggende, er at lave en PNG skabelon uden tallet, som du kan få PHP til at indsætte, så du kan få vist tiden fra tabellen lige meget om der så end stå 12 min, 32 min, 31 min eller hvad som helst.
Avatar billede Slettet bruger
24. oktober 2010 - 20:03 #3
Dit eksempel lyder som en god idé, men jeg er ikke sikker på at jeg forstår sammensætningen af det.

F.eks. laver jeg ur.png, vil php så trække tallene fra databasen og vise ved siden af?
Avatar billede kjeldsted Novice
24. oktober 2010 - 20:17 #4
Hvis det er mig du henviser til med "dit eksempel" og ikke danco, så var det jeg foreslog at du fik PHP til at lave billedet med de funktioner der nu er til dette i PHP.

Hvis du fx. vil have vist det som et ur, vil jeg foreslå at du laver urskiven, uden visere, som en png fil, hvor efter du så ved et PHP script der indsætter viserene oven på urskiven. Hvis du forstår.

Det skulle bestemt være muligt. Men det kræver jo selvfølgelig en smule matematiske udregninger idet du jo så skal udregne hældningen på hhv. minutter og timer ud fra et decimaltal.
Avatar billede kjeldsted Novice
24. oktober 2010 - 20:24 #5
Hvis du tager en kigger på http://dk2.php.net/manual/en/function.imagefilledpolygon.php kan du se hvordan man kan tegne forskellige former med PHP (der er selvfølgelig også funktioner til fx. cirkler), hvorved jeg i stedet for en sort baggrund som du kan se i det eksempel de har lavet tegner oven på den fil der i forvenen ligger på serveren at en urskive.
Avatar billede Slettet bruger
24. oktober 2010 - 20:37 #6
Jeps, det var til dig kjeldsted. Jeg har kigget lidt på det link du sendte med, og det er vist langt ud over mine evner :( Jeg kan ikke se hvor meget eller hvor lidt jeg skal have med, for at opnå det jeg gerne vil, nemlig en urskive med det tal der nu står i databasen henover.

Jeg prøvede den øverste af danco, men fik fejl i linjen
$arr = mysql_fetch_array($rs);

Og jeg kan ikke se om det er fordi der mangler et tegn eller hvad der ellers skulle ha stået. :(
Avatar billede danco Nybegynder
24. oktober 2010 - 20:44 #7
Kjeldsteds forslag er som sådan fint nok, og det er også en pæn måde at gøre tingene på, jeg synes bare at det er meget arbejde hvis der alligevel kun er 4 muligheder (15,30,45,60).
Avatar billede danco Nybegynder
24. oktober 2010 - 20:46 #8
Ja så fik jeg vist postet for tidligt her.

Det jeg ville vise dig var switch strukturen. Det andet var blot en illustration af at det blev hevet ud fra databasen.
Avatar billede Slettet bruger
24. oktober 2010 - 20:50 #9
Det optimale ville være at få lavet den del hvor der står det præcise antal minutter, men jeg er slet ikke god nok til at skrive det selv :(

Kan I være behjælpelige med det?
Avatar billede webweaver Praktikant
24. oktober 2010 - 21:00 #10
Altså skal du bare have et ur, hvor det står med tal henover, hvornår opskriften er tilføjet?

Eller skal det være et ur, hvor viseren flytter sig i forhold til tiden?

Hvis du har tiden i en database, er det jo bare at hente det ud, som alle andre data i en database. Hvilket format har du det stående i? Altså i databasen?

Hvis du kun vil have vist antal minutter, er der forskellige måder at gøre det på. Men det afhænger af formattet.
Avatar billede kjeldsted Novice
24. oktober 2010 - 21:21 #11
Altså hvis du kun skal have mulighederne 15, 30 og 45, vil det være tåbeligt med mit forslag. Det var mere henvendt hvis du både skal kunne bruge 1, 2, 3, 4, 5, 6, 7, 8, 9.......120.
Avatar billede danco Nybegynder
25. oktober 2010 - 14:23 #12
Som jeg ser det har du 2 muligheder for at slippe udenom at kode urskiven.
1. Opsætte intervaller (15,30,45,60) alt efter hvor mange muligheder du vil give brugeren, og derefter manuelt uploade billederne til serveren.

2. Udskrive tiden som ren tekst fra databasen således at der bare står: 34 min.

Som jeg umiddelbart ser der er ovennævnte 2 muligheder lige "lette" at gå til da det ikke kræver alverdens programmeringskundskaber. Og jeg vil så nok indrømme at jeg, som har programmeret gennem 4-5 år efterhånden, ville have svært ved at tegne urskiven, men det er mest af alt pga. manglende matematik kundskaber.
Avatar billede webweaver Praktikant
25. oktober 2010 - 14:51 #13
Det med urskiven kan også laves på flere forskellige måder. Også lette, men mere besværlige/uhensigtsmæssige metoder. Men så vidt jeg kan se, får du ikke meget ud af dit såkaldte ur her. Hvad kan du bruge det til? Det viser ihvertfaldt ikke hvor mange minutter siden det er at opskriften blev tilføjet. Det kan vise, hvad klokken var da det blev tilføjet. Det kunne godt laves, men ville ikke rigtig være brugbart, da der trods alt kun er 60 minutter på et ur. Hvor skulle viseren være, når det er 70 minutter efter opskriften er blevet tilføjet? Og hvis du bare ville vise klokken for hvornår det blev tilføjet, giver det heller ikke den store mening, medmindre der er dato. For ellers kan man naturligvis heller ikke se, om det fx var 14.35 i dag eller i onsdags i sidste uge...
Avatar billede kjeldsted Novice
25. oktober 2010 - 15:03 #14
Nu jeg er jo ikke tankelæser. Men jeg har på fornemmelsen at det uret skal vise er hvor lang tid opskriften ca. tager at lave.

Er dette ikke korrekt?

Og, ja. Som sagt så vil det kræve lidt matematiske beregninger for at kunne tegne usvisere i PHP, og hvis du på ingen måde har en idé om hvordan du kan udregne koordinaterne, kan det blive lidt af en kamp. Så i så fald skal du nok overveje om det er SÅ vigtigt, at det ikke laves på en nemmere måde.
Avatar billede Slettet bruger
25. oktober 2010 - 18:57 #15
Kjeldsted har ret, undskylder min evne til at forvirre.
Min tanke var at vise et ur på alle opskrifterne, det skal vise hvor lang tid det tager at tilberede opskriften. Ideen er så at markere på urskiven hvor lang tid en opskrift tager (15 min. som vist her http://anakin.dk/images/15minutes.jpg) og så fremdeles for 16, 21 og 43 min. Og tager en opskrift mere end 60 min, skal der vises et tal hen over skiven med det antal timer ud over minutterne.

Den løsning jeg har nu er lige lavet om fra vilkårligt antal minutter til forud bestemte intervaller, men jeg vil meget gerne tilbage til at man kan indtaste præcis hvor lang tid det tager, hvilket også gør søgefunktionen mere præcis.

Så hvor mange point er løsningen til det værd ;)
Avatar billede Slettet bruger
25. oktober 2010 - 19:00 #16
Webweaver: Jeg har haft tallet i det brugeren indtaster, det lavede jeg om til forud bestemte værdier, men som nævnt før, vil jeg meget gerne tilbage til skæve minuttal, og en urskive hvor det antal minutter der skal bruges, er det antal der er skraveret på skiven.
Avatar billede webweaver Praktikant
25. oktober 2010 - 20:34 #17
Ahh, det er da ikke en helt let løsning du søger var!!..
Så det må da næsten være en 200 point løsning ;P

Hyggeligt som det da er, har jeg prøvet at kigge på det til dig :) Det bliver vidst meget godt, men er ikke færdig med det endnu.

Men prøv at kigge her,
http://www.lasse-jensen.dk/eksperten/clock.php

Den kan vise et markeret område, udfra x antal minutter.

Jeg vil prøve at se, om jeg kan få et ur ind bag ved det :)
Avatar billede webweaver Praktikant
25. oktober 2010 - 21:37 #18
Voilá: http://www.lasse-jensen.dk/eksperten/clock2.php

Hvad siger du så. Noget i den stil du søger? :)
Avatar billede kjeldsted Novice
25. oktober 2010 - 22:40 #19
Så kom du mig sgu i forekøbet webweaver ;)

Nåede ikke selv at lave selve scriptet, men det sådan nogenlunde det jeg tænkte på. Men det ser da alligevel ganske fint ud :)
Avatar billede kjeldsted Novice
25. oktober 2010 - 22:44 #20
Og lige for at tilføje så kan man jo sagtens bruge det ur som PFPedersen har brugt i eksempel for så at ligge grafikken ind over dette. Og det er heller ikke et problem at lave den røde flade for halv-transplerent, så man stadig kan læse tallene under det røde.
Avatar billede Slettet bruger
26. oktober 2010 - 12:55 #21
Webweaver: Det ser rigtig godt ud
Kjeldsted: Det lyder fedt med halvtransperant så man stadig kan se tallene.

Samlet set er det lige præcis det jeg leder efter.
Avatar billede webweaver Praktikant
26. oktober 2010 - 16:21 #22
Jeps, man kan lave "det røde felt halv transperant.
Eller som jeg har gjort, og som også virker lige så godt (som I jo kan se), bare lave uret med transperant baggrund. Så PHP'en i mit script ligger faktisk bagerst med et ur henover, og ikke omvendt som, hvis det skulle være halv transperant.

Det ur jeg har brugt i løsningen, er bare et tilfældigt taget fra google, hvorefter jeg har fjernet baggrunden i det. Så kører det. Det kan sagtens gøres med det ur som der er vist her tidligere. Der er dog bare lige et MEN. Det ur som er postet her som eksempel tidligere, har visere på sig. Det vanskeliggører lige opgaven en hel del, hvis de skal flytte sig med rundt. Desuden, hvis der er visere på, viser det jo et klokkeslet og ikke antal minutter længere. Så det vil jeg måske nok fraråde. :)
Avatar billede webweaver Praktikant
26. oktober 2010 - 16:25 #23
Det var så et stopur der var linket til, så der er kun en viser.
Glem det med klokkeslet :) Men stadig mere kompliceret, hvis du vil have viseren til at flytte sig med rundt.
Avatar billede Slettet bruger
26. oktober 2010 - 17:06 #24
Rolig nu, der skal ikke være visere der flytter sig med rundt. Men noget der måske kunne være sejt var, hvis en opskrift tager f.eks. 90 min. at tilberede, at så er 1-tallet fremhævet, og 180 min så er 2-tallet fremhævet.. Hvis det er for omstændigt i forhold til det du har lavet nu, så kunne et tal i det første kvarter af skiven også gøre det.
Avatar billede webweaver Praktikant
26. oktober 2010 - 17:29 #25
Det med fremhævning af tallene, kan godt laves rimelig simpelt skulle jeg mene. Det kræver dog at du har 12 forskellige ure, hver sit med et fremhævet tal. For PHP kan ikke fremhæve et tal som sådan, da uret er et færdigt billede. Så skulle PHP smide noget tekst ud, som stod oveni det andet, så man ikke kunne se det. Men ville jeg nok ikke gøre. Ville lave det med de mange ure og så nogle if sætninger, der afgør, hvornår hvad skal vises.

Forstår dog ikke helt. 90 minutter. 1 tallet fremhæves. For at vise at det tager 1 time, og det røde bagved fylder så 30 min. Men 180 minutter og et 2 tal? Det er jo 3 timer. Skal det så vise 2 timer og 60 minutter? Hvorfor ikke bare 3 så? :)

Jeg prøver at se om jeg ikke kan få kigget på det hurtigst muligt :)
Avatar billede Slettet bruger
26. oktober 2010 - 17:51 #26
Ups, 150=2½ time ;)
Avatar billede webweaver Praktikant
28. oktober 2010 - 16:18 #27
Sorry ventetiden...

Jeg fik kigget på det, - og fik det lavet naturligvis :-)

http://www.lasse-jensen.dk/eksperten/clock2.php

Nu viser det Antal timer og den sidste timer i minutter.

Fx 180 minutter, 3 timer, vil fremtræde som 2 timer og 60 minutter.
Avatar billede Slettet bruger
28. oktober 2010 - 19:23 #28
Det ser rigtig godt ud. Hvordan får jeg så fat i det her fine ur :)
Avatar billede webweaver Praktikant
28. oktober 2010 - 21:40 #29
Lige her, for jeg poster det da bare :)

Du skal bruge 2 filer, for at lave det.
Kald dem hvad du vil :-) Jeg har døbt dem clock.php og clock2.php.

clock.php;

<?
   
    $db_database = "minDB";
    include ("../include/mysql_connect.php");
   
    $foresp = mysql_query("SELECT minutter FROM table") or die(mysql_error());

    $antalMinutter = mysql_result($foresp, 0);   
    $minuts = (360 / 60) * $antalMinutter + 270;

    $img = imagecreatetruecolor(200, 200);
   
    $bg = imagecolorallocate($img, 255, 255, 255);
    $time = imagecolorallocate($img, 0x00, 0xFF, 0x00);
   
    imagefilledrectangle($img, 0, 0, 200, 200, $bg);
    imagefilledarc($img, 100, 100, 190, 190, 270, $minuts, $time, IMG_ARC_PIE);

    header("Content-type: image/png");
    $hmm = imagepng($img);
   
    imagedestroy($img);

?>

clock2.php

<?
       
        $db_database = "minDB";
        include ("../include/mysql_connect.php");
   
        $foresp = mysql_query("SELECT minutter FROM table") or die(mysql_error());

        $antalMinutter = mysql_result($foresp, 0);
   
        for ($tal = 1; $tal <= 11; $tal++) {
           
            if ($antalMinutter / 60 > $tal) {
           
                $chooseClock = $tal;
               
            }
           
        }
       
?>

    <div style="margin: 0px; position: relative; left: 100px; top: 100px; z-index: 1">
       
        <img src="http://www.mitSite.dk/eksperten/clock.php" alt="" width="200" height="200">

    </div>
   
    <div style="margin: 0px; position: relative; left: 100px; top: -100px; z-index: 2">

        <img src="http://www.mitSite.dk/eksperten/ur<? echo $chooseClock; ?>.gif" alt="" width="200" height="200">

    </div>

Du kan hente de forskellige ure her (grafikken),
http://www.lasse-jensen.dk/eksperten/clocks.rar

Sig endelig til, hvis der er spørgsmål og når du får det til at virke :) Så jeg kan smide et svar ...
Avatar billede webweaver Praktikant
28. oktober 2010 - 21:44 #30
Og så kan jeg da lige tilføje, at systemet bare kræver et felt i databasen eller en slut-variabel, hvor der står x antal minutter.
Avatar billede Slettet bruger
29. oktober 2010 - 15:22 #31
Jeg håber på lidt tid til at rode med det lørdag :)
Avatar billede webweaver Praktikant
03. november 2010 - 14:50 #32
Har du fået det op at køre? :)
Avatar billede Slettet bruger
10. november 2010 - 21:26 #33
Ikke endnu, måske i juleferien, den smule der måtte være.

Kom til at tænke på, at størrelsen nok er lige i overkanten, det skulle jo være et ikon på 50x50 eller noget i den retning. Hvis jeg ændrer urets størrelse, vil det som koden markerer, så automatisk følge med?

Og poster du lige et svar så du kan få point?
Avatar billede webweaver Praktikant
10. november 2010 - 22:34 #34
Det ændres på billedet og det ændres i PHP koden.
PHP koden retter sig ikke selv til.

Men det er let at ændre.

$img = imagecreatetruecolor(200, 200);
Angiver PHP billedet bliver 200 x 200 px.

imagefilledrectangle($img, 0, 0, 200, 200, $bg);
Angiver også en størrelse på 200 x 200 px.

Det skal rettes til den nye størrelse samt uret (grafikken) og så kører det.

Men du kan jo også bare bruge width og height i HTML koden.
altså,

<img src="..."... width="50" height="50" alt="">...
Men om det bliver dårlig kvalitet kan være, så det andet vil være mere "korrekt".
Avatar billede webweaver Praktikant
10. november 2010 - 22:34 #35
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
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