Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[php] aantal malen op een link geklikt tellen

Pagina: 1
Acties:
  • 1.154 views sinds 30-01-2008

  • gizmo9003
  • Registratie: November 2000
  • Laatst online: 19-11 08:29

gizmo9003

Go For It!

Topicstarter
Heej, ik kom er echt niet aan uit, heb ook al bij search gekeken, maar zodra ik het woordje teller in typ, gaat het over een gewone pageview teller.

maar wat ik eigenlijk wil:
er staat een link op me site, die naar een EXTERNE pagina linkt...
nou wil ik tellen hoe vaak erop wordt geklikt, dit kan ik wel doen met een tussenpagina, en met id's etc die dan doorlinkt, maar kan het ook DIRECT? of is dat niet mogelijk?

tjah..


Verwijderd

Ik heb het op de volgende wijze:

bovenin mijn script kijk ik of de variabele $url en $ID gevuld zijn:
code:
1
2
3
4
5
6
7
<?
if ($url && $ID)
{
    mysql_query("UPDATE $table SET klik = klik+1 WHERE ID = $ID");
    header("Location: $url");  
}
?>

deze 2 variabelen geef ik mee met de link http://link/pagina.php?url=blaat&ID=blaat

volgens mij kan het niet direct.

Verwijderd

Hij wil het dus zonder redirect! Ik denk aan javascript.
Zoiets als haal het aantal keer dat de link geklikt is uit de database, en maak een functie in js dattie een popupje doet (waar dus je database wordt bijgewerkt!) voordatie naar de pagina gaat.
Snap je me nog?

dus <a href=# onclick=javascript:go(url)>url</a>
en dan in die functie go
1) een popupje openen waarbij de database wordt geupdate
2) een document.href(url) ofzoiets

  • gizmo9003
  • Registratie: November 2000
  • Laatst online: 19-11 08:29

gizmo9003

Go For It!

Topicstarter
nee popupje wil ik ook niet..... dan doe ik het toch maar via een redirect :(....

tjah..


Verwijderd

Ja inderdaad, maar volgens mij wil hij ook geen popup.
(weet het niet zeker maar ik zou het niet willen.. :) )

wel kan je stellen dat het niet mogelijk is zonder een andere pagina te laden. het is dus of een popup of een redirect. of eventueel de gewone pagina reloaden.

php moet immers geparst worden om de gegevens in de DB toe te voegen.

Verwijderd

Of je kan de link maken naar een frameset met een frame van 1 pix waar de update query wordt gedaan en in het andere frame de pagina... krijg je net zoiet als dat je bij hotmail op een URL klikt... dus niet de URL van de andere pagina in de location-bar

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Kan toch makkelijk via een php-scriptje? Nadeeltje is misschien dat alle externe links op je pagina vervangen moeten worden naar zoiets:
code:
1
link.php?url=gathering.tweakers.net

...ik noem maar wat.

In link.php verwerk je een tellertje en linked mbv. header() de zaak door. De file link.php bevat dus alleen maar server-side code en dus wordt er niks naar de client gestuurd en dus zul je er niks van merken. Nouja... Bijna niks dan. Het kost je 2 page-requests ipv. 1.

[ specs ] [ Tweaker gallery ]


  • gizmo9003
  • Registratie: November 2000
  • Laatst online: 19-11 08:29

gizmo9003

Go For It!

Topicstarter
ja die gebruik ik nou ook, maar het is wel een redirect, en dus enige vertraging (hetzij heel weinig) ik was dus gewoon benieuwd of er niet een code bestond, die kliks registreerde ofzo...
maar ik houd het wel bij redirect dan
thanx for you replys!

tjah..


Verwijderd

Op Saturday 27 October 2001 15:48 schreef smokeysoft het volgende:
Ik heb het op de volgende wijze:

bovenin mijn script kijk ik of de variabele $url en $ID gevuld zijn:
code:
1
2
3
4
5
6
7
<?
if ($url && $ID)
{
    mysql_query("UPDATE $table SET klik = klik+1 WHERE ID = $ID");
    header("Location: $url");  
}
?>

deze 2 variabelen geef ik mee met de link http://link/pagina.php?url=blaat&ID=blaat

volgens mij kan het niet direct.
Dit gaat niet werken om 2 dingen, als $url en $ID leeg zijn, maar wel meegstuurd worden (dus http://link/pagina.php?url=&ID=), dan bestaan die variabelen wel, met als inhoud "", geen tekens dus. De test zal dus altijd TRUE zijn.

Dan de 2e, je krijgt nu de foutmelding "Headers already sended" oid. Je kan proberen om de volgende regel te gebruiken:
header("Location: $url", FALSE);
Dit wil nog wel eens helpen, maar dan ook niet altijd.

Gaat het om interne links of externe links (dus links naar een hele andere website of links naar een andere pagina in je website).
In het geval van interne links is het best makkelijk. Externe links zijn ook wel mogelijk, maar als je het dan helemaal netjes wilt doen moet je JavaScript gebruiken. Als ik jou was zou ik eens op www.hotscripts.com kijken, daar vind je vast wel zo iets...

Verwijderd

hoeft helemaal niet via een popupje je kan toch een target defineren.?


target="_self" ?

Verwijderd

Op Sunday 28 October 2001 15:37 schreef LaXeeR het volgende:

[..]

Dan de 2e, je krijgt nu de foutmelding "Headers already sended" oid.
Nee hoor, er zijn namelijk nog geen headers gestuurd.

Verwijderd

Er is een MySQL query uitgevoerd, dat telt ie ook mee...

Verwijderd

Dit gaat niet werken om 2 dingen, als $url en $ID leeg zijn, maar wel meegstuurd worden (dus http://link/pagina.php?url=&ID=), dan bestaan die variabelen wel, met als inhoud "", geen tekens dus. De test zal dus altijd TRUE zijn.
Onjuist. Als de variable leeg is of 0 bevat zal zijn statement naar false evalueren.
Er is een MySQL query uitgevoerd, dat telt ie ook mee...
Dat hoop ik toch niet, want dan zou er iets ernstig mis zijn.

Een redirect lijkt me overigens de meest nette oplossing voor dit probleem.

Voor mensen die problemen hebben met het in de juiste volgorde versturen van headers, kijk eens naar output buffering d.m.v. de ob_* functies.

Verwijderd

Op maandag 29 oktober 2001 12:00 schreef LaXeeR het volgende:
Er is een MySQL query uitgevoerd, dat telt ie ook mee...
Ik denk het niet :)

Verwijderd

Er is een MySQL query uitgevoerd, dat telt ie ook mee...
ik weet zeker van niet, ik gebruik het namelijk :)

Verwijderd

hmz... dan moet ik mijn scripts toch eens nakijken of er ergens een verdwaalde header zit :)

  • JoostMartijn
  • Registratie: December 2003
  • Laatst online: 17-04 15:22
Je kan hier ook een bestaand webtooltje voor gebruiken. Het is te vinden op con-nect.

http://con-nect.nl

Windsoft


Verwijderd

Na 6 jaar zal de topic starter zelf al wel een oplossing gevonden hebben...

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20-11 22:35

Creepy

Tactical Espionage Splatterer

Wat Afterlife zegt :P

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.