poll, systeme de vote

Bonjour,

Je suis un peu largué sur les nouveautés de spip. Existe t'il un systeme
de vote ? J'en ai fabriqué un mais il me manque un critère que je vais
chercher dans les scripts de visite. C'est "on ne clique qu'une fois".

$ mysqldump -u spip-admin --password=*******(secret) spip poll
-- MySQL dump 9.09
--
-- Host: localhost Database: spip
---------------------------------------------------------
-- Server version 4.0.15

--
-- Table structure for table `poll`
--

CREATE TABLE poll (
  poll_id bigint(20) NOT NULL auto_increment,
  poll_active set('o','n') NOT NULL default 'o',
  poll_name varchar(32) NOT NULL default '',
  poll_desc text NOT NULL,
  poll_choices text NOT NULL,
  poll_result text NOT NULL,
  PRIMARY KEY (poll_id),
  UNIQUE KEY poll_name (poll_name)
) TYPE=MyISAM;

--
-- Dumping data for table `poll`
--

INSERT INTO poll VALUES (1,'o','test','Quelle est votre couleur préferée ?','rouge;noir;bleu','2;1;3');
INSERT INTO poll VALUES (2,'n','linux','','bien;pas bien','0;0');

il suffit d'inclure le script par:

<INCLURE(poll.php3)>

lequel est:

<?php

if($action==""){
        if($poll_choice==""){
                $query = "SELECT * FROM poll WHERE 1 AND poll_active='o'";
                $result=spip_query($query);
                $row=spip_fetch_array($result);
                echo $row['poll_desc']."<br>";
                $tmp_choice=split(";",$row['poll_choices']);
                $nbre_choice=count($tmp_choice);
                echo "<form method=get action=$PHP_SELF name=poll>";
                echo "<input type=hidden name=poll_id value=".$row['poll_id'].">";
                for($i=0;$i<$nbre_choice;$i++){
                        echo "<input name=poll_choice value=$i type=radio>".$tmp_choice[$i]."<br>";
                }
                if($id_rubrique){
                        echo "<input type=hidden name=id_rubrique value=$id_rubrique>";
                }
                if($id_article){
                        echo "<input type=hidden name=id_article value=$id_article>";
                }
                echo "<input type=submit></form>";
        }else{
                echo "Merci de votre contribution<br>";
                $query="SELECT * FROM poll WHERE 1 AND poll_id=$poll_id";
                $result=spip_query($query);
                $row=spip_fetch_array($result);
                echo "A la question <b>".$row['poll_desc']."</b>, vous avez r&eacute;pondu:<br>";
                $tmp_choice=split(";",$row['poll_choices']);
                $tmp_field=split(";",$row['poll_result']);
                $ancien=$tmp_field[$poll_choice];
                $nouveau=( $ancien + 1 );
                $tmp_field[$poll_choice]=$nouveau;
                $result_field="";
                for($i=0;$i<( count($tmp_field) - 1 );$i++){
                        $text_poll[$i]=$tmp_choice[$i];
                        $result_field.=$tmp_field[$i].";";
                        $display_result[$i]=$tmp_field[$i];
                }
                $text_poll[$i]=$tmp_choice[$i];
                $result_field.=$tmp_field[$i];
                $display_result[$i]=$tmp_field[$i];
                $query="UPDATE poll SET poll_result='$result_field' WHERE poll_id=$poll_id";
                $result=spip_query($query);
                $result_max=max($display_result);
                $result_min=min($display_result);
                for($i=0;$i<(count($display_result));$i++){
                        $result_value=(( $display_result[$i] * 100 ) / $result_max );
                        echo $text_poll[$i]."(".$display_result[$i].") <img src=images/red.jpg height=2 width=$result_value><br>";
                }
                echo "<a href=$PHP_SELF?$QUERY_STRING&action=view>voir les autres votes</a>";
        }
}else{
        if($action=="view"){
                $query="SELECT * FROM poll";
                $result=spip_query($query);
                while($row=spip_fetch_array($result)){
                        echo $row['poll_id']."-".$row['poll_name']."-".$row['poll_desc']."<br>";
                }
        }
}

Je vous l'ai copié tel quel, sans commentaires. Sinon, il s'agit de
trouver un vote dont le champs qui représente son activité est à 'o', de
placer le contenu du champs de ce qu'il faut voter dans un tableau à
partir de valeurs séparées par des point-virgules, construire des
boutons radio à partir de ces valeurs, à l'enregistrement, lire le
contenu des résultats précédents, le "désérialiser", ajouter le vote à
la valeur correspondante, "reserialiser" ces résultats et les replacer
dans le champ des résultats. Il me reste à afficher les résultats sous
la forme de barres rouges en face des chiffres sur le choix de "voir les
autres votes", faire choisir avec un <select...> et comme je vous le
disais, trouver le moyen de ne cliquer qu'une fois. Peux pas vous
montrer l'url, c'est derrière la dmz.

Gilles