Database: 2 punten erbij ipv 1 punt

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Koen Vlaswinkel

Koen Vlaswinkel

30/10/2011 10:36:56
Quote Anchor link
Ik heb een probleem met het onderstaande PHP script. Ik wil graag bijhouden hoe vaak 1 ip op mijn website komt. Daarvoor gebruik ik onderstaand PHP script. Maar bij de update-query, gebeurt er dit. Voorbeeld:
Dit is hoe de database eruit zag als ik al een paar keer op de pagina ben geweest.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
ip           -- visits -- lastvisit                       -- mobile -- pc
192.168.48.5 --   2    -- Sunday 30 October 2011 10:27:35 -- 0      -- 2

Maar na de tweede keer komen er meteen 2 punten bij bij de visits en pc:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
ip           -- visits -- lastvisit                       -- mobile -- pc
192.168.48.5 --   4    -- Sunday 30 October 2011 10:30:22 -- 0      -- 4


Wat doe ik fout?
Ik gebruik onderstaand onderstaand PHP script.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function firstVisit()
{
    $ip = $_SERVER['REMOTE_ADDR'];
    $time = date('l d F Y H:i:s');
// Checken of ze er al zijn geweest
    $query = "SELECT * FROM ip WHERE ip='" . $ip . "'";
    $result = mysql_query($query) or die(mysql_error());
    if (mysql_num_rows($result) == 0)
    {
// Nog niet geweest dus invoegen
        $query2 = "insert into ip (ip, visits, lastvisit, pc)values('" . mysql_escape_string($ip) . "','1','" . $time . "', '1')";
        mysql_query($query2) or die(mysql_error());
        return true;
    }
    else
    {
// Als ze er al wel zijn geweest updaten
        $row = mysql_fetch_array($result);
        $visits = $row['visits'] + 1;
        $pc = $row['pc'] + 1;
        $query3 = "UPDATE ip SET visits='" . $visits . "', lastvisit='" . $time . "', pc='" . $pc . "' WHERE ip='" . $ip . "'";
        mysql_query($query3) or die(mysql_error());
        return false;
    }
}


Waarschijnlijk wordt de query twee keer uitgevoerd, maar ik zou niet weten hoe. Als ik de query echo staat er dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
UPDATE ip SET visits='24', lastvisit='Sunday 30 October 2011 10:53:01', pc='24' WHERE ip='192.168.48.5'

Maar als ik dan de volgende keer kijk, zegt hij dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
UPDATE ip SET visits='26', lastvisit='Sunday 30 October 2011 10:54:36', pc='26' WHERE ip='192.168.48.5'

Maar het wordt maar 1 keer geëchoed.
Gewijzigd op 30/10/2011 10:54:53 door Koen Vlaswinkel
 
PHP hulp

PHP hulp

28/02/2024 00:35:40
 
Koen Vlaswinkel

Koen Vlaswinkel

31/10/2011 13:07:41
Quote Anchor link
Bump
 
- SanThe -

- SanThe -

31/10/2011 13:28:20
Quote Anchor link
Je datum is geen datum. Maak daar een DATETIME veld van.
Laat SQL optellen.
$query3 = "UPDATE ip SET visits=visits+1, lastvisit=NOW(), pc=pc+1 WHERE ip='" . $ip . "'";
 
Koen Vlaswinkel

Koen Vlaswinkel

31/10/2011 13:59:02
Quote Anchor link
Als ik MySQL laat optellen, gaan er nog steeds 2 punten bij. Als ik de query echo, komt de query ook maar 1 keer op de pagina, maar er komen wel 2 punten bij.
Ik heb er expres geen DATETIME veld van gemaakt, omdat ik het alleen maar leesbaar hoef te maken. Ik wil alleen de resultaten analyseren, ik hoef er verder niets mee te doen.
 
- SanThe -

- SanThe -

31/10/2011 15:05:17
Quote Anchor link
Je zal dan wel twee keer de function aanroepen lijkt mij.
Gewijzigd op 31/10/2011 15:12:33 door - SanThe -
 
Koen Vlaswinkel

Koen Vlaswinkel

31/10/2011 15:18:03
Quote Anchor link
Maar als ik de query laat echoën staat de query niet twee keer in de pagina, ook niet als ik in de broncode kijk in mijn browser.
 
- SanThe -

- SanThe -

31/10/2011 15:20:42
Quote Anchor link
Je roept het 1 keer aan en hij wordt 2 keer uitgevoerd?
Magic Harry Potter in de buurt?
Ik weet het dan niet meer in ieder geval.
 
- Ariën  -
Beheerder

- Ariën -

31/10/2011 15:31:06
Quote Anchor link
Koen V op 31/10/2011 13:59:02:
Ik heb er expres geen DATETIME veld van gemaakt, omdat ik het alleen maar leesbaar hoef te maken. Ik wil alleen de resultaten analyseren, ik hoef er verder niets mee te doen.

Ook met DATETIME kan je het leesbaar maken. DATE_FORMAT().
- SanThe - op 31/10/2011 15:20:42:
Je roept het 1 keer aan en hij wordt 2 keer uitgevoerd?
Magic Harry Potter in de buurt?
Ik weet het dan niet meer in ieder geval.

Ik doe eens een gooi. Is het echt niet zo dat de functie dubbel aangeroepen wordt? Ga eens debuggen door elke stap te echo-en...
Gewijzigd op 31/10/2011 15:34:02 door - Ariën -
 
- SanThe -

- SanThe -

31/10/2011 15:35:19
Quote Anchor link
@Aar: Die had ik ook al geprobeerd.

- SanThe - op 31/10/2011 15:05:17:
Je zal dan wel twee keer de function aanroepen lijkt mij.
 
Koen Vlaswinkel

Koen Vlaswinkel

31/10/2011 16:50:01
Quote Anchor link
Ik heb even de website iets aangepast, zodat hij nu de query weergeeft. Je kan het zelf ook uittesten.
https://www.ssl-url.net/vlaswinkel.org/karma/?debug=true
Ik hoop dat jullie hier iets mee kunnen.
 
- Ariën  -
Beheerder

- Ariën -

31/10/2011 19:16:59
Quote Anchor link
Blijft apart....

Laat je niet niet PHP én MySQL de boel optellen, zodat je steeds 2 hits hebt per view?

Laat eens zien welke code je nu hebt, na onze aangedragen tips?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.