Probleme sur compteur avec base de donnée

Résolu
fredy7 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
bonsoir,
je suis en train de faire un compteur de nombre de visite avec base de données, mais ça ne marche pas, ça m'affiche le message suivant :
------- fichier compteur.php --------
Fatal error: main() [function.require]: Failed opening required 'params.inc.php' (include_path='.:/data/apache/php/mmp_lib') in /data/members/free/multimania/fr/a/z/u/azul50/htdocs/compteur.php on line 6


est ce que quelqu'un pourrait me dire c'est quoi le probleme?
merci d'avance pour votre aide
A voir également:

15 réponses

Tunisien
 
salut, j'ai tester ton code et il marche...voila les etapes que j'ai suivi:

1-j'ai creer une nouvelle base de donner ayant comme nom "basecompteur"
2-j'ai utiliser cette requete pour creer une nouvelle table:

# Structure de la table `compteur`
CREATE TABLE compteur (
id smallint(6) NOT NULL auto_increment,
page varchar(255) NOT NULL default '',
nombre smallint(6) NOT NULL default '0',
date date NOT NULL default '0000-00-00',
heure time NOT NULL default '00:00:00',
PRIMARY KEY (id)
) TYPE=MyISAM;


3-j'ai creer le repertoir "compteur" dans le dossier "www"
4-dans ce repertoir j'ai creer le fichier "Compteur.php" voici son code:


<?
/* inclure le fichier de paramètres
* et se connecter à la base de données
*/
require ("params.inc.php");
$connexion= mysql_connect($hote,$login,$mdp);
mysql_select_db($bd, $connexion);

// récupère le nom complet (précédé du chemin) du fichier de la page en cours d'exécution
$page=$PHP_SELF;

// exécute une requête pour chercher ce nom dans la table
$req="select * from compteur where page='$page'";
$resultat=mysql_query($req,$connexion);
$nb= mysql_num_rows($resultat);

// si le nom du fichier se trouve déjà dans la table,
if ($nb == 1) {
$ligne= mysql_fetch_array($resultat);
/* alors on récupère la valeur du champ compteur,
on l'incrémente et on met à jour le champ compteur
ainsi que la date et l'heure actuelle
*/
$nombre = ++ $ligne[nombre];
$req_maj="UPDATE compteur SET nombre='$nombre', date=now(), heure=curtime() WHERE page='$page' ";
mysql_query($req_maj,$connexion);
// echo "page $page : $nombre ème accès le $ligne[date] à $ligne[heure]";
}

elseif ($nb == 0) {

/* sinon on insère un nouvel enregistrement avec ce nom,
* son compteur initialisé à 1
* ainsi que la date et l'heure actuelle
*/
$req_ins="INSERT INTO compteur (page,nombre,date,heure) VALUES ('$page',1,now(),curtime() )";
mysql_query($req_ins,$connexion);
// echo "page $page : 1er accès";
}
?>




5-ensuite j'ai creer le fichier "params.inc.php" voici son code:


<?
$hote="127.0.0.1";
$login="root";
$mdp="";
$bd="basecompteur";
?>


6-enfin j'ai creer le fichier "test.php" voici son code:

<? require("compteur.php"); ?>






pour tester ton compteur tu dois ouvrir ton local web puis choisir le dossier compteur et cliquer sur le fichier test.php


le resultat sera une page vide mais pour voir si ton compteur marche tu dois ouvrir ta base de donnees et l'enregistrement ajouté dans la table....


Si tu veux que la page "test.php" affiche le nombre de visite tu dois y ajouter un morceau de code , je peux t'aider a le faire si tu veux


bonne chance
1
Tunisien
 
apparament il y a une faute de syntax dans le fichier "Compteur.php" . Envoi nous le code que tu a saisie dans ce fichier, on pourra peut etre t aidé.......

a+
0
fredy7 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   277
 
bonjour,
j'ai tiré le code de cette page
http://www.ac-creteil.fr/util/programmation/scripts/compteurs.php

c'est le numéro 3 :Compter les accès aux pages individuelles

merci de votre aide
0
zefoots Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   62
 
Bonjour,

ça pourrait pas venir du caractère : (deux points)
include_path='.:/data/apache/php/mmp_lib'
au début de l'instruction require ?
0
fredy7 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   277
 
bonsoir,
j'ai suivi toute les étapes que t'as données, j'ai testé ,l'enregistrement est resté à 1.
en tout cas j'aimerais bien éffectivement que tu m'aides pour que la page "test.php" affiche le nombre de visite,
merci bien tunisien pour tes réponses
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fredy7 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   277
 
c'est bon ça marche tunisien, il comptait qu'une fois la page.
dis moi comment faire pour afficher le nombre de visite.
si c'est pas trop demandé, j'aimerais te demander encore un dernier truc, est ce que tu peux modifier le script afin que le nombre de visite revient à 0 après 50, c'est à dire qu'il recompte de 0 à chaque fois qu'il arrive à 50 .
merci encore
0
Tunisien
 
salut fredy7

je vais essyer de faire le 2 en 1:

Pour que "test.php" affiche le nombre de visites et que ce nombre revient a 1 automatiquement quand il arrive a 50 tu dois modifier le fichier "Compteur.php". Pour eviter les problemes, je te donne le code complet de ce fichier ,t a qu a supprimer l'ancien "compteur.php" et le remplacer par celui-ci:


<?
/* inclure le fichier de paramètres
* et se connecter à la base de données
*/
require ("params.inc.php");
$connexion= mysql_connect($hote,$login,$mdp);
mysql_select_db($bd, $connexion);

// récupère le nom complet (précédé du chemin) du fichier de la page en cours d'exécution
$page=$PHP_SELF;

// exécute une requête pour chercher ce nom dans la table
$req="select * from compteur where page='$page'";
$resultat=mysql_query($req,$connexion);
$nb= mysql_num_rows($resultat);

// si le nom du fichier se trouve déjà dans la table,
if ($nb == 1) {
$ligne= mysql_fetch_array($resultat);
/* alors on récupère la valeur du champ compteur,
on l'incrémente et on met à jour le champ compteur
ainsi que la date et l'heure actuelle
*/
$nombre = ++ $ligne[nombre];


// echo "page $page : $nombre ème accès le $ligne[date] à $ligne[heure]";
if ($nombre>50)
{$req_maj="UPDATE compteur SET nombre=1, date=now(), heure=curtime() WHERE page='$page' ";

echo "Le nombre de visite est: 1";}
else
{
$req_maj="UPDATE compteur SET nombre='$nombre', date=now(), heure=curtime() WHERE page='$page' ";
echo "Le nombre de visite est: ".$nombre;
}
mysql_query($req_maj,$connexion);
}

elseif ($nb == 0) {

/* sinon on insère un nouvel enregistrement avec ce nom,
* son compteur initialisé à 1
* ainsi que la date et l'heure actuelle
*/
$req_ins="INSERT INTO compteur (page,nombre,date,heure) VALUES ('$page',1,now(),curtime() )";
mysql_query($req_ins,$connexion);
// echo "page $page : 1er accès";
echo "Le nombre de visite est: 1";
}
?>
0
fredy7 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   277
 
bonsoir,
merci beaucoup tunisien ,ça marche très bien. je constate juste que de temps en temps ça m'affiche le même nombre de visite 2 fois consécutive, ça arrive 2 ou 3 fois dans le cycle de 50. ce qui fait qu'on arrivant à 50 le nombre réel de visite est 52 ou 53.
j'espère que je pourrai te poser d'autres questions quand j'en aurai.

merci encore d'avoir pris de ton temps pour m'aider.
0
Tunisien
 
Salut fredy7

Voila mon email:

tanrtn@yahoo.fr

contact moi si tu a besoin d'aide, je ferai de mon mieux....

a+
0
Utilisateur anonyme
 
Bonjour,

J'ai fait comme Tunisien a dit, mais sa ne m'affiche pas le nombre de visites!

Comment faire pour qu'il s'affiche?

Merci d'avance
0
fredy7 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   277
 
bonjour,
je pense que la réponse est dans:
echo "Le nombre de visite est: 1";

tunisien va peut être te répondre mieuc que moi
bonne chance
0
fredy7 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   277
 
essaie ça
j'ai enlevé les // devant chaque echo
dis moi si ça marche


<?
/* inclure le fichier de paramètres
* et se connecter à la base de données
*/
require ("params.inc.php");
$connexion= mysql_connect($hote,$login,$mdp);
mysql_select_db($bd, $connexion);

// récupère le nom complet (précédé du chemin) du fichier de la page en cours d'exécution
$page=$PHP_SELF;

// exécute une requête pour chercher ce nom dans la table
$req="select * from compteur where page='$page'";
$resultat=mysql_query($req,$connexion);
$nb= mysql_num_rows($resultat);

// si le nom du fichier se trouve déjà dans la table,
if ($nb == 1) {
$ligne= mysql_fetch_array($resultat);
/* alors on récupère la valeur du champ compteur,
on l'incrémente et on met à jour le champ compteur
ainsi que la date et l'heure actuelle
*/
$nombre = ++ $ligne[nombre];
$req_maj="UPDATE compteur SET nombre='$nombre', date=now(), heure=curtime() WHERE page='$page' ";
mysql_query($req_maj,$connexion);
echo "page $page : $nombre ème accès le $ligne[date] à $ligne[heure]";
}

elseif ($nb == 0) {

/* sinon on insère un nouvel enregistrement avec ce nom,
* son compteur initialisé à 1
* ainsi que la date et l'heure actuelle
*/
$req_ins="INSERT INTO compteur (page,nombre,date,heure) VALUES ('$page',1,now(),curtime() )";
mysql_query($req_ins,$connexion);
echo "page $page : 1er accès";
}
?>
0
Utilisateur anonyme
 
Bonjour,

En effet sa marche, mais sa ne marche que pour une page, alor que moi je veut que le script marche page par page!

comment faire svp?
0
Tunisien
 
salut

tu dois ajouter l'instruction:

require("compteur.php");


dans chaque page ou tu veux afficher ton compteur
0
Utilisateur anonyme
 
Bonjour,

C'est ce que j'ai fait, mais par exemple je l'avait mit sur une seule page le compteur, et il en était à 13 hits, je le met sur une autre page, et je la visite desuite après, et sa me met 14hits.

Donc je voudrai savoir comment faire pour que le compteur soit unique à une seule page!
0
fredy7 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   277
 
salut,
j'ai essayé comme a dit tunisien ça marche.
un compteur propre à chaque page où tu mets require("compteur.php);
0
Utilisateur anonyme
 
J'ai trouvé pourquoi sa ne marche pas!

J'utilise un CMS, et la page, c'est viewpage.php, et comme c'est juste l'id de la page qui change, et non la page, sa ne me fait pas un compteur différent!

Quelqu'un saurait-il comment faire pour mon cas?

Merci d'avance
0