error in SQL syntax

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Peter Lopsen

Peter Lopsen

15/01/2010 11:45:00
Quote Anchor link
Beste mensen, ik ben een pageview scriptje aan het maken, maar die wil niet erg. Kan iemand deze (beginner) helpen? :$

Ik heb een index.php met een articleid dat meegegeven wordt,

hierin wordt geinclude: counter.php (waar de fout ook in zit)

De fout zit dus in deze file:

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
<?php
    $id
= mysql_real_escape_string($id);
    $sql = "SELECT count FROM visitors_count WHERE page = '$id'";
    $res = mysql_query(sql) or die (mysql_error());
    $cresult = mysql_query(sql);
    $count = 0;
        
    while($row = mysql_fetch_assoc($res)):
        if (mysql_numrows($res))            
            $countrow = mysql_fetch_row($row);
            $count=$row[0];
            $ccount=$count+1;
            $sql="UPDATE visitors_count SET count='$ccount' where page='$id'";
        if(!mysql_query($usql)) {
            echo mysql_errno().":";
            echo mysql_error();
        }
        endwhile;

?>

Quote:
(visitors_count is de DATABASE en page is een veld hierin). de database wordt al eerder in de index behandeld, en werkt gewoon.

en is als volgt:

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 'sql' at line 1

Ik weet dat de fout in counter.php zit omdat als ik die leeg maak ik geen error krijg, ik kan alleen de error niet vinden..

anyone? please? :$
Gewijzigd op 01/01/1970 01:00:00 door Peter Lopsen
 
PHP hulp

PHP hulp

22/12/2024 10:38:44
 
- SanThe -

- SanThe -

15/01/2010 11:48:00
Quote Anchor link
Jij gebruikt 'count' als een veld/kolomnaam en dat mag niet. Count is een gereserveerd word van sql zelf. Maak daar een andere naam van.
 
Peter Lopsen

Peter Lopsen

15/01/2010 11:50:00
Quote Anchor link
kijken of dat werkt, laat t zo weten, bedankt =)

*edit* werkt nog steeds niet :)
Gewijzigd op 01/01/1970 01:00:00 door Peter Lopsen
 
Niels K

Niels K

15/01/2010 11:55:00
Quote Anchor link
Zelfde error nog?
 
Peter Lopsen

Peter Lopsen

15/01/2010 11:56:00
Quote Anchor link
ja, precies dezelfde, niets veranderd :S

en zonder die counter.php werkt alles prima, dus de fout zit m echt in enkelt counter.php wat ik gepost heb..

code is nu:
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
<?php
    $id
= mysql_real_escape_string($id);
    $sql = "SELECT telraam FROM visitors_count WHERE page = '$id'";
    $res = mysql_query(sql) or die (mysql_error());
    $cresult = mysql_query(sql);
    $count = 0;
        
    while($row = mysql_fetch_assoc($res)):
        if (mysql_numrows($res))            
            $countrow = mysql_fetch_row($row);
            $count=$row[0];
            $ccount=$count+1;
            $sql="UPDATE visitors_count SET telraam = '$ccount' where page= '$id'";
        if(!mysql_query($usql)) {
            echo mysql_errno().":";
            echo mysql_error();
        }
        endwhile;

?>
Gewijzigd op 01/01/1970 01:00:00 door Peter Lopsen
 
- SanThe -

- SanThe -

15/01/2010 12:27:00
Quote Anchor link
Zet dit bovenin je script.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
 
Peter Lopsen

Peter Lopsen

15/01/2010 12:32:00
Quote Anchor link
geeft de volgende errors:

Notice: Undefined variable: id in C:\Blabla\Bla\Bla\counter.php on line 4
= dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$id = mysql_real_escape_string($id);


Notice: Use of undefined constant sql - assumed 'sql' in C:\Blabla\Bla\Bla\counter.php on line 6
= dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$res = mysql_query(sql) or die (mysql_error());



maar die codelines heb ik al veel meer gebruikt in mn andere functies, en het zou gewoon moeten werken?
Gewijzigd op 01/01/1970 01:00:00 door Peter Lopsen
 
- SanThe -

- SanThe -

15/01/2010 12:38:00
Quote Anchor link
$id bestaat dus niet.
En mysql_query(sql) moet zijn mysql_query($sql).

Waarom de query 2 keer uitvoeren op regel 4 en 5?
Op regel 10 mysql_fetch_row($row) is $row een array() uit regel 8.
Waar komt $usql vandaan op regel 14?
 
Peter Lopsen

Peter Lopsen

15/01/2010 14:43:00
Quote Anchor link
$id bestaat wel, met die regel haal ik toch de ID die meegegeven wordt in de url weer terug druit?
 
- SanThe -

- SanThe -

15/01/2010 14:48:00
Quote Anchor link
peter schreef op 15.01.2010 12:32:
Undefined variable: id in C:\Blabla\Bla\Bla\counter.php on line 4

$id bestaat dus echt niet.

Als je iets uit de url wilt halen dat zit dat in $_GET.
 
Peter Lopsen

Peter Lopsen

15/01/2010 14:56:00
Quote Anchor link
dat werkt nu :) alleen de count nog niet, hij telt nog niets op.. ik ga zelf wel even puzzelen tenzij iemand hier een idee heeft natuurlijk :$

Bedankt San!
 
- SanThe -

- SanThe -

15/01/2010 15:05:00
Quote Anchor link
Wat wil je dan precies optellen?
 
Peter Lopsen

Peter Lopsen

15/01/2010 15:26:00
Quote Anchor link
tis een pageview counter dus wat ik wil is dat wanneer die paigna geladen word bijvoorbeeld article.php?id=48

dat hij de id eruit pakt, wat werkt, en die toevoegt aan de tabel in de database met de volgende velden:
telraamid (het id van wat er toegevoegd wordt, autoincremented)
telraam = aantal views/teller
page is dus de id, want dat is de pagina waar het om gaat
en een veld remoteip die ik nog niet heb verwerkt

:)
 
- SanThe -

- SanThe -

15/01/2010 15:32:00
Quote Anchor link
Is dan niet dit de bedoeling?
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
<?php
    $id
= mysql_real_escape_string($_GET['id']);
    $sql = "UPDATE visitors_count
            SET telraam = telraam + 1
            WHERE page= '"
. $id . "'";
    $res = mysql_query(sql);
    if(!$res)
    {

        // error
    }
    else
    {
        // ga verder
    }
?>
 
Joren de Wit

Joren de Wit

15/01/2010 15:35:00
Quote Anchor link
Als jij zelf het id wilt bepalen in je tabel, moet je daar dus geen auto_increment op zetten. In eerste instantie zul je dus moeten bepalen of er al een record voor dat id bestaat. Zo niet, dan zul je een nieuw record moeten invoegen. In het andere geval zul je het bestaande record moeten updaten. Je zou kunnen overwegen om een INSERT ... ON DUPLICATE KEY UPDATE ... query te gebruiken.

Overigens zou het imo logischer zijn om voor elke pageview een nieuw record aan te maken. Het bepalen van het totaal aantal views zou je dan met een eenvoudige COUNT() query kunnen doen...
 
Peter Lopsen

Peter Lopsen

15/01/2010 15:38:00
Quote Anchor link
hmmmja moet nog even kijken nu dat ik er zo over nadenk.. logische volgorde is dat je eerst kijkt of $id al in de tabel bestaat, dan als die al bestaat hem updaten met 1 erbij, en als hij niet bestaat nieuwe rij aanmaken met de $_GET['id']

dus:

check
if
else
 
Joren de Wit

Joren de Wit

15/01/2010 15:40:00
Quote Anchor link
De controle kun je ook door de database laten uitvoeren (zie mijn vorige post). Verder is de tweede optie die ik daar geef ook het overwegen waard, op die manier kun je iets uitgebreidere statistieken genereren als je bijvoorbeeld ook een datumtijd stempel opslaat bij die betreffende records...
 
Peter Lopsen

Peter Lopsen

15/01/2010 15:47:00
Quote Anchor link
Een nieuwe record maken voor elke pageview is alleen handig als je inderdaad date erbij wil doen, wat in principe niet van toepassing is ook is het handig dat te doen als je op unique visitors wil counten, met ips enzo.. dat hoeft ook niet van mij, omdat verschillende gebruikers een artikel bijvoorbeeld ook meerdere malen willen lezen

Het is voor een blog, en het enige dat ik wil laten zien op de homepage is het aantal keer dat een artikel volledig bekeken is (op de index staat een intro, met een link naar het hele artikel) dus bij het bezoeken heb je een nieuwe viewer

Dus dan volstaat een simpele update op het moment dat de id al bestaat, en het aanmaken van een nieuwe row op het moment dat de id nog niet bestaat?
 



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.