login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Aantal keer bekeken code

Offline mariosss - 23/12/2008 11:01
Avatar van mariosssNieuw lid Hallo,

Ik heb een vraag, maar misschien voor jullie een makkelijke vraag.

Ik maak een nieuwssysteem, en ik wil als er een nieuw bericht geplaatst wordt, daar laten zien hoevaak het bericht is bekeken. Nu wil ik dus vragen hoe ik dit moet doen? Wat is de code hiervoor?

Ik weet dat je iets met de database moet doen met de functie UPDATE, maar daar blijft het ook bij.

Kan iemand mij hiermee helpen? 

29 antwoorden

Gesponsorde links
Offline Koen - 23/12/2008 11:07 (laatste wijziging 23/12/2008 11:08)
Avatar van Koen PHP expert Maak een extra kolom aan in je mysql tabel, die noem je 'clicks'.
Edit: maak de kolom 'hits' aan als INTEGER, met als standaardwaarde 0.
Op de pagina waar je vervolgens het nieuwsbericht laat zien, voer je volgende query uit:
  1. mysql_query("UPDATE `tabelnaam` SET `clicks` = `clicks`+1 WHERE `id_kolom` = ".$idvariabele) or die(mysql_error());

Opmerking:
- verander 'tabelnaam' naar de naam van je tabel.
- verander 'id_kolom' naar de kolomnaam waar het ID van je bericht staat.
- verander '$idvariabele' naar de variabele die het ID van je bericht bevat.

Succes!
Offline mariosss - 23/12/2008 11:35
Avatar van mariosss Nieuw lid ok,

ik heb alles aangemaakt in de database.

query heb ik uitgevoerd, maar hoe laat ik het nu zien? Dus hoe kun je het als volgt laten zien?

Het bericht is ...x bekeken.

Offline Koen - 23/12/2008 11:40
Avatar van Koen PHP expert Op dezelfde manier als je de andere velden laat zien, zoals de titel en het bericht, maar dan met als veldnaam "clicks".
Offline mariosss - 23/12/2008 14:32 (laatste wijziging 23/12/2008 14:34)
Avatar van mariosss Nieuw lid ik krijg de volgende foutmelding te zien:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

het gaat om deze regel:

  1. $clicks=mysql_query("UPDATE `nieuw` SET `id` = `id`+1 WHERE `nieuw` = ".$id) or die(mysql_error());


als ik deze regel weglaat, krijg ik de foutmelding niet te zien.
Offline Martijn - 23/12/2008 14:48
Avatar van Martijn Crew PHP haal al die ` is weg?
Offline Erwt - 23/12/2008 14:51 (laatste wijziging 23/12/2008 14:52)
Avatar van Erwt PHP beginner Ten eerste moet je niet een ID veranderen. ID's zijn vaak de primaire sleutel, die hoor je niet te wijzigen. Maak hier (zoals sliphead al zei) een nieuwe kolom voor en noem deze 'clicks'.

En als je wilt kijken waar een foutmelding zit kan je de query echo'en.

Doe dus:(als je de kolomnaam 'clicks' hebt toegevoegd)

  1. <?php
  2. $query = "UPDATE `nieuw` SET `clicks` = `clicks`+1 WHERE `nieuw` = " . $id);
  3. $result = mysql_query($query) or die(mysql_error());
  4. echo $query;
  5. ?>


` is voor reserved words.. geloof niet dat het daar aan mag liggen.
Offline mariosss - 23/12/2008 15:26
Avatar van mariosss Nieuw lid @Erwt:
Citaat:
Ten eerste moet je niet een ID veranderen. ID's zijn vaak de primaire sleutel, die hoor je niet te wijzigen. Maak hier (zoals sliphead al zei) een nieuwe kolom voor en noem deze 'clicks'.

En als je wilt kijken waar een foutmelding zit kan je de query echo'en.

Doe dusals je de kolomnaam 'clicks' hebt toegevoegd)

php code - Bekijk de code zonder highlighting - Klap code in
<?php
$query = "UPDATE `nieuw` SET `clicks` = `clicks`+1 WHERE `nieuw` = " . $id);
$result = mysql_query($query) or die(mysql_error());
echo $query;
?>
<?php $query = "UPDATE `nieuw` SET `clicks` = `clicks`+1 WHERE `nieuw` = " . $id); $result = mysql_query($query) or die(mysql_error()); echo $query;?>



` is voor reserved words.. geloof niet dat het daar aan mag liggen.


Ik heb het zo gedaan zoals jij zei, maar krijg nog steeds de volgende foutmelding:


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Offline Martijn - 23/12/2008 15:33
Avatar van Martijn Crew PHP echo is $d, wat geeft dat?
Offline Erwt - 23/12/2008 16:15
Avatar van Erwt PHP beginner En echo $query, wat geeft dat?
Offline mariosss - 23/12/2008 23:31 (laatste wijziging 23/12/2008 23:41)
Avatar van mariosss Nieuw lid ik heb $query even veranderd naar $clicks.

als ik echo $clicks doe krijg ik dit:

UPDATE `nieuw` SET `clicks` = `clicks`+1 WHERE `id` =

nu krijg ik dus die foutmelding niet meer omdat ik al een andere $query had. Dit is dus nu $clicks. Maar als ik deze query echo krijg ik dus bovenstaande code te zien.

Dit is nu dus de code:
  1. $clicks = "UPDATE `nieuw` SET `clicks` = `clicks`+1 WHERE `id` = " . $id;
  2. $result = mysql_query($query) or die(mysql_error());



Wat doe ik nu fout?  
Offline Rens - 23/12/2008 23:43 (laatste wijziging 23/12/2008 23:47)
Avatar van Rens Gouden medaille

Crew algemeen
Je variabele $id is leeg.
Waar moet die vandaan komen?
Uit de URL?
Dan dien je $_GET['id'] te gebruiken.
Offline mariosss - 23/12/2008 23:47
Avatar van mariosss Nieuw lid @Rens:

Deze stond er al onder:

  1. $clicks = "UPDATE `nieuw` SET `clicks` = `clicks`+1 WHERE `id` = " . $id;
  2. $result = mysql_query($query) or die(mysql_error());
  3.  
  4.  
  5. $id = $_GET['id'];
Offline Rens - 23/12/2008 23:49 (laatste wijziging 23/12/2008 23:49)
Avatar van Rens Gouden medaille

Crew algemeen
Die moet er juist boven staan anders ga je een (nog) niet bestaande variabele gebruiken...
Dus eerst $id vullen met $_GET['id'], dan pas bestaat $id en kun je hem gebruiken.
Daarna je query pas...

  1. $id = $_GET['id'];
  2. $clicks = "UPDATE `nieuw` SET `clicks` = `clicks`+1 WHERE `id` = " . $id;
  3. $result = mysql_query($query) or die(mysql_error());
Offline mariosss - 23/12/2008 23:56 (laatste wijziging 23/12/2008 23:57)
Avatar van mariosss Nieuw lid Zo ziet nu de code eruit:

  1. $id = $_GET['id'];
  2. $clicks = "UPDATE `nieuw` SET `clicks` = `clicks`+1 WHERE `id` = " . $id;
  3. $result = mysql_query($query) or die(mysql_error());



Maar toch als ik echo $clicks aanroep krijg ik de volgende code te zien. ik denk toch dat er iets fout is.

UPDATE `nieuw` SET `clicks` = `clicks`+1 WHERE `id` = 94
Offline Rens - 24/12/2008 00:01
Avatar van Rens Gouden medaille

Crew algemeen
Hij zou zo goed moeten zijn.
Wat gebeurd er als je de query uitvoert?
Offline mariosss - 24/12/2008 00:04
Avatar van mariosss Nieuw lid als ik de echo $clicks uitvoer krijg ik dit :

UPDATE `nieuw` SET `clicks` = `clicks`+1 WHERE `id` = 94


en met deze code erachter:
  1. $id = $_GET['id'];
  2. $clicks = "UPDATE `nieuw` SET `clicks` = `clicks`+1 WHERE `id` = " . $id;
  3. $result = mysql_query($query) or die(mysql_error());
Offline Rens - 24/12/2008 00:06
Avatar van Rens Gouden medaille

Crew algemeen
Je moet je query niet uitvoeren en niet echoën.
Je moet die code uitvoeren die hierboven staat en meer niet, dan moet hij het al doen.
Weet niet wat jij verwacht anders te krijgen...?
Offline mariosss - 24/12/2008 00:09
Avatar van mariosss Nieuw lid hiermee kun je zien hoevaak een bericht is bekeken, maar iets is er fout dat die in plaats van de aantal keren laat zien, dat ie dit laat zien:
UPDATE `nieuw` SET `clicks` = `clicks`+1 WHERE `id` = 94

doe ik dan echt iets fout?
Offline Rens - 24/12/2008 00:10
Avatar van Rens Gouden medaille

Crew algemeen
De code die jij hebt is om er een click bij op te tellen.
Om op te halen hoeveel clicks er zijn moet je een select query gebruiken.

SELECT
UPDATE
Offline mariosss - 24/12/2008 00:16
Avatar van mariosss Nieuw lid zoals het in de handleiding UPDATE staat:

  1. <?php
  2. $query = "UPDATE leden SET leeftijd=leeftijd+1 WHERE id=2";
  3. mysql_query($query) or die (mysql_error());
  4. ?>



dit heb ik dus ook:

  1. $id = $_GET['id'];
  2. $clicks = "UPDATE `nieuw` SET `clicks` = `clicks`+1 WHERE `id` = " . $id;
  3. $result = mysql_query($query) or die(mysql_error());


wat moet er fout zijn?
Offline Rens - 24/12/2008 00:17
Avatar van Rens Gouden medaille

Crew algemeen
Lees nou wat ik zeg, die update gebruik je om het getal met 1 te verhogen.
Om vervolgens het aantal kliks op te halen moet je select gebruiken...
Offline mariosss - 24/12/2008 00:45
Avatar van mariosss Nieuw lid het is gelukt, in de database wordt het telkens opgeteld wanneer je het bericht opent, alleen krijg ik nu dit niet te zien in het bericht zelf. In plaats dat het getal er komt te staan, komt nu dit:

Resource id #8

 
Offline Ibrahim - 24/12/2008 02:10 (laatste wijziging 24/12/2008 02:10)
Avatar van Ibrahim PHP expert Ik gok erop dat je de variabele met de PHP.net: mysql_query functie erin echoed. Probeer PHP.net: mysql_result of PHP.net: mysql_fetch_assoc
Offline mariosss - 24/12/2008 10:25
Avatar van mariosss Nieuw lid hoe zou ik dit dan kunnen oplossen met mysql_fetch_assoc?

Waar zou ik dit moeten veranderen?

Nu is de code:

  1. $id = $_GET['id'];
  2. $clicks = "UPDATE `nieuw` SET `clicks` = `clicks`+1 WHERE `id` = " . $id;
  3. $result = mysql_query($clicks) or die(mysql_error());
  4.  
  5. $clicks1= "SELECT clicks FROM nieuw WHERE id = ".$id;
  6. $view = mysql_result($clicks1) or die(mysql_error());
Offline marten - 24/12/2008 10:29
Avatar van marten Beheerder Regel 6 moet mysql_query worden ipv mysql_result.

Daarna moet je er door heen loopen met bijvoorbeeld PHP.net: while
Offline mariosss - 24/12/2008 10:33 (laatste wijziging 24/12/2008 11:09)
Avatar van mariosss Nieuw lid ik al even mijn script hier plaatsen, omdat ik het even niet meer snap. Ik krijg nog steeds Resource id#8

Plaatscode: 59761
Offline marten - 24/12/2008 11:20
Avatar van marten Beheerder
  1. while($row = mysql_fetch_array($view)) {
  2. echo $row['clicks'];
  3. }


Je moet het resultaat eerst fetchen. Vervang regel 16 in je plaatscode door bovenstaand stukje code en het zou moeten werken.
Offline mariosss - 24/12/2008 11:25
Avatar van mariosss Nieuw lid @marten

Het werkt! het klopt inderdaad dat ik het eerst moest fetchen.
Alleen wat het probleem is dat deze telkens optelt als je ook de pagina refresht. Hoe zou je dit kunnen doen met behulp van ip ? Dus dat deze alleen optelt met een nieuw ip.

Offline Martijn2008 - 24/12/2008 13:56
Avatar van Martijn2008 PHP beginner Dat klopt, dan zou je inderdaad moeten kijken of het IP al in de MySQL table voorkomt. Wat ook erg handig is, is het #ID van het bericht opslaan in de tabel van je hitcounter. Dus de tabel van de hitcounter ziet er dan als volgt uit: id, news_id, hits, ip, first_time, last_view. Wanneer de bezoeker dan zijn of haar pagina refresht wordt er simpel `hits+1`gedaan, je weet dan precies hoevaak een bezoeker naar een bepaald bericht heeft gekeken. Als je alleen unieke views wilt tellen, kun je gebruik maken van de functie mysql_num_rows. Succes!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.876s