Avatar billede the-exterminator Nybegynder
27. oktober 2007 - 09:21 Der er 23 kommentarer og
1 løsning

Stars rating, ligesom imdb

Hejsa Experten.
Jeg trækker nogen dataer fra imdb der bliver smidt i en database, min rating table tar dem som fx. 6.3/10 fra imdb.
Men kunne godt tænke mig at få en star rating på ligesom imdb selv har. Nogen der sådan lige ved hvordan man gør det. ???
Skal lige siges at min side er bygget op i class.
Avatar billede the-exterminator Nybegynder
27. oktober 2007 - 09:25 #1
SKal lige siges at folk IKKE skal kunne rate. Den skal tage det fra databasen og lave stjerne ud fra det som er fast i databasen
Avatar billede zurekk Nybegynder
27. oktober 2007 - 10:27 #2
Du siger vel bare:

$rating = round( #DIN RATING# );
for( $i=0; $i<$rating; $i++ )
echo '<img src="stjerne.gif" />';

for( $i=0; $i<(10-$rating); $i++ )
echo '<img src="stjerne_opac.gif" />';


Oder was?
Avatar billede the-exterminator Nybegynder
27. oktober 2007 - 10:55 #3
Jo, det var jo nemt nok, men den laver det til hele stjerner, når der står 6.3/10 så skal den 7. stjerne værer en lille smule farvedet osse jo.
Avatar billede the-exterminator Nybegynder
27. oktober 2007 - 11:02 #4
Den ser sådan her ud nu, og det virker, bort set fra at den ikke farver den sidste del af stjernen når den hedder 6,3. Den farver kun 6 stjerner, men skal osse farve lidt i den 7.
                <tr>
                  <td><strong>Rating </strong></td>
                  <td><?php print $movie->rating; ?>
          <?php $rating = round($movie->rating);
                for( $i=0; $i<$rating; $i++ )
                print '<img src="img/rating_orange.gif" />';
                for( $i=0; $i<(10-$rating); $i++ )
                echo '<img src="img/rating_grey.gif" />';
          ?>
                  </td>
                </tr>
Avatar billede zurekk Nybegynder
27. oktober 2007 - 11:48 #5
Well.. Så skal du jo til at lave alle stjernerne.

Imdb. har desuden ikke decimal-stjerner(eller hvad man nu vil kalde dem :o)), men runder bare op/ned til nærmeste stjerne, andet er bare besværligt, og unødig brug af ressourcer - in my humble opinion of course.
Avatar billede the-exterminator Nybegynder
27. oktober 2007 - 11:56 #6
imdb bruger osse halve stjerner til at farve lægge den 7. stjerne med fx. 6,3
er godt klar over at det er noget css styring eller direkte kode med nogen udregninger, kan bare ikke hitte ud af det. IMDB bruger css'en til det.
Avatar billede nielle Nybegynder
27. oktober 2007 - 12:09 #7
En skitse til en løsning:

1) Lav to stykker grafik:

En gif med 10 grå stjerner ved siden af hinanden.
En gif med 10 gykdne stjerner ved siden af hinanden.

De skal være tilpasset sådan at den ene kan lægges direkte oven på den anden.

2) Opret en tabel med to celler. Nulstil alt hvad der hedder cellspacing og -padding.

3) Sæt de grå stjerner som baggrund til tabellen. Tabellen skal i øvrigt have samme width som giffen.

4) Sæt width af første celle sådan at den svarer til 6.3/10 af tabellens width.

5) Sæt en div ind i den første celle og sæt "overflow: hidden" på denne.

6) Sæt de gyldne stjerner ind i denne.

Tabellen skulle nu vise de grå stjerner i deres fulde længde (10 stk.). Da de grå er baggrund bliver de gyldne stjerner placeret oven på dem. Antallet af gyldne stjerner, der er synlige, begrænses af bredden på den første tabel.
Avatar billede zurekk Nybegynder
27. oktober 2007 - 12:12 #8
Ahh ja okay.. Det lagde jeg ikke mærke til.

Jeg har ingen erfaring med det, så det er rent gæt.
Men kan du ikke gøre sådan her:

$stars = 'stars.gif'; // Farvede stjerner.
$bg = 'stars_bg.gif'; // Baggrunds stjerner.

list( $width, $height ) = getimagesize( $stars );

$ratewidth = ( $width/100 )*$rate; //Rate er så din rate fra databasen.

echo '<div style="background:url( \'' . $bg . '\' );width:' . $width . 'px;height:' . $height . 'px;">';
echo '<div style="background:url( \'' . $starts . '\' );width:' . $ratewidth . 'px;height:' . $height . 'px;"></div>';
echo '</div>';



Jeg ved ikke om det vil virke, tror det, men vend evt. tilbage med fejl, det er skrevet i exp's comment formel, så det kan gøres 1000 gange pænere, men lads os lige få det til at virke først :-)
Avatar billede the-exterminator Nybegynder
27. oktober 2007 - 12:19 #9
Zurekk >> hvordan får jeg den lige til at passe ind med. Blev lige tabt der.
<strong>Rating </strong>
    <?php print $movie->rating; ?>&nbsp;&nbsp;
          <?php $rating = round($movie->rating);
                for( $i=0; $i<$rating; $i++ )
                print '<img src="img/rating_orange.gif" />';
                for( $i=0; $i<(10-$rating); $i++ )
                print '<img src="img/rating_grey.gif" />';
          ?>
Avatar billede zurekk Nybegynder
27. oktober 2007 - 12:27 #10
Du skal ikke bruge det tidligere script :D

stars.gif skal være 10 stjerner i ét billede.
stars_bg.gif skal være ovenstående billede bare hvor de alle er grå - altså baggrunden :-)
Avatar billede the-exterminator Nybegynder
27. oktober 2007 - 13:02 #11
så begge billedere skal være 10 stjerner, en med grå og en med orange. Er det det du mener ??
Avatar billede the-exterminator Nybegynder
27. oktober 2007 - 13:19 #12
Denne kode bruger jeg.
<?php
  $stars = 'img/front.gif'; // Farvede stjerner.
  $bg = 'img/back.gif'; // Baggrunds stjerner.

  list( $width, $height ) = getimagesize( $stars );

  $ratewidth = ( $width/100 )*$movie->rating; //Rate er så din rate fra databasen.

  echo '<div style="background:url( \'' . $bg . '\' );width:' . $width . 'px;height:' . $height . 'px;">';
  echo '<div style="background:url( \'' . $starts . '\' );width:' . $ratewidth . 'px;height:' . $height . 'px;"></div>';
  echo '</div>';
?>

Den kommer kun med baggrunden, og det gør den i 4½ linje nedaf.
Avatar billede the-exterminator Nybegynder
27. oktober 2007 - 13:20 #13
undskyld 2½ linje nedaf laver den baggrunds billedet, men front billedet kommer slet ikke på
Avatar billede the-exterminator Nybegynder
27. oktober 2007 - 13:22 #14
Har fundet de 2 billedere her
front.gif = http://www.romguy.com/images/stars/10star.gif
back.gif = http://www.applianceplanet.co.uk/eshop/img/10stars.gif
de begge er 120x12
Avatar billede the-exterminator Nybegynder
27. oktober 2007 - 13:49 #15
Okay. den nye kode sersådan her ud:
<?php
  $stars = 'img/rating_orange.gif'; // Farvede stjerner.
  $bg = 'img/rating_grey.gif'; // Baggrunds stjerner.

  list( $width, $height ) = getimagesize( $stars );

  $ratewidth = ( $width/100 )* $movie->rating; //Rate er så din rate fra databasen.

  print '<div style="background:url( \'' . $bg . '\' );width:' . $width . 'px;height:' . $height . 'px;">';
  print '<div style="background:url( \'' . $stars . '\' );width:' . $ratewidth . 'px;height:' . $height . 'px;"></div>';
  print '</div>';
?>

Men den laver 3 rækker stjerner under hianden. Og en rate på 5,8/10 makere den kun 2½ stjerne.
Avatar billede zurekk Nybegynder
27. oktober 2007 - 14:57 #16
Prøver lige at lave en, vender lige tilbage efter :D
Avatar billede zurekk Nybegynder
27. oktober 2007 - 15:05 #17
$stars = 'http://www.romguy.com/images/stars/10star.gif'; // Farvede stjerner.
  $bg = 'http://www.applianceplanet.co.uk/eshop/img/10stars.gif'; // Baggrunds stjerner.

  list( $width, $height ) = getimagesize( $stars );

  $ratewidth = round( ( $width/100 )*( $movie->rating*10 ) );

  print '<div style="background:url( \'' . $bg . '\' );width:' . $width . 'px;height:' . $height . 'px;">';
  print '<div style="background:url( \'' . $stars . '\' );width:' . $ratewidth . 'px;height:' . $height . 'px;"></div>';
  print '</div>';



Den kode virker fint hos mig.
Avatar billede zurekk Nybegynder
27. oktober 2007 - 15:06 #18
Du kan se den her:
http://mmkay.dk/start.php
Avatar billede the-exterminator Nybegynder
27. oktober 2007 - 16:56 #19
Ja den virker, bortset fra fra at den laver 1½ linje ned af med stjerner
Avatar billede the-exterminator Nybegynder
27. oktober 2007 - 17:01 #20
Hmmm, din kode laver så 3 rækker nedaf med stjerner her.
Avatar billede gf Nybegynder
28. oktober 2007 - 00:49 #21
Hej

Her er en du kan downloade, det er godt nok java script / ajax

http://www.masugadesign.com/the-lab/scripts/unobtrusive-ajax-star-rating-bar/

mvh gf
Avatar billede the-exterminator Nybegynder
13. november 2008 - 10:32 #22
fandt selv løsninen, og ingen af dem her virker.
Avatar billede nielle Nybegynder
17. november 2008 - 21:05 #23
Hvordan kom den så til at se ud?
Avatar billede the-exterminator Nybegynder
17. november 2008 - 23:05 #24
Nielle :
Php fil :
          <?php if ($rating_position == $SHOW_RATING_IN_TABLE){ ?>
                <tr>
                  <td valign="top"><strong>Rating</strong></td>
                  <td>
                          <span class="rating">
                          <span style="width: <?php print $rating_width; ?>px; display:block;">&nbsp;</span>
                          </span><?php if ($movie->votes != "") print  $movie->votes . " votes"; ?>
                  </td>
                </tr>
        <? } ?>

CSS fil :
.rating{
  width: <?php print $rating_image_width_px * $rating_number_of_stars; ?>px;
  height: <?php print $rating_image_height_px; ?>px;
  background-image: url(img/rating_grey.gif);
  background-repeat: repeat-x;
  display: block;
}
.rating span{
  height: <?php print $rating_image_height_px; ?>px;
  background-image: url(img/rating_orange.gif);
  background-repeat: repeat-x;
}
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