Compter les signatures d’une pétition

Donner le nombre de signatures d’une grosse pétition

La pétition «Sauvons la recherche» a recueilli près de 30 000 signatures et suite à un plantage du site se retrouve avec des signatures en double dans sa base. Pour recompter les signatures en éliminant les doublons, voici le filtre utilisé :

<?php
	// [(#ID_ARTICLE|compter_signatures) signatures distinctes]
	function compter_signatures($id_article) {
		$t = spip_query("SELECT COUNT(DISTINCT(ad_email)) AS c FROM spip_signatures WHERE id_article=$id_article AND statut='publie'");
		$r = spip_fetch_array($t);
		return $r['c'];
	}
?>

Ce filtre — à placer dans le fichier mes_fonctions.php — récupère l’identifiant de l’article portant la pétition, envoie directement la requête MySQL qui convient, et retourne le résultat. Simplissime !

Pour l’installer dans un squelette :

[(#ID_ARTICLE|compter_signatures) signatures distinctes]

updated on 23 November 2007

Discussion

3 discussions

  • Bonjour,

    On peut tricher: un même utilisateur peut disposer de plusieurs adresses électroniques. Sur une même boite, des pseudos sont possibles, avec gmail, ils peuvent prendre la forme nom.utilisateur+nimportequoi@gmail.com.

    Dans ce cas ( dites-moi si je me trompe ) la solution est plus délicate :

    • Ajouter des champs obligatoires avec nom, prénom, date de naissance, adresse.
    • En dehors du cadre associatif, signaler ce fichier à la CNIL
    • Garder le tout dans une base de données.
    • Ne pas afficher ces données ( ça, c’est facile ! )
    • Trier la base de données par date de naissance et ne garder que les doublons
    • Affichage de ces données réservée aux administrateurs, ( créer ce squelette )
    • Vérification des doublons ainsi repérés.

    Bref la validité d’une pétition en ligne est encore peu fiable avec SPIP tel quel.
    ( exemple de pétition dans un cadre associatif ou institutionnel, voire aux autorités et aux élus )

    Mais peut-être suis-je hors sujet ici

    Merci à tous

    Reply to this message

  • Je le ferai comme ça

    function compter_signatures($id_article) {
        $t = spip_query("SELECT COUNT(DISTINCT(ad_email)) FROM spip_signatures WHERE id_article=$id_article AND statut='publie'");
        $r = spip_fetch_array($t);
        return array_pop($r);
    }

    Et oui c’est bien un filtre, il suffit de mettre le code dans mes_fonctions.php3
    et ensuite dans un squelette (#ID_ARTICLE affichera le nombre de signatures

    Reply to this message

  • 2

    Tellement simplissime qu’on a l’impression d’être con en essayant votre truc :-). M’enfin !!! Ce serait sympa de donner plus de détails sur le compteur, par exemple où on place le code donné ? Il y a très d’articles consacré aux pétitions sur ce site donc si vous donnez des détails ca nous simplifiera la vie. Merci beaucoup !!!

    • ouais... :p lol

      moi aussi j’ai l’impression d’être con tout à coup :p

      +1

    • Je pense qu’il s’agit d’un filtre. Copie-colle le code dans un fichier mes_fonctions.php (à placer dans le dossier squelette) puis dans ton squelette appelle la balise (#ID_ARTICLE

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom