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]

Dernière modification de cette page le 23 novembre 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

    Répondre à ce 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

    Répondre à ce 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

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom