Requête SQL s'exécute deux fois
Bonjour à tous,
Voilà, je souhaite incrémenter une table à chaque fois que j'arrive sur une page d'un produit afin de stocker des statistiques de mon site web.
Pour cela, lorsque j'arrive sur ma page, je récupère le nom de mon produit, je vérifie si il a déjà été visité et j'incrémente son champ visites.
Mais le problème, c'est qu'à chaque fois que j'arrive sur ma page, il est incrémenté de +2 et non de +1. J'ai l'impression que la page se charge deux fois.
Voici le code :
Ma classe Statistiques
Code:
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
/// <summary>
/// Summary description for Statistiques
/// </summary>
public class Statistiques
{
public Statistiques()
{
}
public bool checkStatProduit(string nom)
{
string request = "SELECT count(*) FROM stats_produits WHERE nom=@nom";
IDbConnection Conn = DBTemplate.Connection();
IDbCommand Cmd = DBTemplate.Command(request);
IDataParameter param = Cmd.CreateParameter();
param.ParameterName = "@nom";
param.Value = nom;
Cmd.Parameters.Add(param);
Conn.Open();
Cmd.Connection = Conn;
int nbEnr = (int)Cmd.ExecuteScalar();
if (nbEnr > 0)
return true;
else
return false;
}
public void AddStatProduit(string nom)
{
IDbConnection Conn = DBTemplate.Connection();
if (checkStatProduit(nom) == true)
{
string request = "UPDATE stats_produits SET visites = (visites+1) WHERE nom=@nom";
IDbCommand Cmd = DBTemplate.Command(request);
IDataParameter param = Cmd.CreateParameter();
param.ParameterName = "@nom";
param.Value = nom;
Cmd.Parameters.Add(param);
Conn.Open();
Cmd.Connection = Conn;
Cmd.ExecuteNonQuery();
}
else
{
string request = "INSERT INTO stats_produits (nom, visites) VALUES (@nom,@visites)";
IDbCommand Cmd = DBTemplate.Command(request);
IDataParameter param = Cmd.CreateParameter();
param.ParameterName = "@nom";
param.Value = nom;
Cmd.Parameters.Add(param);
IDataParameter param2 = Cmd.CreateParameter();
param2.ParameterName = "@visites";
param2.Value = 1;
Cmd.Parameters.Add(param2);
Conn.Open();
Cmd.Connection = Conn;
Cmd.ExecuteNonQuery();
}
}
} |
Et mon appel dans le Page_Load
Code:
1 2 3 4 5 6
|
protected void Page_Load(object sender, EventArgs e)
{
Statistiques stat = new Statistiques();
stat.AddStatProduit(nomProduit);
} |
Merci beaucoup de votre aide