champ incrementé 2 fois

Eléphanteau du PHP | 29 Messages

06 janv. 2012, 01:34

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

ViPHP
ViPHP | 1996 Messages

06 janv. 2012, 14:43

Pourquoi tu ne fait pas plutôt un update ?
"UPDATE maTable SET nombreVisite = nombreVisite+1 WHERE utilisateur = 'ID' "
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 29 Messages

06 janv. 2012, 16:20

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

ViPHP
ViPHP | 1996 Messages

07 janv. 2012, 01:13

ta clef primaire, c'est laquelle ? s1 ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 29 Messages

07 janv. 2012, 19:52

La base contient 9 champs s1 ...s9

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 janv. 2012, 21:22

ç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.

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 29 Messages

09 janv. 2012, 19:17

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..

ViPHP
AB
ViPHP | 5818 Messages

09 janv. 2012, 21:44

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...

Eléphanteau du PHP | 29 Messages

09 janv. 2012, 22:28

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.

Eléphanteau du PHP | 29 Messages

09 janv. 2012, 22:31

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????

Eléphanteau du PHP | 29 Messages

09 janv. 2012, 22:37

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.

ViPHP
AB
ViPHP | 5818 Messages

09 janv. 2012, 22:44

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 ... ?

Eléphanteau du PHP | 29 Messages

09 janv. 2012, 22:46

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!!!!!

Eléphanteau du PHP | 29 Messages

09 janv. 2012, 22:47

non il n'y a pas de rafresh sur ma page ni d'include

ViPHP
AB
ViPHP | 5818 Messages

09 janv. 2012, 22:53

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)