Partage
  • Partager sur Facebook
  • Partager sur Twitter

Compteur de visiteurs

(Rien à voir avec le TP)

Sujet résolu
    30 décembre 2005 à 16:34:13

    Problème


    Voilà, c'est un compteur perso mais y'a un truc qui cloche et je sais pas quoi >_<>_<

    Le code


    <?
    $time = time();
    $limite = time() - (10*60);
    $ip_on = $_SERVER['REMOTE_ADDR'];
    $retour_on = mysql_query("SELECT COUNT(*) AS online FROM online WHERE ip=$ip") or die(mysql_error());
    $sql_on = mysql_fetch_array($retour) or die(mysql_error());

    if ($sql['online'] == 1) //Si le visiteur est déjà venu il y a moins de 10*60 secondes (10 minutes)
    {
            mysql_query("UPDATE SET time=$time WHERE ip=$ip_on") or die(mysql_error()); //On met le timestamp à jour
    }
    else //Sinon
    {
            mysql_query("INSERT INTO online VALUES('$time','$ip_on') ") or die(mysql_error()); //On le remet dans la table
    }

    mysql_query("DELETE FROM online WHERE time < $limite") or die(mysql_error());
    /*      On enlève toutes les entrées dont le timestamp
            est inférieur à la limite        */


    $retour_on2 = mysql_query("SELECT COUNT(*) AS online FROM online") or die(mysql_error());
    $sql_on2 = mysql_fetch_array($retour) or die(mysql_error());

    echo $sql_on2['online'] . ' connectés !';
    ?>

    L'erreur renvoyé


    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

    C'est grave docteur ?

    Dernière précision



    Cette page est affichée en include ; un rapport ??
    • Partager sur Facebook
    • Partager sur Twitter
      30 décembre 2005 à 16:36:17

      ...

      Tes requêtes sont du type "requête" tu peux donc encadrer tes variables de ', puis réessayer... qui sait ? ;)


      Lpu8er
      • Partager sur Facebook
      • Partager sur Twitter
        30 décembre 2005 à 16:49:26

        haaaaaaaaaa y'a tout qui bug :waw::waw::waw::waw::waw::waw::waw::waw: Tant pis pour le compteur xD
        • Partager sur Facebook
        • Partager sur Twitter
          31 décembre 2005 à 10:54:09

          Je ne sais pas si tu as relevé toutes les erreurs de ton script ? J'en trouve plusieurs (c'est plus des fautes d'inattention...), dans l'ordre du script :

          $sql_on = mysql_fetch_array($retour)
          au lieu de
          $sql_on = mysql_fetch_array($retour_on)


          if ($sql['online'] == 1)
          au lieu de
          if ($sql_on['online'] == 1)
          si on suit tes notations.

          mysql_query("UPDATE SET time=$time WHERE ip=$ip_on") or die(mysql_error())

          tu as oublié le nom de la table :
          mysql_query("UPDATE online SET time=$time WHERE ip=$ip_on") or die(mysql_error())


          $sql_on2 = mysql_fetch_array($retour)
          au lieu de
          $sql_on2 = mysql_fetch_array($retour_on2)



          De plus si je peux me permettre un conseil, il serait mieux pour toi (je l'ai fait pour moi et ça a marché) de formaliser ton code.

          Exemple : au lieu de mettre
          mysql_query("UPDATE SET time=$time WHERE ip=$ip_on") or die(mysql_error());

          tu pourrais écrire :
          $table_online = "online";
          $requete = "UPDATE `$table_online `SET `time` = '$time' WHERE `ip` = '$ip_on'"
          mysql_query ( $requete ) or die(mysql_error());


          De même il peut être intéressant de créer une fonction qui compte les enregistrements dans une table, ça évitera beaucoup de fautes d'inattention dans ton code.

          J'espère que ton problème venait de ces quelques fautes.

          vale46
          • Partager sur Facebook
          • Partager sur Twitter

          Compteur de visiteurs

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown