Requette dans BDD
#1
Bonjour,

je suis à la recherche d'une méthode afin de réaliser la chose suivante :

==>sur le chan
une commande !search 2013

TRaitement par le bot :
==>$request=select date from Annee where date="2013";
echo $request

==> sur le chan : le bot annonce le resultat de la request

je pense que le script mysql peut fonctionner mais je ne sais par ou commencer afin d'obtenir la bonne méthode.

merci pour votre aide
Répondre Avertir
#2
As-tu pensé à regarder sur le wiki ? http://wiki.eggdrop.fr/Mysql
Répondre
#3
bonjour,

effectivement je n'avais pas regardé du côté du wiki c'est en recherchant sur google avec le nom du script que j'ai trouvé quelque info, mais le wiki est parfait.
merci pour le lien, j'ai plutôt bien avancé sur ce que je voulais faire

cependant j'ai deux problème :

1.Optimisation :

actuellement j'effectue une requete pour sortir chaque champ indépendamment dans une variable :
Code :
set date [mysqlsel $mysql(handle) "SELECT date FROM table_01 WHERE nom LIKE '%$arg%' " -list]
putserv "privmsg $chan : $date"

Grâce à sa je récupere le champ date quand l'utilisateur tape !fonction **
**== la valeur rechercher
donc je dois réaliser 4 requetes pour enfin sortir ceci :
putserv "privmsg $chan : $date $nom $prenom $info"

comment réaliser 1seul requete ?
car si je fais :
Code :
set total [mysqlsel $mysql(handle) "SELECT * FROM table_01 WHERE nom LIKE '%$arg%' ORDER BY date DESC;" -list]
j'arrive avec un resultat du genre :
{{date} {nom} {prenom} {info}}

je ne trouve pas comment mettre en variable les infos de la liste car sa diminue ma charge de BDD énormement


2.sur le champ date :

le champ date reste de la forme :
{2013-11-31 14:01:12}
et non en 2013-11-31 14:01:12
comment je peux faire pour retire les crocher ?

merci pour ton aide
Répondre Avertir
#4
Pour ton point d'optimisation, je pense que tu devrais étudier un peu plus les requêtes SQL.
En plus ta requête, vu comme ça, doit te ramener plus d'un enregistrement, donc ce que je ferais:
TCL
set qry "SELECT UNIXTIMESTAMP(date) as udate, nom, prenom, info FROM table_01 WHERE nom LIKE '%$arg%'"
set res [mysqlsel $mysql(handle) $qry -flatlist]
foreach total $res { putlog [join $total] }


Et pour ton point 2... mysqlsel retourne une liste, c'est pour ça que tu as des { }, il faut donc utiliser dans ton code des lindex, ou bien convertir correctement la liste en chaine.

Et c'est une très mauvaise idée d'appeler un champ "date", c'est un mot-clé en mysql.
Répondre
#5
pour l'optimisation c'est ok je te remercie pour tes conseils.
par contre que veux tu dire par convertir la liste en chaine ?

je pense que je devrais trouvé la réponse dans le wiki au niveau des chaines ^^

sinon pour date j'ai changé pour ne pas être bloqué plus tard dans l'exploitation de la BDD
Répondre Avertir


Atteindre :


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