error in SQL syntax
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:
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? :$
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;
?>
$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
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.
kijken of dat werkt, laat t zo weten, bedankt =)
*edit* werkt nog steeds niet :)
*edit* werkt nog steeds niet :)
Gewijzigd op 01/01/1970 01:00:00 door Peter Lopsen
Zelfde error nog?
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:
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;
?>
$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
Zet dit bovenin je script.
geeft de volgende errors:
Notice: Undefined variable: id in C:\Blabla\Bla\Bla\counter.php on line 4
= dus:
Notice: Use of undefined constant sql - assumed 'sql' in C:\Blabla\Bla\Bla\counter.php on line 6
= dus:
maar die codelines heb ik al veel meer gebruikt in mn andere functies, en het zou gewoon moeten werken?
Notice: Undefined variable: id in C:\Blabla\Bla\Bla\counter.php on line 4
= dus:
Notice: Use of undefined constant sql - assumed 'sql' in C:\Blabla\Bla\Bla\counter.php on line 6
= dus:
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
$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?
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?
$id bestaat wel, met die regel haal ik toch de ID die meegegeven wordt in de url weer terug druit?
'peter:
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.
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!
Bedankt San!
Wat wil je dan precies optellen?
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
:)
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
:)
Is dan niet dit de bedoeling?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
}
?>
$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
}
?>
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...
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...
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
dus:
check
if
else
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...
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?
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?




