[Tuto] mysqltcl pour les nuls
#1
à la demande d'un utilisateur de la board je me permet de refaire un tuto

@Source: Eggdrop.fr - wiki:mysqltcl

Pré-requis: Votre dédié dois disposer d'un serveur mySQL

le package mysqltcl
information:

Le package mysqltcl permet a un script TCL d'effectuer des requêtes
sur une base de donnée SQL, On va donc travailler sur les principales
requêtes qui sont: INSERT INTO, UPDATE, SELECT & DELETE FROM, mais avant
on va préparer le serveur à accueillir les requêtes via le language TCL

Nous avons besoin du package mysqltcl
logguez-vous en root sur votre serveur et effectuez la commande suivante

Code:
# apt-get install mysqltcl
Si vous n'avez pas accès au root du dédié demandez à l'administrateur
si le package mysqltcl à été installé sur son dédié

Ce dont on a besoin pour ce TCL:
Le login
Le pass
Le nom de la base
un endroit pour générer une socket

on commence:

on va donc maintenant créer notre requête SQL pour créer notre table

Code:
--
-- Structure de la table `acces`
--
CREATE TABLE  `acces` (
`pseudo` TEXT NOT NULL ,
`pass` TEXT NOT NULL ,
`grade` TEXT NOT NULL ,
`suspend` TEXT NOT NULL ,
`status` TEXT NOT NULL ,
`nick` TEXT NOT NULL
) ENGINE = MYISAM DEFAULT CHARSET=latin1;
--
-- Contenu de la table `acces`
--
INSERT INTO `acces` (`pseudo`, `pass`, `grade`, `suspend`, `statut`, `nick`) VALUES ('Ahinu', 'b3rliN', '4', 'OFF', 'OFF', '0');
On crée donc par la même occasion l'accès (pseudo Ahinu) avec le mot de passe (pass b3rliN) sur le grade IRC Admin (grade 4)
dont le suspend n'est pas actif (suspend Off) ou l'accès n'est pas utilisé (status off) et le nick n'est pas logué (nick 0)


Code:
# vi acces.tcl
On va dans un premier temps créer la configuration de connexion à la base mySQL
Et afficher la liste des utilisateurs enregistrés dans le robot


tcl
#######################################
# Mon premier script tcl avec mysqtcl #
#######################################
#Login mySQL
set ahi(sql:login) "ahinu"
#Pass mySQL
set ahi(sql:pass) "beRl1"
#base mySQL			
set ahi(sql:db) "ahinu"
#IP mySQL		
set ahi(sql:host) "127.0.0.1"
#socket mySQL
set ahi(sql:sock) "/tmp/ahi.sock"
 
#Vérification si le package mysqltcl est prèsent !
catch {package require mysqltcl}
 
# Connexion à la base SQL #
proc service:connect {} {
	set ::mysqlink [mysqlconnect -host $::ahi(sql:host) -user $::ahi(sql:login) -password $::ahi(sql:pass) -sock $::ahi(sql:sock)]
	mysqluse $::mysqlink $::ahi(sql:db)
}
# Déconnexion de la base SQL # 
proc service:deconnect {} {
	mysqlclose $::mysqlink; unset -nocomplain ::mysqlink	
}
 
bind pub - !admin admin:pub
	proc admin:pub {nick host hand channel arg} {
	set nbadmin "0"
	set nblog "0"
	dccbroadcast "*** \2Admin\2 by $nick"
	putquick "NOTICE $nick :\2\0034Authed IDNick Level Nick" 
	service:connect
	mysqlsel $::mysqlink "SELECT * FROM `acces` ORDER BY pseudo"
	if {[mysqlresult $::mysqlink rows] ne 0} {
		while {[set row [mysqlnext $::mysqlink]] != ""} {
			set suspend [lindex $row 3]
			set status [lindex $row 4]
			if {$suspend!="ON"} {
				incr nbadmin 1
				if {$status=="ON"} {
					incr nblog 1
					set status "\2\0033YES\003\2"
					putquick "NOTICE $nick :$status [lindex $row 0] [lindex $row 2] [lindex $row 5]"
				} else {
					set status "\2\0034NO\003\2"
					putquick "NOTICE $nick :$status [lindex $row 0] [lindex $row 2]"
				}
			}
		}
	}
	service:deconnect
	putquick "NOTICE $nick :Il y a $nbadmin Admin enregistré dont $nblog en ligne"
}


Si vous exécutez la commande !admin vous verrez apparaître:


Code:
# Authed IDNick Level Nick
# NO Ahinu 4
PS: Ce tutoriel sera mis à jour très fréquemment
[Image: http://www.web-modules.net/upload/cache/...156/61.gif]
[ www.Ahinu.tk ]

Programmation TCL interprété via Eggdrop + package mysqltcl
=> TCL+SQL~PHP

@Nordnet.
#2
Hum, ce script n'explique pas grand chose.
Et je rappelle qu'il y a la page http://wiki.eggdrop.fr/Package:MySQLTcl (et ses sous-pages) qui ne demande qu'à s'enrichir.
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#3
Je ne l'ai pas fini, je vais l'enrichir de jour en jour Crazy et oui, ton article wiki et déjà cité tout en haut ;)
[Image: http://www.web-modules.net/upload/cache/...156/61.gif]
[ www.Ahinu.tk ]

Programmation TCL interprété via Eggdrop + package mysqltcl
=> TCL+SQL~PHP

@Nordnet.
#4
As-tu compris la différence entre un forum et un wiki ?
Si tu comptes modifier ton post initial de temps en temps, outre que tu ne pourras pas, ça ne sert à rien, il vaut mieux une page wiki.
Si tu comptes ajouter des réponses pour enrichir ton tutoriel, tu devrais faire des posts complets, pas juste mettre une source et dire "ben voila ce que ça fait".

Pour moi, un tuto c'est un code bien expliqué, ligne par ligne ou presque.
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#5
bien dans c'est cas la supprime le sujet ! MERCI
[Image: http://www.web-modules.net/upload/cache/...156/61.gif]
[ www.Ahinu.tk ]

Programmation TCL interprété via Eggdrop + package mysqltcl
=> TCL+SQL~PHP

@Nordnet.
#6
Sympa..

Je pense que je vais me faire mon Gestion.Bot en mysqltcl sa l'air sympatique.
Faudrais je regarde de plus près comment faire sa correctement mais c'est assez pas mal.

Une question :
Il et possible de faire ce type de codage en mysqltcl ayant du namespace et du msgcat ?
#7
(14/12/2012, 16:48)Ahinu Wrote: bien dans c'est cas la supprime le sujet ! MERCI

Pourquoi ne pas plutôt contribuer au wiki comme le propose CrazyCat ?
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#8
@MenzA :Pas de droit pour modifié le wiki MenzA sinon sa aurai été avec plaisir pour le faire, mais pas grave, j'ai repris mon modele pour le faire sur mon site

@alias :Je l'avais commencé pour toi alias justement, et oui c'est possible ;)
[Image: http://www.web-modules.net/upload/cache/...156/61.gif]
[ www.Ahinu.tk ]

Programmation TCL interprété via Eggdrop + package mysqltcl
=> TCL+SQL~PHP

@Nordnet.
#9
@Ahinu : Essaie de te loguer sur le wiki avec le même nom d'utilisateur / mot de passe que sur le forum.

Si ça ne fonctionne pas, c'est qu'il y a un problème que CrazyCat s'empressera de régler si tu le confirmes.
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#10
(14/12/2012, 19:57)alias_angelius Wrote: Une question :
Il et possible de faire ce type de codage en mysqltcl ayant du namespace et du msgcat ?
Je ne vois pas le rapport (ou les soucis possibles) avec l'utilisation d'un namespace ou de msgcat.
Une requête SQL, c'est du texte, tu la fais comme tu veux. Et les champs qu'elle retourne, tu en fais ce que tu veux, ce sont des variables comme les autres.

(14/12/2012, 21:01)Ahinu Wrote: @MenzA :Pas de droit pour modifié le wiki MenzA sinon sa aurai été avec plaisir pour le faire, mais pas grave, j'ai repris mon modele pour le faire sur mon site
(14/12/2012, 21:09)MenzAgitat Wrote: @Ahinu : Essaie de te loguer sur le wiki avec le même nom d'utilisateur / mot de passe que sur le forum.

Si ça ne fonctionne pas, c'est qu'il y a un problème que CrazyCat s'empressera de régler si tu le confirmes.

Comme dit MenzAgitat, c'est d'ailleurs clairement dit sur le wiki, dans la page d'accueil:
Pour pouvoir éditer ou ajouter un article, vous devez être inscrit sur le Forum
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#11
Voila, il y a désormais la plupart des commandes MysqlTcl expliquées sur le wiki.
Ce n'est pas complet, je n'ai mis que les principalement utilisées, mais cela doit vous permettre de comprendre les scripts utilisant ce package et de créer les votres.

Comme précisé sur la page, il vaut mieux utiliser les commandes du namespace mysql plutôt que les alias.
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#12
Sympa j'aime bien.
Par contre il et pas expliquer Ou mettre la base SQL exemple :

J'ai une table SQL je fait quoi je mais quand quel type de fichier il se nomme comment ?
Ont mais sa dans un eggdrop ou autre faudrait préciser ce point là x)
#13
Heu, une table MySQL, ça va sur un serveur MySQL, pas sur l'eggdrop. Ce n'est pas un simple fichier.
Je pense qu'il te manque certaines (sans jeu de mots) bases ;)
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#14
J'ai pas commencer encore..

Oui me manque certaines bases..
J'essayerai de chercher
#15
Un petit rappel qui me semble utile, suite à une question posée sur IRC:
Quote:et toute les instruction mysql fonctionne left join entre autre ???

Ainsi que je l'ai dit plus haut:
CrazyCat Wrote:Une requête SQL, c'est du texte, tu la fais comme tu veux. Et les champs qu'elle retourne, tu en fais ce que tu veux, ce sont des variables comme les autres.
mysqltcl permet de se connecter à un serveur MySQL et d'effectuer des requêtes, mais il ne les interprète pas, c'est bien le serveur qui fait ça. Cette question revient un peu à demander si les commandes party-line d'un eggdrop, lorsqu'on se connecte par telnet, sont les mêmes que celles utilisées lorsqu'on est en DCC. Ca n'est qu'un tunnel dans lequel vous envoyez vos requêtes.
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Tuto] Coder proprement un script en TCL Mareo 15 16,495 06/12/2012, 09:53
Last Post: Ahinu
  [Tuto] Installation de Megahal aliasangelius 0 6,293 15/10/2011, 11:29
Last Post: aliasangelius

Forum Jump:


Users browsing this thread: 1 Guest(s)