Avatar billede zurekk Nybegynder
14. maj 2006 - 19:54 Der er 12 kommentarer og
1 løsning

Rate stjerne fejl!

Hej eksperter, jeg har dette rating script som viser resultat i stjerner.
Og det virker også fint nok.
Men når jeg sætter dem på forsiden, hvor alle lydene skal vises, går der lort i det.

http://cyberstuff.dk/1337/index.php?content=lydklip&page=front

Som i kan se vises id 2 10982742 gange, men fjerner jeg stjernerne, virker det uden problemer.

Stjerne visningen ser sådan ud:

        <?
        $rated = mysql_result($query,0,"rate");
        for ($i = 0; $i < $rated; $i++) {
            echo "<img src='graphic/_a/stjerne.gif' />";
        }

        $maxstjerner = 5;
        $resterendestjerner = $maxstjerner-$rated;

        for ($i = 0; $i < $resterendestjerner; $i++) {
            echo "<img src='graphic/_a/stjerne2.gif' />";
        }
        ?>
Avatar billede nielle Nybegynder
14. maj 2006 - 20:15 #1
Du må vist have en til loop som løber udenom det viste kode; Det er den loop den er galt med.
Avatar billede zurekk Nybegynder
14. maj 2006 - 20:20 #2
Er ikke helt med, sorry.
Avatar billede nielle Nybegynder
14. maj 2006 - 20:24 #3
De to viste loops gøre det de skal - i det konkrete tilfælde tegner den første 2 gule stjerner, og den anden tegner der resterende 3 grå stjerner.

Men dette er jo kun for *en* post; Rundt om dem, så må der være endnu en loop som sørger for at udskrive for *samtlige* poster. Det er denne ydre loop den er gal med.
Avatar billede zurekk Nybegynder
14. maj 2006 - 20:29 #4
Altså. Er mere eller mindre ny inden for PHP.
Men denne der udskriver 'samtlige' postes, må jo være min while =)

Og så vidt jeg ved er der intet galt med den. Man du kan da lige få resten af koden.

<?
$pr_side = 10;
$antal = 0;
if(empty($_GET['category'])) {
    $antal = mysql_result(mysql_query("SELECT COUNT(*) FROM lyd"),0) or die(mysql_error());
} else {
    $antal = mysql_result(mysql_query("SELECT COUNT(*) FROM lyd WHERE category = '".$_GET['category']."'"),0) or die(mysql_error());
}
    $vis_fra = (isset($_GET["visfra"]) && is_numeric($_GET["visfra"]) && $_GET["visfra"] < $antal) ? $_GET["visfra"] : 0;

if(empty($_GET['category'])) {
    $query = mysql_query("SELECT *,ROUND(rated/rates) as rate FROM lyd ORDER BY id DESC limit $vis_fra, $pr_side") or die(mysql_error());
} else {
    $query = mysql_query("SELECT *,ROUND(rated/rates) as rate FROM lyd WHERE category = '$_GET[category]' ORDER BY id DESC limit $vis_fra, $pr_side") or die(mysql_error());
}
while ($row = mysql_fetch_assoc($query)) {
$id = $_GET['id'];
?>

.....(stjerne etc.)...

<?
    }
?>
Avatar billede nielle Nybegynder
14. maj 2006 - 20:49 #5
Prøv lige at poste hele denne løkke:

while ($row = mysql_fetch_assoc($query)) {
$id = $_GET['id'];
?>

.....(stjerne etc.)...

<?
    }
?>
Avatar billede zurekk Nybegynder
14. maj 2006 - 20:59 #6
while ($row = mysql_fetch_assoc($query)) {
$id = $_GET['id'];
?>

<table border="0" width="407" height="3" cellspacing="0" cellpadding="0">
<tr>
<td height="1" width="407">
<span></span>
</td>
</tr>
</table>

<table background="graphic/_a/tabel_bg.gif" border="0" cellpadding="0" cellspacing="3" height="1" width="412">
    <tr>
        <td bgcolor="#efe6c7" height="1" valign="top" width="319">
        <span class="sizeti"><b><a href="index.php?content=lydklip&page=show&id=<? echo "$row[id]"; ?>"><? echo "$row[title]"; ?></a></b></span><br>
        <span class="brun">rated: </span>
        <?
        $rated = mysql_result($query,0,"rate");
        for ($i = 0; $i < $rated; $i++) {
            echo "<img src='graphic/_a/stjerne.gif' />";
        }

        $maxstjerner = 5;
        $resterendestjerner = $maxstjerner-$rated;

        for ($i = 0; $i < $resterendestjerner; $i++) {
            echo "<img src='graphic/_a/stjerne2.gif' />";
        }
        ?>
        <span class="brun">&nbsp;&nbsp;kategori: <b><? echo "$row[category]"; ?></b></span></td>
    </tr>
</table>
<?
    }
?>
Avatar billede nielle Nybegynder
14. maj 2006 - 21:15 #7
Prøv med dette her:

if (empty($_GET['category']))
{
    $query = mysql_query("SELECT *, ROUND(rated/rates) AS rate FROM lyd ORDER BY id DESC LIMIT $vis_fra, $pr_side") or die(mysql_error());
}
else
{
    $query = mysql_query("SELECT *, ROUND(rated/rates) AS rate FROM lyd WHERE category = '$_GET[category]' ORDER BY id DESC LIMIT $vis_fra, $pr_side") or die(mysql_error());
}

while ($row = mysql_fetch_assoc($query))
{
?>

<table border="0" width="407" height="3" cellspacing="0" cellpadding="0">
    <tr>
        <td height="1" width="407">
            <span></span>
        </td>
    </tr>
</table>

<table background="graphic/_a/tabel_bg.gif" border="0" cellpadding="0" cellspacing="3" height="1" width="412">
    <tr>
        <td bgcolor="#efe6c7" height="1" valign="top" width="319">
            <span class="sizeti"><b><a href="index.php?content=lydklip&page=show&id=<? echo $row["id"]; ?>"><? echo $row["title"]; ?></a></b></span><br>
            <span class="brun">rated: </span>
<?
    $rated = $row["rate"];
    for ($i = 0; $i < $rated; $i++)
    {
        echo "<img src='graphic/_a/stjerne.gif' />";
    }

    $maxstjerner = 5;
    $resterendestjerner = $maxstjerner-$rated;

    for ($i = 0; $i < $resterendestjerner; $i++)
    {
        echo "<img src='graphic/_a/stjerne2.gif' />";
    }
?>
            <span class="brun">&nbsp;&nbsp;kategori: <b><? echo $row["category"]; ?></b></span>
        </td>
    </tr>
</table>
<?
}
?>
Avatar billede zurekk Nybegynder
14. maj 2006 - 21:23 #8
Det hjalp sørme.
Smid et svar.
Avatar billede zurekk Nybegynder
14. maj 2006 - 21:25 #9
Men.. Jeg kan se du har smidt lidt queries oveni. Skal jeg så også fjerne mine, eller skal de bare smides istedet for min while :S?
Fordi smider jeg det istedet for min while, er der en hel masse queries, måske for mange?
Men smider jeg den istedet for det hele, så, ja. Så virker det ikke.
Avatar billede nielle Nybegynder
14. maj 2006 - 21:26 #10
Foruden en masse så rettelser var det nok primært da jeg rettede denne:

$rated = mysql_result($query,0,"rate");

- til dette:

$rated = $row["rate"];

- at fejlen blev løst. Du bør nok ikke blande mysql_result() og mysql_fetch_assoc() sammen.
Avatar billede nielle Nybegynder
14. maj 2006 - 21:27 #11
De to queries, er faktisk bare dine som jeg har formateret en smule. Du kan slette dit sæt, eller mit sæt uden nogen forskel.

... og et svar :^)
Avatar billede zurekk Nybegynder
14. maj 2006 - 21:41 #12
Ahh okay thanks ^^
Avatar billede nielle Nybegynder
14. maj 2006 - 21:46 #13
Selv tak :^)
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