aantal inlogpogingen bijhouden
Gaat het inloggen niet goed, dan wordt er 1 bij de inlogpogingen opgeteld.
Het aantal blijft echter op 1 staan, ongeacht het aantal pogingen. Waarom is dat?
Als het een BOOL is, blijft het inderdaad 1 maar dien je ook een foutmelding te krijgen.
@marco, dank
No Thans,
Maar voor een teller is een int, smallint, tinyint beter en makkelijker.
Toch wil graag nog weten waarom hij er niet steeds 1 bij optelt.
Het type van de kolommen wordt altijd bepaald door de inhoud van die kolom.
Komt er een getal in, kies dan voor int, float, decimal etc...
Komt er text in, kies dan voor varchar, text etc..
Komt er een datum in, kies dan voor date of datetime
Als je het type goed set kun je namelijk gebruik maken van de andere mogelijkheden van een database zoals rekenen met datums, rekenen met getallen, vele verschillende textfuncties, juist sorteren etc.
Gewijzigd op 24/11/2012 16:13:29 door Frits Katoen
Het aantal blijft echter op 1 staan, hoevaak ik ook verkeerd inlog.
Schrijf als debug info de query bijvoorbeeld eens naar het scherm:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$q = "UPDATE poging SET aantal = aantal + 1 WHERE id = 1";
mysql_query($q);
echo $q;
?>
$q = "UPDATE poging SET aantal = aantal + 1 WHERE id = 1";
mysql_query($q);
echo $q;
?>
UPDATE poging SET aantal = aantal+1 WHERE id = 1
error_reporting erbij en mysql_error():
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
$q = "UPDATE poging SET aantal = aantal + 1 WHERE id = 1";
mysql_query($q) or die(mysql_error());
echo $q;
?>
error_reporting(E_ALL);
ini_set('display_errors',1);
$q = "UPDATE poging SET aantal = aantal + 1 WHERE id = 1";
mysql_query($q) or die(mysql_error());
echo $q;
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
[code]<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
include("dbconnect.php");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<LINK REL="STYLESHEET" TYPE="text/css" HREF="css/admin1.css">
<title><?php echo $titel; ?></title>
</head>
<body>
<?php
$q = "UPDATE poging SET aantal = aantal + 1 WHERE id = 1";
mysql_query($q) or die(mysql_error());
echo $q;
?>
</body>
</html>
[code]<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
include("dbconnect.php");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<LINK REL="STYLESHEET" TYPE="text/css" HREF="css/admin1.css">
<title><?php echo $titel; ?></title>
</head>
<body>
<?php
$q = "UPDATE poging SET aantal = aantal + 1 WHERE id = 1";
mysql_query($q) or die(mysql_error());
echo $q;
?>
</body>
</html>
Gewijzigd op 24/11/2012 16:53:28 door Enrico -
Code (php)
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
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
// huidige waarde
echo 'Huidige waarde: ';
$r = mysql_query("SELECT aantal FROM poging WHERE id = 1");
if($r){
$row = mysql_fetch_assoc($r);
if(is_array($row) && count($row)>0){
echo $row['aantal'];
}
else{
echo 'geen waarde';
}
}
else{
echo 'geen resultaat uit query';
}
//updaten
$q = "UPDATE poging SET aantal = aantal + 1 WHERE id = 1";
mysql_query($q) or die(mysql_error());
echo '<br />'.mysql_affected_rows().' rijen geupdate door query: '.$q.'<br />';
// nieuwe waarde
echo 'Nieuwe waarde: ';
$r = mysql_query("SELECT aantal FROM poging WHERE id = 1");
if($r){
$row = mysql_fetch_assoc($r);
if(is_array($row) && count($row)>0){
echo $row['aantal'];
}
else{
echo 'geen waarde';
}
}
else{
echo 'geen resultaat uit query';
}
?>
// huidige waarde
echo 'Huidige waarde: ';
$r = mysql_query("SELECT aantal FROM poging WHERE id = 1");
if($r){
$row = mysql_fetch_assoc($r);
if(is_array($row) && count($row)>0){
echo $row['aantal'];
}
else{
echo 'geen waarde';
}
}
else{
echo 'geen resultaat uit query';
}
//updaten
$q = "UPDATE poging SET aantal = aantal + 1 WHERE id = 1";
mysql_query($q) or die(mysql_error());
echo '<br />'.mysql_affected_rows().' rijen geupdate door query: '.$q.'<br />';
// nieuwe waarde
echo 'Nieuwe waarde: ';
$r = mysql_query("SELECT aantal FROM poging WHERE id = 1");
if($r){
$row = mysql_fetch_assoc($r);
if(is_array($row) && count($row)>0){
echo $row['aantal'];
}
else{
echo 'geen waarde';
}
}
else{
echo 'geen resultaat uit query';
}
?>
Gewijzigd op 24/11/2012 17:06:53 door Frits Katoen
mysql_affected_rows() om te kijken of er wel wat geupdated wordt.
En anders (bij wijze van test): haal eerst het aantal eens op bij het bijbehorende id.
Kijk anders naar En anders (bij wijze van test): haal eerst het aantal eens op bij het bijbehorende id.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
Huidige waarde: 15
1 rijen geupdate door query: UPDATE poging SET aantal = aantal + 1 WHERE id = 1
Nieuwe waarde: 16
?>
Huidige waarde: 15
1 rijen geupdate door query: UPDATE poging SET aantal = aantal + 1 WHERE id = 1
Nieuwe waarde: 16
?>
Hij heeft het dus de hele tijd wel goed gedaan, alleen de waarde in de tabel in phpmyadmin blijft maar op 1 staan. Zojuist in een nieuwe browser opnieuw ingelogd in phpmyadmin en nu laat hij wel 16 zien.
Dank voor alle hulp
Vaag.... iets met caching?