12/09/2013, 18:23
Code :
proc addinfo { nick uhost handle chan text } {
package require mysqltcl
set name [lindex $args 0];
set age [lindex $args 1];
set an [lindex $args 2];
# Creation d'un socket MySQL.
set mysql(HANDLE) [mysqlconnect -host $::mysql(HOSTNAME) -user $::mysql(USERNAME) -password $::mysql(PASSWORD) -port $::mysql(PORT) -db $::mysql(DB)];
# Prise des données depuis la base.
set SQL_SEL [mysqlsel $mysql(HANDLE) "SELECT `age`, `an` FROM `dbase` WHERE `name` = '$name'" -flatlist];
# Verification du salon.
# // que 'name', 'age', et 'an' soit present dans 'text'
# // que SQL_SEL retourne aucune valeur pour 'age' ou pour 'an'
if { $chan == $::infochan \
&& [llength $text] == 3 \
&& ( [lindex $SQL_SEL 0] == "" || [lindex $SQL_SEL 1] == "" ) } {
# Mise à jour en base de donnée.
mysqlexec $mysql(HANDLE) "UPDATE `dbase` 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 di socket MySQL.
mysqlclose $mysql(HANDLE);
}
A priori le soucis, serais le faite que [llength $SQL_SEL] compté toujours 2 longueurs même si elle s'etais "NULL" du coup changer en
Code :
&& ( [lindex $SQL_SEL 0] == "" || [lindex $SQL_SEL 1] == ""
J'ai profiter pour corriger l'erreur du $name