error in SQL syntax
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.
Zelfde error nog?
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
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
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 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.
Bedankt San!
Wat wil je dan precies optellen?
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
:)
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
}
?>
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...
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...
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?