RE: [spip-dev] Comportement de {par num ...}

Mieux encore, on devrait pouvoir choisir en mettant un deuxième filtre alternatif. Ca ce serait vraiment cool mais cela ne semble pas simple à intégrer dans la syntaxe des boucles SPIP.

Christophe

-----Message d’origine-----

Si des corrections sont faites pour mysql 3.22, il y en a une à faire au niveau des stats :
SQL 3.22 ne gere pas le "select count(distinct ip)", de ce fait ya po de stat !!

Donc, si jamais vous vous ennuyez !!

A+
Phil

Si des corrections sont faites pour mysql 3.22, il y en a une à faire au
niveau des stats : SQL 3.22 ne gere pas le "select count(distinct ip)", de
ce fait ya po de stat !!

Par quoi pourrait-on remplacer cet appel SQL ?

-- Fil

@ Fil <fil@rezo.net> :

> Si des corrections sont faites pour mysql 3.22, il y en a une à faire au
> niveau des stats : SQL 3.22 ne gere pas le "select count(distinct ip)", de
> ce fait ya po de stat !!

Par quoi pourrait-on remplacer cet appel SQL ?

n'est-ce pas avec
    SELECT COUNT(*) ... GROUP BY ip

si c'est le cas, est-ce qu'on a une perte de perfs horrible ?

-- Fil

@ Fil <fil@rezo.net> :

@ Fil <fil@rezo.net> :
> > Si des corrections sont faites pour mysql 3.22, il y en a une à faire au
> > niveau des stats : SQL 3.22 ne gere pas le "select count(distinct ip)", de
> > ce fait ya po de stat !!
>
> Par quoi pourrait-on remplacer cet appel SQL ?

n'est-ce pas avec
    SELECT COUNT(*) ... GROUP BY ip

En faisant quelques essais, je vois que ça ne marche pas ; je crois qu'il
faut faire en fait

    SELECT * ... GROUP BY IP

puis récupérer mysql_num_rows().

-- Fil

-----Message d'origine-----
De : spip-dev-bounces@rezo.net [mailto:spip-dev-bounces@rezo.net]De la
part de Fil
Envoyé : dimanche 15 septembre 2002 00:07
À : spip-dev@rezo.net
Objet : Re: [spip-dev]Stat et SQL 3.22

@ Fil <fil@rezo.net> :
> @ Fil <fil@rezo.net> :
> > > Si des corrections sont faites pour mysql 3.22, il y en a
une à faire au
> > > niveau des stats : SQL 3.22 ne gere pas le "select
count(distinct ip)", de
> > > ce fait ya po de stat !!
> >
> > Par quoi pourrait-on remplacer cet appel SQL ?
>
> n'est-ce pas avec
> SELECT COUNT(*) ... GROUP BY ip

En faisant quelques essais, je vois que ça ne marche pas ; je crois qu'il
faut faire en fait

    SELECT * ... GROUP BY IP

puis récupérer mysql_num_rows().

Je ne te conseille pas un SELECT * à moins que tu veuilles utiliser toutes
les données en retour. Si tu veux récupérer le nombre d'IP distinct alors la
méthode est bonne sauf qu'un SELECT ip ... GROUP BY ip sera plus moins
gourmand en ressource et plus rapide si ta table est particulièrement
volumineuse. C'est juste une précision d'optim.

Stéphane

En faisant quelques essais, je vois que ça ne marche pas ; je crois qu'il
faut faire en fait

    SELECT * ... GROUP BY IP

puis récupérer mysql_num_rows().

Pas bon, non, il y a déjà un GROUP BY dans ces requêtes.
MySQL 3.22 est une version hypra-vieille, autant laisser tomber....

En faisant quelques essais, je vois que ça ne marche pas ; je crois qu'il
faut faire en fait
    SELECT * ... GROUP BY IP
puis récupérer mysql_num_rows().

Voila, j'ai fait un truc comme celui ci pour avoir des visiteurs avec sql 3.22

function calculer_visites($date = "") {
         // Date par defaut = hier
         if (!$date) $date = date("Y-m-d", time() - 24 * 3600);

         // Sur tout le site, nombre de visiteurs uniques pendant la journee
         $query = "SELECT DISTINCT ip AS total_visites FROM spip_visites_temp";
         $result = spip_query($query);
         //if ($row = @mysql_fetch_array($result))
                         //$total_visites = $row['total_visites'];
                 if (mysql_num_rows($result))
                 $total_visites =mysql_num_rows($result);
         else
                 $total_visites = 0;
         $query_insert = "INSERT INTO spip_visites (date, visites) VALUES ('$date', $total_visites)";
         $result_insert = spip_query($query_insert);

         // Nombre de visiteurs uniques par article
         $query = "SELECT DISTINCT id_objet FROM spip_visites_temp WHERE type='article'";
         $result = spip_query($query);

         /*
         $query = "SELECT COUNT(DISTINCT ip) AS visites, id_objet FROM spip_visites_temp ".
                 "WHERE type='article' GROUP BY id_objet";
         $result = spip_query($query);
         */

         $visites_insert = "";
         $visites_update = "";

                 while (list($id_article) = @mysql_fetch_row($result)) {

                 $q = "SELECT ip FROM spip_visites_temp WHERE id_objet=$id_article";
$r = spip_query($q);
$visites = mysql_num_rows($r);
/*
                 while (list($ip)=@mysql_fetch_row($r)){
                 $visites = $i++;
                 echo "AAA :$visites<br>";
                 //$visites_update[] = $id_article;
                 //$visites_insert[] = "('$date', $id_article, $visites)";
                                 }
*/
$query_insert = "INSERT IGNORE INTO spip_visites_articles (date, id_article, visites) VALUES ('$date','$id_article','$visites')";
$result_insert = spip_query($query_insert);

$que = "UPDATE spip_articles SET visites=visites+$visites WHERE id_article=$id_article";
$res = spip_query($que);
         }

         /*
         while ($row = @mysql_fetch_array($result)) {
                 $id_article = $row['id_objet'];
                 $visites = $row['visites'];

                 $visites_update[$visites][] = $id_article;
                 $visites_insert[] = "('$date', $id_article, $visites)";
         }*/

         $query_effacer = "DELETE FROM spip_visites_temp";
         $result_effacer = spip_query($query_effacer);

         // Mise a jour de la base
         /*
         if (is_array($visites_insert)) {
                 $query_insert = "INSERT DELAYED IGNORE INTO spip_visites_articles (date, id_article, visites) ".
                                 "VALUES ".join(', ', $visites_insert);
                 $result_insert = spip_query($query_insert);
         }
         if (is_array($visites_update)) {
                 while (list($visites, $articles) = each($visites_update)) {
                         $query = "UPDATE spip_articles SET visites = visites + $visites ".
                                 "WHERE id_article IN (".join(', ', $articles).")";
                         $result = spip_query($query);
                 }
         }*/
//ajoute In dans requete au dessus

         if (lire_meta('activer_statistiques_ref') == 'oui') {
                 calculer_referers($date);
         }
         else {
                 $query = "UPDATE spip_articles SET popularite = 0";
                 $result = spip_query($query);
         }
}