aide pour le script
#4
Bonjour,

alors tout d'abord merci pour vos réponses:

CrazyCat:

Citation :OMG, quelle horreur.

Désolé, mais comme je te l'ai dis je suis un débutant en tcl et j'essaie de faire du mieux que je peux :/...

Sinon tu me demande:
Citation :Pourquoi pas plutôt [llength $sql]?

cela ne change pas mon problème : la base de donnée se met bien à jour mais mon problème c'est l'annonce qui se fait autant de fois qu'on envoie l'information sur le canal $infochan. Moi je souhaiterai qu'il n’annonce qu'une seule fois lors de la mise à jour ensuite il ne doit plus annoncer.

mcdeffice:

Le code est magnifique comme cela, mais, comme je l'explique plus haut, si 10 utilisateurs ou robots mettent la même info en même temps, alors il y a 10 annonces identiques sur le canal $echochan, ce qui me fais me dire que je mets à jour à chaque fois la base de donnée aussi...

En gros voici le code comme je l'imagine (je mets les commentaires):
Code :
proc addinfo { nick uhost handle chan text } {
    global infochan echochan
    package require mysqltcl
    
# Creation d'un socket MySQL.    
    set mysql(HANDLE) [mysqlconnect -host $::mysql(HOSTNAME) -user $::mysql(USERNAME) -password $::mysql(PASSWORD) -port $::mysql(PORT) -db $::mysql(DB)];
    
# Verification du salon (si ce n'est pas le bon salon on passe à autre chose).
# Verification que 'name', 'age', et 'an' soit present dans 'text' sinon on passe à autre chose.
    if {$chan != $infochan && [llength $text] != 3} { return }
    set args [split $text " "]
    set name [lindex $args 0];
    set age [lindex $args 1];
    set an  [lindex $args 2];
    
# Prise des données depuis la base.    
    set SQL_SEL [mysqlsel $mysql(HANDLE) "SELECT `age`, `an` FROM dbase WHERE `name` = '$name'" -flatlist];
    
# Verification que SQL_SEL retourne une valeur pour 'age' et 'an'    
    if { [llength $SQL_SEL] == 2 } {
    
# Si SQL_SEL retourne une valeur pour 'age' et 'an', on ne continue pas on arrete là et on ferme le socket MySQL.
    mysqlclose $mysql(HANDLE);
    return 0;
    }

# Sinon mise à jour de la base de donnée.
    mysqlexec $mysql(HANDLE) "UPDATE releases SET `age` = '$age', `an` = '$an' WHERE `name` = '$name'";
    
# # Annonce sur les salons contenu dans la liste 'echochan'
    foreach { chan } [split $echochan " "] {
    putquick "PRIVMSG $chan :\[\!iNFO\]\:: $name \:: \[$age\] \[$an\] \[By $nick\] \[1s\]";
    }
    }
    
# Fermeture du socket MySQL.    
    mysqlclose $mysql(HANDLE);
}

Voila je ne sais pas si je pense bien mais en tout cas la base de donnée se rempli bien, mais l'annonce sur $echochan ne s’arrête pas à une seule annonce si plusieurs envoie la même information. Donc comment je peux faire pour que la mise à jour de la base de donnée et l’annonce ne se fait qu'une seule fois pour la même information ?

A bientôt Nos...
Répondre Avertir


Messages dans ce sujet
aide pour le script - par Nostromo1st - 11/09/2013, 18:44
RE: aide pour le script - par CrazyCat - 11/09/2013, 22:37
RE: aide pour le script - par ZarTek - 12/09/2013, 07:34
RE: aide pour le script - par Nostromo1st - 12/09/2013, 15:52
RE: aide pour le script - par ZarTek - 12/09/2013, 16:01
RE: aide pour le script - par Nostromo1st - 12/09/2013, 16:32
RE: aide pour le script - par ZarTek - 12/09/2013, 18:23
RE: aide pour le script - par CrazyCat - 12/09/2013, 23:28
RE: aide pour le script - par Nostromo1st - 12/09/2013, 19:11
RE: aide pour le script - par Nostromo1st - 14/09/2013, 11:34
RE: aide pour le script - par CrazyCat - 14/09/2013, 12:09
RE: aide pour le script - par Nostromo1st - 15/09/2013, 10:28
RE: aide pour le script - par CrazyCat - 15/09/2013, 15:08
RE: aide pour le script - par Nostromo1st - 16/09/2013, 16:24

Atteindre :


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