Page 1 sur 2

champ incrementé 2 fois

Posté : 06 janv. 2012, 01:34
par centrale24
Bonjour,
J'ai inclus dans mon site un compteur de visite pour chaque pages.
Voici le script de la page index.

//connection à la base
mysql_connect ($host,$user,$password)or die ('<strong>ERREUR : VEUILLEZ REINITIALISER LA CONNECTION</strong>');

//selection de la table des identifiants
mysql_select_db ($database) or die ('ERREUR '.mysql_error());

$result = mysql_query("SELECT * FROM aa" );

//extraction des données
while($row = mysql_fetch_row($result)){
$s1 = $row[0];
$s2 = $row[1];
$s3 = $row[2];
$s4 = $row[3];
$s5 = $row[4];
$s6 = $row[5];
$s7 = $row[6];
$s8 = $row[7];
$s9 = $row[8];
}


$s1++;

mysql_query( "TRUNCATE TABLE `aa`");

mysql_query("INSERT INTO aa VALUES ('$s1','$s2','$s3','$s4','$s5','$s6','$s7','$s8','$s9')") ;

mysql_close();
?>

Le même est inclus dans la page 2 en modifiant $s1++; par $s2++;
Pour la page 1 (index) tout va bien en revanche pour la page 2 et les suivantes les champs s’incrémentent de 2 à chaque visites.

J'ai essayé avec INSERT avec UPDATE, requête en début de script, en fin, rien n'y fait.

Si quelqu'un a une solution, merci par avance

Re: champ incrementé 2 fois

Posté : 06 janv. 2012, 14:43
par Aureusms
Pourquoi tu ne fait pas plutôt un update ?
"UPDATE maTable SET nombreVisite = nombreVisite+1 WHERE utilisateur = 'ID' "

Re: champ incrementé 2 fois

Posté : 06 janv. 2012, 16:20
par centrale24
Merci pour la réponse mais rien de changé.
un bout de mon code:

while($row = mysql_fetch_row($result)){
$s1 = $row[0];
$s2 = $row[1];
$s3 = $row[2];
$s4 = $row[3];
$s5 = $row[4];
$s6 = $row[5];
$s7 = $row[6];
$s8 = $row[7];
$s9 = $row[8];}

$ss3 =$s3+1;

mysql_query("UPDATE aa SET s1='$s1', s2='$s2', s3='$ss3', s4='$s4', s5='$s5', s6='$s6', s7='$s7', s8='$s8', s9='$s9' WHERE s1= '$s1' ");

incrémentation double de s3.

J'ai fais le même code avec s1 incrementation de 1 en 1. Avec les autres champs incrementation de 2 en 2?????????

Je ne comprend pas.
Merci par avance

Re: champ incrementé 2 fois

Posté : 07 janv. 2012, 01:13
par Aureusms
ta clef primaire, c'est laquelle ? s1 ?

Re: champ incrementé 2 fois

Posté : 07 janv. 2012, 19:52
par centrale24
La base contient 9 champs s1 ...s9

Re: champ incrementé 2 fois

Posté : 07 janv. 2012, 21:22
par moogli
ça ne répond pas a la question :)

Si je pige le truc la c'est un compteur de visite pour chaque page de ton site ? (ou du moins 9 d'entre elle ?).

si oui tu au ne erreur de conception. (surtout qu'as priori tu n'as qu'un tuple dans la table et bon c'est moyen la quand même. )

déjà coté requête update table set champ = champ+1 c'est plus simple, rapide et économique en ressource ;)

sur le principe je dirais qu'il te faut une table ainsi
create table compteurPage(
id int not null auto_increment primary key,
nomPage varchar(50) not null,
cpt int not null default 0
)type = myisam;
(par exemple)

Et a partir de la lors d'un affichage juste un
update cpt = cpt +1 where nomPage='le nom de la page'
et ça roule.

@+

Re: champ incrementé 2 fois

Posté : 09 janv. 2012, 19:17
par centrale24
Merci mais j'ai fais ce que tu m'as dis pour la création de la base, et ensuite la fonction UPDATE:

"UPDATE compteurPage SET cpt = cpt +1 WHERE nomPage='compteur'"

mais cpt est incrémente de 2 en 2.

Quelle galère..

Re: champ incrementé 2 fois

Posté : 09 janv. 2012, 21:44
par AB
Décompose ton script en parties plus petites pour voir d'où vient l'erreur.
Quand on fait "UPDATE compteurPage SET cpt = cpt +1 il n'y a aucune raison pour que cela se transforme en cpt +2...

Re: champ incrementé 2 fois

Posté : 09 janv. 2012, 22:28
par centrale24
J'affine le problème:

Le compteur comme tu me l'as préconisé incrémente de 1 en 1 sur ma page index donc la pas de pb, et de 2 en 2 sur les autres pages.
Je ne vois pas de solution.

Re: champ incrementé 2 fois

Posté : 09 janv. 2012, 22:31
par centrale24
J'ai déjà arrêté le script après le cpt++ avec un echo. Pas de problème il rajoute 1 au cpt. C'est lors du transfert vers la bdd qu'il incremente 2????

Re: champ incrementé 2 fois

Posté : 09 janv. 2012, 22:37
par centrale24
J'ai même fais deux bases avec un seul champ s1 pour l'index et s2 pour la page suivante. Le même script pour les deux page, en changeant juste le nom de la page et du champ. Pas de problème pour ma page index incrémentation de 1 en 1, et pour la page suivante incrémentation de 2 en deux. Histoire de fou.

Re: champ incrementé 2 fois

Posté : 09 janv. 2012, 22:44
par AB
T'a pas un système qui rafraichirait ta page automatiquement, ou un système d'include qui lancerait deux fois le script d'upload ... ?

Re: champ incrementé 2 fois

Posté : 09 janv. 2012, 22:46
par centrale24
Encore mieux, la même base de donnée (compteur) avec un seul champ, avec exactement le même script sur la page index et la page suivante. Le champ est incrémente de 1 si on visite la page index et de 2 si on visite la page suivante. Cherchez l'erreur!!!!!

Re: champ incrementé 2 fois

Posté : 09 janv. 2012, 22:47
par centrale24
non il n'y a pas de rafresh sur ma page ni d'include

Re: champ incrementé 2 fois

Posté : 09 janv. 2012, 22:53
par AB
Bah d'une façon ou d'une autre c'est bien que ta page 2 exécute deux fois le script ... (ou que tu exécute auparavant du code qui incrémente ce même champ)