PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Eggdrop] SQL Abfrage und Channel ausgabe


DeKoN
20.06.2005, 07:20
Guten Morgen Leute,

versuche schon seit 4 uhr verbissen ein kleines Script zu schreiben, womit ich daten aus einer SQL Datenbank auslesen kann.

Mein Anfang ist schonmal :

Code:
#SQL-Datenbank-Daten

set db(host) "localhost"
set db(id) "test"
set db(pass) "test"
set db(dbase) "test"
set db(prefix) "search"
set db(table) "searchdb"

#Channel und Char einstellungen

set mq(chans) "#channel,#channel2"
set mq(char) "!"
set mq(addflag) "-"




Soweit so gut.... aber wie stelle ich es nun an das er in der DB nach etwas sucht ?

Wenn ich im channel z.B. !Search test eingebe, er dann mir die daten zu "test" ausgibt ? Dazu muss man sagen das in der SQL dann folgende Table einträge sind Eintrag#1 (das wonach gesucht werden kann) Eintrag#2 (dann z.B. ein Datum drin hat) und der Eintrag#3 (noch einen kleinen text vielelciht drin hat, muss aber nicht sein).

Kann mir da vielleicht ein erfahrener TCl Scripter helfen ?

Danke schonmal im Voraus.


Cu DeKoN


DrSnuggles
21.06.2005, 09:54
deine angaben sind ein leider wenig duerftig :(
ich geh mal einfach davon aus,dass du eine mysql-datenbank meinst?
infos ueber eine gute library und deren funktionen findest du unter:
http://www.xdobry.de/mysqltcl/

DarkAngel52457
21.06.2005, 19:49
sql2 connect $db(host) $db(user) $db(pass)
sql2 selectdb $db(dbase)
set outp [sql2 query "SELECT * FROM $db(table) WHERE tralala LIKE '$arg' ORDER BY unixtime DESC LIMIT 3"]
set sql_entrys [sql2 query "select count(*) from $db(table)"]
sql2 disconnect

so sollte es gehen aber deine angaben reichen leider überhaupt nicht aus

DeKoN
22.06.2005, 12:43
Hmmm das von DarkAngel sieht schonmal interesant aus.

Es soll halt einfach so sein. Wenn jemand im Channel z.B. !search *irgendwas* eingibt, soll der Bot nachher in der MySQL datei nach der sache suchen und halt 3 oder auch mehere Beiträge im Channel wieder geben.

Aber er soll dann halt alle 4 ausgeben wie wie oben gesagt das Feld#1 feld#2 feld#3 und halt Feld#4 ausgegeben werden...

Beispiel:

Feld#1 ist das wonach gesucht wird oder werden kann... was der Hauptsuchpunkt ist.
Feld#2 Hat dann z.B. noch ne Zeitangabe wann diese News reingestellt worden sind
Feld#3 hat z.B. den inhalt wer die News verfasst hat
und Feld#4 dort könnten infos drin sein, müssen aber nicht. Das müste das script auseinander halten können falls das geht.

Also user gibt ein

!search *ATI*

bot gibt aus:

Botname - Ati neue treiber - wurden am 2005-06-21 12:04:24 von Bernd geschrieben

Botname - Ati neue Grafikkarte.... - wurden am 2005-06-21 13:04:24 von Erni geschrieben - *feld#4* Eine sehr gute karte zum Zocken

Botname - Ati neuen Chef - 2005-06-21 12:04:24 von Arni geschrieben

Also das sind nur beispiele, damits etwas klarer wird....

Botname - *Feld#1* - wurde am *Feld#2* von *Feld#3* geschrieben - *Feld#4*

So sollte es dann mal aussehen, wenn es möglich ist...

Feld 1-4 sind halt nur die Spalten definationen in der MYSQL Tabelle .... damit man weiss was wohin geschrieben werden soll....

Hoffe es ist ein wenig klarer geworden, probiere gerade noch ein wenig rum aber irgendwie mag der nicht :(

Hoffe ihr könnt mir weiter helfen. Danke schonmal für...


Cu DeKoN

DarkAngel52457
22.06.2005, 16:03
ich kann mir eigendlich denken was du so vorhst aber wenn du mal etwas die suche benutzt hättest wärst du auf das hier gestoßen denke mal damit kannst du arbeiten und es für deine wünsche anpassen


http://www.coding-board.de/board/archive/index.php/t-13047.html

DeKoN
22.06.2005, 18:23
Hmmm habs mir mal durchgelesen ..... das gleiche script wollte ich nicht, aber die funktionen sind fast gleich....

Habs mir mal durchgelesen und dort steht ja das kein Script Funzt... :(

und wirklich was rausfiltern was ich noch übernehmen könnte war da auch nicht :(

kann mir noch wer helfen ? :(


Cu Cyberrax

DarkAngel52457
23.06.2005, 21:19
ich verstehe nicht so ganz dein problem du hast denn teil für das auslesen aus der db denn rest sollte man daoch so hin bekommen


set arg [lindex $args 0]
set arg [string map [list {*} "%"] $arg]

sql2 connect $db(host) $db(user) $db(pass)
sql2 selectdb $db(dbase)
set outp [sql2 query "SELECT * FROM $db(table) WHERE tralala LIKE '$arg' ORDER BY unixtime DESC LIMIT 3"]
set sql_entrys [sql2 query "select count(*) from $db(table)"]
sql2 disconnect



jetzt noch das output setzen was er dir im irc ausgeben soll das kannst du dir ja aus einem script anschauen von denen es hier genug gibt und dann sollte es doch gehen