J'ai encore du faire une étourderie dans mon

fabrice11901 Messages postés 787 Statut Membre -  
wiwimagique Messages postés 481 Statut Membre -
Bonjour, j'ai encore du faire une étourderie dans mon code le conteur affiche 0 alors qu'il devrait insérer dans la table je pense que ça vient de la ligne 14 au req12 voici mon code :

<? $ip1=$_SERVER['REMOTE_ADDR'];
$timestamp= time() - (60 * 720);
$dbc = @mysql_connect ("http://sql.free.fr", "codg82", "******");

if(!mysql_errno($dbc)) {
mysql_select_db("codg82");

$query = "SELECT * FROM visiteurs";
$query .= " WHERE ip='$ip1' AND timestamp='$timestamp'";

$requ = mysql_query($query);

if(mysql_num_rows($requ)==0) {
$req12 = "insert into visiteurs values( '' , '$ip1' , '$timestamp')";
mysql_query($req12); }
else
{mysql_query("UPDATE visiteurs WHERE timestamp='$timestamp'");
}

mysql_query("DELETE FROM visiteurs WHERE timestamp<'$timestamp'");

// -------
// ETAPE 3 : on compte le nombre d'ip stockées dans la table. C'est le nombre de visiteurs connectés
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM visiteurs');
$donnees = mysql_fetch_array($retour);

// Ouf ! On n'a plus qu'à afficher le nombre de connectés !
echo '<p>' . $donnees['nbre_entrees'] . ' visiteurs ont visités le site OLYMPE DE GOUGES (Compteur en cours de création...)</p>'; } mysql_close();?>

merci d'avance
Fabrice

16 réponses

psaikopat Messages postés 339 Statut Membre 14
 
$req12 = "insert into visiteurs values( '' , '$ip1' , '$timestamp')";

A CORRIGER AVEC :
$req12 = "INSERT INTO visiteurs ('champ1', 'champ2', 'champ3') VALUES ('', '$ip1' , '$timestamp')";


Voila c'est ça a mon avis que tu voulais faire! ;)

La ça va marché !
0
GallyNet Messages postés 437 Statut Membre 387
 
Ca requete peu être bonne si jamais il n'y que trois champ dans ca table. Dans ce cas lail est inutile de spécifié les nom des champs.
0
wiwimagique Messages postés 481 Statut Membre 108
 
cette requête m'a l'air curieuse:
UPDATE visiteurs WHERE timestamp='$timestamp'
0
GallyNet Messages postés 437 Statut Membre 387
 
Effectivement la requete suivante ne fait rien car tu ne lui dit pas ce que tu veut mettre a jour :
"UPDATE visiteurs WHERE timestamp='$timestamp'"


De plus, je ne comprend a quoi sert le test siuvant :
$query = "SELECT * FROM visiteurs";
$query .= " WHERE ip='$ip1' AND timestamp='$timestamp'"; 

Tu test si l'utilisateur n'est pas venu deux fois pendantle même seconde ?
0
fabrice11901 Messages postés 787 Statut Membre 64
 
Bonjour, et merci à tous de votre aide
en fait je vous explique mon project :
c'est un conteur de visiteurs en fait je veux que quand un visiteurs se connecte on ajoute son arriver dans le site dans mysql dans le champ "ip" si le visiteurs revient sur la page 10 minutes après on ajoute rien par contre si il vient 5 heure plus tard alors on rajoute son ip dans la table.
Le code que je vous ai donné est un code que j'ai essayer de faire mais il n'arrive pas à mon résultat il fonctionne mais on dirait que quand un visiteurs arrive pour la première fois sur le conteur ça lui compte 1 mais si après d'autre visiteurs viennent il ne veut plus rien savoir...
aidez moi svp parce que j'ai du mal à m'imaginé comment faut il faire pour en arriver au résultat que je veux.
Merci
Fabrice
0

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

Posez votre question
GallyNet Messages postés 437 Statut Membre 387
 
Déjà quand tu test si l'utilisateur c'est pas déjà connecté il y a moins de 10 minutes, il faut pas mettre dans ta requete le signe "=", parce que cela signifie que tu test s'il c'est connecté il y a exactement 10 minute (pas avant, pas apres). Donc, s'il c'est connecté il y a 5 minute, ca marche pas.
Essaye voir avec :
timestamp>='$timestamp'

Ensuite, ta requete de mise a jour du visiteur ne fait rien car tu n'a pas définit de champ a mettre a jour. Essaye voir avec ca (mise ajour du timestamp pour l'utilisateur):
UPDATE visiteurs SET timestamp='$timestamp' WHERE ip='$ip1'
0
fabrice11901 Messages postés 787 Statut Membre 64
 
Bonjour à tous, et merci de votre aide.
La première requete si les informations du visiteurs sont déja présente dans la table et non si il s'est connecté il y a 10 minutes je me suis peut-être trompé... je vous remet le code corriger avec le set timestamp :

<? $ip1=$_SERVER['REMOTE_ADDR'];
$timestamp= time() - (60 * 720);
$dbc = @mysql_connect ("http://sql.free.fr", "codg82", "********");

if(!mysql_errno($dbc)) {
mysql_select_db("codg82");

$query = "SELECT * FROM visiteurs";
$query .= " WHERE ip='$ip1' AND timestamp='$timestamp'";

$requ = mysql_query($query);

if(mysql_num_rows($requ)==0) {
$req12 = "insert into visiteurs values( '' , '$ip1' , '$timestamp')";
mysql_query($req12); }
else
{mysql_query("UPDATE visiteurs SET timestamp='$timestamp' WHERE ip='$ip1'");
}

mysql_query("DELETE FROM visiteurs WHERE timestamp<'$timestamp'");

// -------
// ETAPE 3 : on compte le nombre d'ip stockées dans la table. C'est le nombre de visiteurs connectés
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM visiteurs');
$donnees = mysql_fetch_array($retour);

// Ouf ! On n'a plus qu'à afficher le nombre de connectés !
echo '<p>' . $donnees['nbre_entrees'] . ' visiteurs ont visités le site OLYMPE DE GOUGES (Compteur en cours de création...)</p>'; } mysql_close();?>
merci à vous
0
wiwimagique Messages postés 481 Statut Membre 108
 
T'as pas appliqué la correction de GallyNet
$query = "SELECT * FROM visiteurs";
$query .= " WHERE ip='$ip1' AND timestamp='$timestamp'"; 

0
fabrice11901 Messages postés 787 Statut Membre 64
 
Bonjour,
<? $ip1=$_SERVER['REMOTE_ADDR'];
$timestamp= time() - (60 * 720);
$dbc = @mysql_connect ("http://sql.free.fr", "codg82", "s9rkio32");

if(!mysql_errno($dbc)) {
mysql_select_db("codg82");

$query = "SELECT * FROM visiteurs";
$query .= " WHERE ip='$ip1' AND timestamp='$timestamp'";

$requ = mysql_query($query);

if(mysql_num_rows($requ)==0) {
$req12 = "insert into visiteurs values( '' , '$ip1' , '$timestamp')";
mysql_query($req12); }
else
{mysql_query("UPDATE visiteurs SET timestamp='$timestamp' WHERE ip='$ip1'");
}

mysql_query("DELETE FROM visiteurs WHERE timestamp<'$timestamp'");

// -------
// ETAPE 3 : on compte le nombre d'ip stockées dans la table. C'est le nombre de visiteurs connectés
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM visiteurs');
$donnees = mysql_fetch_array($retour);

// Ouf ! On n'a plus qu'à afficher le nombre de connectés !
echo '<p>' . $donnees['nbre_entrees'] . ' visiteurs ont visités le site OLYMPE DE GOUGES (Compteur en cours de création...)</p>'; } mysql_close();?> je ne vois pas ce qui change de ma query dans mon code... à moin que tu me dises de modifier autre chose...
veuillez m'excusé si parfois je ne fais pas de réponse car je suis non-voyant (donc quelques dificultés sur le site j'ai déja contacter le webmaster mais sans réponse...) ou je ne reçois parfois les messages des réponses...
pouvez-vous me dire que dois-je modifier dans mon code et par quoi le modifier?
merci de votre patience !
Fabrice
0
wiwimagique Messages postés 481 Statut Membre 108
 
<?
$ip1=$_SERVER['REMOTE_ADDR'];
$timestamp= time() - (60 * 720);
$dbc = @mysql_connect ("**********", "******", "******");

if(!mysql_errno($dbc)) {
    mysql_select_db("******");

    $query = "SELECT * FROM visiteurs";
    $query .= " WHERE ip='$ip1' AND timestamp>='$timestamp'";

    $requ = mysql_query($query);

    if(mysql_num_rows($requ)==0) {
        $req12 = "insert into visiteurs values( '' , '$ip1' , '$timestamp')";
        mysql_query($req12);
    } else {
        mysql_query("UPDATE visiteurs SET timestamp='$timestamp' WHERE ip='$ip1'");
    }

    mysql_query("DELETE FROM visiteurs WHERE timestamp<'$timestamp'");

// -------
// ETAPE 3 : on compte le nombre d'ip stockées dans la table. C'est le nombre de visiteurs connectés
    $retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM visiteurs');
    $donnees = mysql_fetch_array($retour);

// Ouf ! On n'a plus qu'à afficher le nombre de connectés !
    echo '<p>' . $donnees['nbre_entrees'] . ' visiteurs ont visités le site OLYMPE DE GOUGES (Compteur en cours de création...)</p>';
}

mysql_close();

?> 
0
fabrice11901 Messages postés 787 Statut Membre 64
 
Bonjour wiwi magique,
merci pour ton aide là ce qu'est bizarre et donc ce que je ne comprend pas depuis plusieurs jours c'est que le conteur ne veut pas monter audessus de 1 visiteurs ! le fichier ce trouve à :
http://codg82.free.fr/visiteurs4.php
voila
merci
0
wiwimagique Messages postés 481 Statut Membre 108
 
P-e parce que tu le testes tout seul ? et donc que tu n'as qu'une IP ?

Je viens de visiter le site, tu devrais avoir mon IP.
Si tu visites ton site maintenant, p-e que tu verras 2 visiteurs ?
0
fabrice11901 Messages postés 787 Statut Membre 64
 
Bonjour,
et non justement je le test à des endroits différents et là il affiche toujours 1 visiteurs ! regarde :
http://codg82.free.fr/visiteurs4.php
merci ! je te promet je ny comprend rien !
Fabrice
0
wiwimagique Messages postés 481 Statut Membre 108
 
En effet, après une lecture pour attentive de ton code, il y a un illogisme dans ton code et tu effaces systématiquement toutes les connexions sauf la dernière.

Je me connecte à 17:30, ok
on regarde si je ne suis pas déjà venu depuis 5:30 ok

Je ne suis jamais venu, donc, j'ajoute une nouvelle visite à 17:30 et non 5:30 comme tu le faisais.

De même, toi qui est déjà venu sur le site, il faut updater ta venue non pas à 5:30 mais 17:30 aussi.

<?
$ip1=$_SERVER['REMOTE_ADDR'];
$now = time();
$timestamp= time() - (60 * 720);
$dbc = @mysql_connect ("**********", "******", "******");

if(!mysql_errno($dbc)) {
    mysql_select_db("******");

    $query = "SELECT * FROM visiteurs";
    $query .= " WHERE ip='$ip1' AND timestamp>='$timestamp'";

    $requ = mysql_query($query);

    if(mysql_num_rows($requ)==0) {
        $req12 = "insert into visiteurs values( '' , '$ip1' , '$now')";
        mysql_query($req12);
    } else {
        mysql_query("UPDATE visiteurs SET timestamp='$now' WHERE ip='$ip1'");
    }

    mysql_query("DELETE FROM visiteurs WHERE timestamp<'$timestamp'");

// -------
// ETAPE 3 : on compte le nombre d'ip stockées dans la table. C'est le nombre de visiteurs connectés
    $retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM visiteurs');
    $donnees = mysql_fetch_array($retour);

// Ouf ! On n'a plus qu'à afficher le nombre de connectés !
    echo '<p>' . $donnees['nbre_entrees'] . ' visiteurs ont visités le site OLYMPE DE GOUGES (Compteur en cours de création...)</p>';
}

mysql_close();

?>


0
fabrice11901 Messages postés 787 Statut Membre 64
 
Bonsoir,
j'ai mi ton code
http://codg82.free.fr/visiteurs5.php
on verra bien si il augmente !
fabrice
0
fabrice11901 Messages postés 787 Statut Membre 64
 
Bonjour !
Le code fonctionne très bien mais voila il fonctionne mais il ne fait pas exactement ce que je veux faire je vous explique :
là le code après un certain temps il efface lIP lui correspondant ... moi en fait je voudrai que si l'utilisateur par exemple ce connecte 10 minutes après avoir êtes déja passer sur le site que on augmente pas le conteur par contre si il passe 15 après (donc le temps de la précédente n'existe plus puisque son ip a été effacé) que le conteur accepte son ip... comprenez le truc que je veux? En fait je veux pas que l'ip s'efface mais qu'on puisse rajouter la même 15 heures après voiyez vous ou je veux en venir ou pas?
merci et bon courage pour me comprendre !
Fabrice
0
wiwimagique Messages postés 481 Statut Membre 108
 
Dans ce cas, efface tout simplement cette ligne :

mysql_query("DELETE FROM visiteurs WHERE timestamp<'$timestamp'");


et ça devrait marcher.
0