Avatar billede tizian Nybegynder
26. januar 2006 - 22:19 Der er 6 kommentarer og
1 løsning

Antal visninger / Oprettelse af række

Jeg har en masse billeder som jeg gerne vil kunne vise antal visninger på.


  $resultat = mysql_query("SELECT * FROM billed_visninger WHERE aargang='$årgang' AND sti='$sti' AND fil='billede'");

if (mysql_num_rows($resultat) == "" OR mysql_num_rows($resultat) == 0) {
    mysql_query("INSERT INTO billed_visninger SET aargang='$årgang', sti='$sti', fil='$billede'");
}
else {
  $resultat_array = mysql_result($resultat, 0);
    $antalvisninger = $resultat_array['visninger'];
}

$antalvisninger++;

mysql_query( "UPDATE billed_visninger SET visninger = $antalvisninger WHERE aargang='".$årgang."' AND sti='".$sti."' AND fil='".$billede."'");

echo "antal visninger: $antalvisninger";

Jeg kan bare ikke få det til at virke :(
Avatar billede nielle Nybegynder
26. januar 2006 - 22:38 #1
Prøv det her i stedet:

$query = mysql_query("SELECT count(*) AS antal FROM billed_visninger WHERE aargang='$årgang' AND sti='$sti' AND fil='billede'") or die(mysql_error())
$row = mysql_fetch_assoc($query);

if ($row["antal"] == 0)
{
    mysql_query("INSERT INTO billed_visninger (visninger, aargang, sti, fil) VALUES (1, '$årgang', '$sti', '$billede')");
}
else
{
    mysql_query("UPDATE billed_visninger SET visninger = visninger+1 WHERE aargang='$årgang' AND sti='$sti' AND fil='$billede'");
}

echo "antal visninger: " . ($row["antal"]+1);
Avatar billede tizian Nybegynder
28. januar 2006 - 13:58 #2
Nope det virker ikke :(
Den laver simpelthen bare en ny række med præcis de samme informationer i...
Avatar billede tizian Nybegynder
28. januar 2006 - 15:06 #3
Det her er meget underligt, jeg har rettet lidt i koden så den ser sådan her ud:


$query = mysql_query("SELECT count(*) AS antal FROM billed_visninger WHERE aargang='$årgang' AND sti='$sti' AND fil='$billede';") or die(mysql_error());
$row = mysql_fetch_assoc($query);


        $visninger = $row["antal"] + 1;
    mysql_query("UPDATE `billed_visninger` SET `visninger` = '$visninger' WHERE `aargang` = '$årgang' AND `sti` = '$sti' AND `fil` = '$billede' LIMIT 1 ;") or die(mysql_error());

if (mysql_affected_rows() <= 0) {
    mysql_query("INSERT INTO `billed_visninger` ( `aargang` , `sti` , `fil` , `visninger` ) VALUES ('$årgang', '$sti', '$billede', '1');") or die(mysql_error());
}


echo "antal visninger: " . ($row["antal"]+1);


Men nu opfører den sig meget mærkeligt, hver anden gang opdaterer den den første række så der kommer til at stå det rigtige, og hver anden gang laver den en ny hvor der står 1 i visninger :(

Jeg ville blive rigtig glad for lidt hjælp :(
Avatar billede nielle Nybegynder
28. januar 2006 - 15:48 #4
Hmmm, jeg kan nu ikke se at der skulle være nogen fejl i mit første bud (men jeg kan jo blive klogerer ;^)

Prøv denne variation, som også har noge denug-udskrifter undervejs:

$sql = "SELECT count(*) AS antal FROM billed_visninger WHERE aargang='$årgang' AND sti='$sti' AND fil='billede'";

echo "DEBUG #1: " . $sql . "<br>";
$query = mysql_query() or die(mysql_error());

$row = mysql_fetch_assoc($query);
echo "DEBUG #2: " . $row["antal"] . "<br>";

if ($row["antal"] == 0) {
    $sql = "INSERT INTO billed_visninger (visninger, aargang, sti, fil) VALUES (1, '$årgang', '$sti', '$billede')";
} else {
    $sql = "UPDATE billed_visninger SET visninger = visninger+1 WHERE aargang='$årgang' AND sti='$sti' AND fil='$billede'";
}

echo "DEBUG #2: " . $sql . "<br>";
mysql_query($sql) or die(mysql_error());

echo "antal visninger: " . ($row["antal"]+1);
Avatar billede nielle Nybegynder
28. januar 2006 - 16:18 #5
Hmmm, jo,  jeg kan da se en fejl - den viser altid "1".

Noget af din kode gav mig dog en idé til en lidt anden måde at lave det på:

$sql = "UPDATE billed_visninger SET visninger = visninger+1 WHERE aargang = '$årgang' AND sti = '$sti' AND fil = '$billede'";
mysql_query($sql) or die(mysql_error());

if (mysql_affected_rows() == 0)
{
    $sql = "INSERT INTO billed_visninger (aargang, sti, fil, visninger) VALUES ('$årgang', '$sti', '$billede', '1')";
    mysql_query() or die(mysql_error());
}

$sql = "SELECT visninger FROM billed_visninger WHERE aargang = '$årgang' AND sti = '$sti' AND fil = '$billede'";
$query = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($query);
echo "antal visninger: " . $row["visninger"] . "<br>"
Avatar billede tizian Nybegynder
29. januar 2006 - 12:18 #6
Wohoooo nu virker det!!!!

Tusinde tak!
Avatar billede nielle Nybegynder
29. januar 2006 - 19:05 #7
Oki, så lægger jeg da 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
Computerworld tilbyder specialiserede kurser i database-management

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