/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Simpel kliktæller
Fra : Janus Høi


Dato : 04-04-04 01:29

Jeg har lavet en simpel tæller der tæller en op hver gang en side med et
billede bliver vist.


$hits = $hits + 1;
mysql_query("update $tabel set hits = '$hits' where id = '$id'");


Problemet er at man kan reloade siden og så tæller den +1 hver gang.

Kan man ikke lige gøre sådan, at den kun tæller 1 gang for hver browser?
Altså sådan at hvis man reloader siden sker der ikke noget, men man kan godt
lukke browseren ned og så åbne en anden og så tæller den en mere.

Håber I kan forstå hvad jeg mener.
--
Janus



 
 
Peter Brodersen (04-04-2004)
Kommentar
Fra : Peter Brodersen


Dato : 04-04-04 02:05

On Sun, 4 Apr 2004 02:28:46 +0200, "Janus Høi" <HOI@sletdetteJAGI.COM>
wrote:

> $hits = $hits + 1;
> mysql_query("update $tabel set hits = '$hits' where id = '$id'");

Det er nok ikke vigtigt på en vilkårlig side uden for mange hits, men
for en god ordens skyld: Du bør lade databasen om at opdatere, for at
sikre, at det bliver gjort atomisk. Fx:

mysql_query("update $tabel set hits = hits + 1 where id = '$id'");

>Kan man ikke lige gøre sådan, at den kun tæller 1 gang for hver browser?
>Altså sådan at hvis man reloader siden sker der ikke noget, men man kan godt
>lukke browseren ned og så åbne en anden og så tæller den en mere.

Da det ikke lyder som om, der er behov for et grundigt tjek eller
lignende, vil en hurtig løsning blot være at sætte en cookie, og så
tjekke at cookie'n ikke er sat, lige før man tæller én op.
http://php.net/setcookie

Hvis den kun skal gælde, indtil brugeren lukker sine browservinduer
ned, så fx:
setcookie("seen","1");

.... og så ved tjekket:

if ($_COOKIE['seen'] != "1") {
mysql_query("update $tabel set hits = '$hits' where id = '$id'");
}


Så burde der være noget at tage udgangspunkt i. Den tager dog ikke
højde for brugere, der ikke vil modtage cookies, m.m. Om det så er et
problem afhænger af sidens art.

--
- Peter Brodersen

Ugens sprogtip: smide (og ikke smidde)

Janus Høi (04-04-2004)
Kommentar
Fra : Janus Høi


Dato : 04-04-04 02:43

"Peter Brodersen" <usenet@ter.dk> skrev i en meddelelse
news:c4nmva$ndb$1@dknews.tiscali.dk...
> On Sun, 4 Apr 2004 02:28:46 +0200, "Janus Høi" <HOI@sletdetteJAGI.COM>
> wrote:
>
> > $hits = $hits + 1;
> > mysql_query("update $tabel set hits = '$hits' where id = '$id'");
>
> Det er nok ikke vigtigt på en vilkårlig side uden for mange hits, men
> for en god ordens skyld: Du bør lade databasen om at opdatere, for at
> sikre, at det bliver gjort atomisk. Fx:
>
> mysql_query("update $tabel set hits = hits + 1 where id = '$id'");
>

Tak.
Jeg kan jo ligeså godt gøre det ordentligt.


<Snip en del om at sætte en cookie>

> Så burde der være noget at tage udgangspunkt i. Den tager dog ikke
> højde for brugere, der ikke vil modtage cookies, m.m. Om det så er et
> problem afhænger af sidens art.
>

Det er meget fint og den virker også.

Der er bare et enkelt lille problem som jeg ikke fik fortalt om før...

Billederne bliver vist på denne måde:

http://www.domæne.dk/sti/til/gallery.php?id=6
http://www.domæne.dk/sti/til/gallery.php?id=6





Peter Brodersen (04-04-2004)
Kommentar
Fra : Peter Brodersen


Dato : 04-04-04 02:53

On Sun, 4 Apr 2004 03:42:47 +0200, "Janus Høi" <HOI@sletdetteJAGI.COM>
wrote:

>Der er bare et enkelt lille problem som jeg ikke fik fortalt om før...
>
>Billederne bliver vist på denne måde:
>
>http://www.domæne.dk/sti/til/gallery.php?id=6
>http://www.domæne.dk/sti/til/gallery.php?id=6

Hvori består problemet? Der er intet i vejen for at hælde det ind
forrest i den PHP-kode.

--
- Peter Brodersen

Ugens sprogtip: smide (og ikke smidde)

Janus Høi (04-04-2004)
Kommentar
Fra : Janus Høi


Dato : 04-04-04 02:58

"Peter Brodersen" <usenet@ter.dk> skrev i en meddelelse
news:c4npp2$o9s$1@dknews.tiscali.dk...
> On Sun, 4 Apr 2004 03:42:47 +0200, "Janus Høi" <HOI@sletdetteJAGI.COM>
> wrote:
>
> >Der er bare et enkelt lille problem som jeg ikke fik fortalt om før...
> >
> >Billederne bliver vist på denne måde:
> >
> >http://www.domæne.dk/sti/til/gallery.php?id=6
> >http://www.domæne.dk/sti/til/gallery.php?id=6
>
> Hvori består problemet? Der er intet i vejen for at hælde det ind
> forrest i den PHP-kode.
>
> --
> - Peter Brodersen
>
> Ugens sprogtip: smide (og ikke smidde)

Der skete et eller andet mærkeligt i denne post.

Der skal gerne komme en bedre version af mit svar.
(Den burde allerede være kommet)

Prøv lige om du kan læse dig til mit problem via den...
Ellers må jeg prøve igen.
--
Janus



Janus Høi (04-04-2004)
Kommentar
Fra : Janus Høi


Dato : 04-04-04 02:59

"Peter Brodersen" <usenet@ter.dk> skrev i en meddelelse
news:c4nmva$ndb$1@dknews.tiscali.dk...

> Det er nok ikke vigtigt på en vilkårlig side uden for mange hits, men
> for en god ordens skyld: Du bør lade databasen om at opdatere, for at
> sikre, at det bliver gjort atomisk. Fx:
>
> mysql_query("update $tabel set hits = hits + 1 where id = '$id'");
>

Tak.
Den snupper jeg
Jeg kan jo ligeså godt gøre det ordentligt.


<Snip en del om at sætte en cookie>

> Så burde der være noget at tage udgangspunkt i. Den tager dog ikke
> højde for brugere, der ikke vil modtage cookies, m.m. Om det så er et
> problem afhænger af sidens art.
>

Det er meget fint, tak. Og den virker også.

Der er bare et enkelt lille problem som jeg ikke fik fortalt om før...

Billederne bliver hentet via en database og vist på denne måde:

http://www.domæne.dk/sti/til/gallery.php?id=6
http://www.domæne.dk/sti/til/gallery.php?id=9
http://www.domæne.dk/sti/til/gallery.php?id=12
og så videre.

Men den lukker for alt optælling på gallery.php efter det første klik

http://www.domæne.dk/sti/til/gallery.php?id=6 bliver talt op, men hvis man
så bagefter klikker ind på http://www.domæne.dk/sti/til/gallery.php?id=9,
tæller den ikke mere.

Hvordan klarer jeg det problem ud fra det du allerede har hjulpet mig med?

Og hvis dét ikke er muligt, hvad kan jeg så gøre?
--
Janus



Janus Høi (04-04-2004)
Kommentar
Fra : Janus Høi


Dato : 04-04-04 03:38

"Janus Høi" <HOI@sletdetteJAGI.COM> skrev i en meddelelse
news:406f6be7$0$235$edfadb0f@dread16.news.tele.dk...

Jeg har prøvet noget som øjensynligt virker for mig.


Når jeg skriver


setcookie("seen".$id,"1");

if ($_COOKIE['seen'.$id] != "1") {
mysql_query("update $tabel set hits = hits + 1 where id = '$id'");
}


så virker det som det skal.

På den måde sætter jeg jo forskellige cookies til hvert billede.

Er det en 'lovlig' løsning?

--
Janus



Dan Molberg (04-04-2004)
Kommentar
Fra : Dan Molberg


Dato : 04-04-04 04:22

In news:406f74f9$0$220$edfadb0f@dread16.news.tele.dk,
Janus Høi <HOI@sletdetteJAGI.COM> typed:
> "Janus Høi" <HOI@sletdetteJAGI.COM> skrev i en meddelelse
> news:406f6be7$0$235$edfadb0f@dread16.news.tele.dk...
>
> Jeg har prøvet noget som øjensynligt virker for mig.
- cut -
> Er det en 'lovlig' løsning?
Ville nok bruge serialize og unserialize, så lægge det i et array og i _en_
cookie.
--
MVH Dan Molberg
http://beyond.repair.dk/



Janus Høi (04-04-2004)
Kommentar
Fra : Janus Høi


Dato : 04-04-04 09:44

"Dan Molberg" <beyond@repair.void> skrev i en meddelelse
news:c4nusf$mvv$1@news.net.uni-c.dk...

> Ville nok bruge serialize og unserialize, så lægge det i et array og i
_en_
> cookie.

Hvordan gør man det i praksis?
--
Janus



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408930
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste