Avatar billede funkylezzz Praktikant
17. januar 2010 - 11:59 Der er 11 kommentarer og
1 løsning

Rate script.

Hej jeg roder lidt med et rate script.
scriptet viser først siden hvor du skal stemme og bagefter viser den resultaterne når du har stemt.
Men jeg vil gerne have at den viser begge dele på en gang så folk ikke bare stemmer for at se resultaterne.

Er der nogen så ved hvordan jeg ændre koden?:

<?php
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
<head>
  <title>Micro Rate</title>
  <link href="style.css" rel="stylesheet" type="text/css" />
    <style type="text/css">
#main {
    height: 30px;
    width: 80px;
}
</style>
</head>
<body>
  <div id="main">
   
    <?php if ( (!isset($_POST['submit'])) ) { ?>
        <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            <table align="left" style="width: 80px; background-color: #FFFFFF;">
              <tr>
                <td style="width: 32px; height: 15px;">
                <select name="rate" style="font-size: 9px; width: 32px; height: 15px;">
              <?php for ($i = 1; $i <= 5; $i++) { echo "<option value=\"$i\">$i</option>"; } ?>
      </select></td><td align="center" style="width: 48px; height: 15px;"><input type="submit" value="Rate it!" name="submit"/></td></tr>             
            </table>
      </form>
      <?php } else  {
            $rate = isset ($_POST['rate']) ? $_POST['rate'] : 0;
            $filename = "ratings";
            $alreadyRated = false;
            $totalRates = 0;
            $totalPoints = 0;
                       
            $ip = getenv('REMOTE_ADDR');
            $oldResults = file('results/'.$filename.'.txt');
            foreach ($oldResults as $value) {
                $oneRate = explode(':',$value);
                if ($ip == $oneRate[0]) $alreadyRated = true;     
                $totalRates++;
                $totalPoints += $oneRate[1];
            }

            if ((!$alreadyRated) && ($rate > 0)){           
              $f = fopen('results/'.$filename.".txt","a+");       
              fwrite($f,$ip.':'.$rate."\n");
              fclose($f);
              $totalRates++;
              $totalPoints+=$rate;
            }
           
?>         
      <div id="result">
     
<?php 
     
      for ($i=0;$i<round(($totalPoints/$totalRates),0);$i++){
          echo "<img src='style/star.png' style='float: left' />";
      }
echo "</div>";     
      } ?>       
    <div id="source"></div>
  </div>
</body>
Avatar billede Slettet bruger
17. januar 2010 - 12:12 #1
Dette her er vist den letteste måde at gøre det på:

<?php
$filename = "ratings";
$alreadyRated = false;
$totalRates = 0;
$totalPoints = 0;

$ip = getenv('REMOTE_ADDR');
$oldResults = file('results/'.$filename.'.txt');
foreach ($oldResults as $value) {
    $oneRate = explode(':',$value);
    if ($ip == $oneRate[0]) $alreadyRated = true;   
    $totalRates++;
    $totalPoints += $oneRate[1];
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
<head>
  <title>Micro Rate</title>
  <link href="style.css" rel="stylesheet" type="text/css" />
    <style type="text/css">
#main {
    height: 30px;
    width: 80px;
}
</style>
</head>
<body>
  <div id="main">
 
    <?php if ( (!isset($_POST['submit'])) ) { ?>
        <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            <table align="left" style="width: 80px; background-color: #FFFFFF;">
              <tr>
                <td style="width: 32px; height: 15px;">
                <select name="rate" style="font-size: 9px; width: 32px; height: 15px;">
              <?php for ($i = 1; $i <= 5; $i++) { echo "<option value=\"$i\">$i</option>"; } ?>
      </select></td><td align="center" style="width: 48px; height: 15px;"><input type="submit" value="Rate it!" name="submit"/></td></tr>           
            </table>
      </form>
      <?php } else  {
          $rate = isset ($_POST['rate']) ? $_POST['rate'] : 0;

          if ((!$alreadyRated) && ($rate > 0)){         
            $f = fopen('results/'.$filename.".txt","a+");     
            fwrite($f,$ip.':'.$rate."\n");
            fclose($f);
            $totalRates++;
            $totalPoints+=$rate;
          }
      }
      ?>       
      <div id="result">
      <?php
      for ($i=0;$i<round(($totalPoints/$totalRates),0);$i++){
          echo "<img src='style/star.png' style='float: left' />";
      }
      ?>
      </div>
    <div id="source"></div>
  </div>
</body>
Avatar billede funkylezzz Praktikant
17. januar 2010 - 12:22 #2
Det har ikke ændret problemet.
Avatar billede funkylezzz Praktikant
17. januar 2010 - 12:42 #3
Giver 500 point for et hurtig svar.
Avatar billede Slettet bruger
17. januar 2010 - 12:50 #4
Besynderligt. Det burde virke.

Hvad sker der på din computer? Viser den stadig først vurderingen efter at brugeren har stemt?

Desuden kan du, ifølge eksperten.dk's brugerbetingelser, ikke give flere point end 200.
Avatar billede funkylezzz Praktikant
17. januar 2010 - 12:53 #5
sorry det var jeg ikke klar over.
Kan  jeg sende dig et link?
Avatar billede funkylezzz Praktikant
17. januar 2010 - 13:13 #6
Øh sådan efter 15 min så virker det...
Jubiiiiii.
Mange tak.
Du får lige 200 point
Avatar billede Slettet bruger
17. januar 2010 - 13:21 #7
Jamen, jeg er da glad for at du fik det til at virke :)
Avatar billede funkylezzz Praktikant
17. januar 2010 - 13:26 #8
hvorfor kan jeg ikke give dig 200 point?
Jeg kan ikke ændre point
Avatar billede Slettet bruger
17. januar 2010 - 13:48 #9
Det kan man ikke her på Eksperten.dk
Eksperten.dk's FAQ omhandler også point:
http://www.eksperten.dk/faq#faq-5-3

For at opsummere, hvis du ønsker at give mig flere point, opretter du er nyt spørgsmål med navnet "Point til Kimsey0", og indsætter der et link til dette spørgsmål.
Avatar billede funkylezzz Praktikant
17. januar 2010 - 13:53 #10
Er gjort.
Avatar billede Slettet bruger
17. januar 2010 - 15:32 #11
Tak for point.
Avatar billede funkylezzz Praktikant
17. januar 2010 - 17:11 #12
Lukker
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