Exportation html + Classement des infos.
#1
Bonjour,

J'ai en ma possession un script TCL qui permet d'enregistrer le nombre de kicks et de bans d'une personne dans une database.
L'eggdrop récupère ces informations grâce à la commande "!info $nick''
Maintenant, j'aimerai que cet eggdrop génère une page html avec les informations de la database sous forme de classement. "L'unité" serais en points. Sachant qu'un kick vaut 1 point et un ban en vaut 2. Il faudrait que l'eggdrop établisse un classement, avec la place, le nombre de kick, le nombre de bans et le total des points.
Et en plus, j'aimerai que sur la page apparaisse la dernière actualisation de ce classement.
En pièce jointe, il y a le script tcl et une database de test dans une archive.

Merci de votre future aide.
SundayEveniing
Répondre Avertir
#2
salut,
dans la tcllib y a un package qui s appel html et qui permet de coder simplement ce que tu veux faire
C'est en reconnaissant ses erreurs que l'on progresse Wink
Répondre Avertir
#3
@djkenny: je pense que le souci de SUndayEveniing est plutôt la récupération des points et la création du classement.
Je n'ai pas encore regardé sa source, mais j'imagine qu'il va falloir créer un bubble-sort pour trier les utilisateurs en fonction de leur score.
Ceci existe peut-être déjà dans quizz.tcl d'ailleurs.
Répondre
#4
Bon, alors en cherchant un peu, j'ai trouvé des fonctions de bubble sort:
TCL
proc bubble_sort {a} {
   if {[llength $a] >= 2} {
     for {set i [expr [llength $a]-1]} {$i > 0} {incr i -1} {
       set has_swapped "FALSE"
       for {set j 0} {$j < $i} {incr j} {
         if {[lindex $a $j] > [lindex $a [expr $j + 1]]} {
           set temp [lindex $a $j]
           set a [lreplace $a $j $j [lindex $a [expr $j + 1]]]
           set a [lreplace $a [expr $j + 1] [expr $j + 1] $temp]
           set has_swapped "TRUE"
         }
       }
       if {$has_swapped == "FALSE"} {
         break
       }
     }
   }
   return $a
 }


TCL
package require Tcl 8.5
package require struct::list
 
proc bubblesort {A} {
    set len [llength $A]
    set swapped true
    while {$swapped} {
        set swapped false
        for {set i 0} {$i < $len - 1} {incr i} {
            set j [expr {$i + 1}]
            if {[lindex $A $i] > [lindex $A $j]} {
                struct::list swap A $i $j
                set swapped true
            }
        }
        incr len -1
    }
    return $A
}
 
puts [bubblesort {8 6 4 2 1 3 5 7 9}] ;# => 1 2 3 4 5 6 7 8 9


Ca ne va peut-être pas aider, je vais chercher s'il y a des fonctions plus utiles pour le cas de notre demandeur
Répondre
#5
lsort ?

Code :
% set list [list "pseudo1 10 50" "pseudo2 2 25" "pseudo3 9 1" "pseudo4 1 22"]
{pseudo1 10 50} {pseudo2 2 25} {pseudo3 9 1} {pseudo4 1 22}
% lsort -dict -index 0 $list
{pseudo1 10 50} {pseudo2 2 25} {pseudo3 9 1} {pseudo4 1 22}
% lsort -real -index 1 $list
{pseudo4 1 22} {pseudo2 2 25} {pseudo3 9 1} {pseudo1 10 50}
% lsort -real -index 2 $list
{pseudo3 9 1} {pseudo4 1 22} {pseudo2 2 25} {pseudo1 10 50}
% lsort -real -index 2 -decreasing $list
{pseudo1 10 50} {pseudo2 2 25} {pseudo4 1 22} {pseudo3 9 1}
C'est en reconnaissant ses erreurs que l'on progresse Wink
Répondre Avertir
#6
En regardant dans le trivia.tcl, il pourra trouver son bonheur.
CrazyCat a écrit :La prochaine fois, essaye d'imaginer que j'ai un cerveau ...
Répondre Avertir


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté