MySQL Quest Schnittstelle

09/15/2015 14:38 AlphaGenY#1
Hallo,

ich habe versucht dieses Tutorial auszuführen:

[Only registered and activated users can see links. Click Here To Register...]

Das problem ist ich kann Git nicht installieren.
Liegt das vielleicht daran das FreeBSD 8.3 nicht mehr unterstützt wird?

Gibt es eine andere Möglichkeit auf die Datenbank innerhalb einer Quest zu zugreifen?

Vielen Dank schon mal :)
09/15/2015 15:05 Avulsed#2
Quote:
Das problem ist ich kann Git nicht installieren.
Liegt das vielleicht daran das FreeBSD 8.3 nicht mehr unterstützt wird?
Ja

Quote:
Gibt es eine andere Möglichkeit auf die Datenbank innerhalb einer Quest zu zugreifen?
Es gibt noch diese hier: [Only registered and activated users can see links. Click Here To Register...]
09/15/2015 16:24 AlphaGenY#3
Damit hast du mir schon mal sehr geholfen :)

Wie füge ich das ganze jetzt richtig ein?
Wenn man die Dateien runterlädt sind dort einige .lua aber keine questing.lua
09/15/2015 16:28 rollback#4
Quote:
Originally Posted by AlphaGenY View Post
Damit hast du mir schon mal sehr geholfen :)

Wie füge ich das ganze jetzt richtig ein?
Wenn man die Dateien runterlädt sind dort einige .lua aber keine questing.lua
Du brauchst eigentlich nur die mysql_query.lua

Entweder den Inhalt der mysql_query.lua in die questlib.lua einfügen oder die mysql_query.lua in den questordner legen und in die questlib.lua reinschreiben:
Code:
dofile("mysql_query.lua")
Anschließend musst du noch mysql_query in die quest_functions eintragen und dann kannst du es auch schon nutzen.
09/15/2015 20:54 AlphaGenY#5
Könnt ihr mir Beispiele bauen bzw. meine korrigieren?
PHP Code:
if mysql_query(SELECT account FROM coins WHERE name = '.."\\'"..pc.get_account_id().." ) =/= 0 then 
Es soll in der tabelle account der Wert der Spalte coins vergleichen werden von der Account der eingeloggt ist

PHP Code:
    os.execute('mysql account --execute=\\"UPDATE account SET coins = coins + 50 WHERE\\'"..'\\"') 
Das hab ich aus ner anderen Quest. Hoffe es erhöht den wert von coins um :D
Aber woher weiß er in welcher zeile?

ich würde gerne wissen wie ich daten vom benutzen account aus lese und vergleiche und wie ich andere daten ändere

Hoffe ihr könnt mir helfen:handsdown:
09/15/2015 21:00 rollback#6
Quote:
Originally Posted by AlphaGenY View Post
Aber woher weiß er in welcher zeile?

ich würde gerne wissen wie ich daten vom benutzen account aus lese und vergleiche und wie ich andere daten ändere
[Only registered and activated users can see links. Click Here To Register...]

Die Query wird an die Funktion als String übergeben ;)
09/15/2015 21:21 AlphaGenY#7
Ein Beispiel jeweils zum modifizieren bitte, bin nicht so fit im questen und vor allem nicht in MySQL :D Lehre mich :P
09/15/2015 21:53 rollback#8
Code:
local coinsAmount = 1
mysql_query("UPDATE account.account SET coins = coins + " .. coinsAmount .. " WHERE id = " .. pc.get_player_id() .. " LIMIT 1;")
09/15/2015 22:21 AlphaGenY#9
Das ist sehr nett :)
Was macht das Limit am Ende ?

Müssen nicht noch iwie die Daten vom MySQL Server übermittelt werden?
Sprich Ip, Login und Passwort?
09/15/2015 22:33 rollback#10
Quote:
Originally Posted by AlphaGenY View Post
Das ist sehr nett :)
Was macht das Limit am Ende ?

Müssen nicht noch iwie die Daten vom MySQL Server übermittelt werden?
Sprich Ip, Login und Passwort?
Das Limit sagt, dass nur ein Datensatz geändert werden soll.

IP etc liest die funktion aus den CONFIGs aus
09/15/2015 22:44 AlphaGenY#11
PHP Code:
if mysql_query("SELECT account.account FROM coins WHERE id = " .. pc.get_player_id() .. " LIMIT 1;") =/= 0 then 
Wenn coins ungleich 0 sind dann ...
Macht das Sinn ? :D
09/15/2015 22:57 rollback#12
Mysql_query gibt bei einem select einen lua table mit allen vom select zurückgegebenen Datensätzen zurück. Jeder Datensatz ist ein lua table mit den Werten zu jeder selektierten spalte.

Du hast in der query select und from vertauscht (select columns from table)

Ungleich schreibt man anders, allerdings sind ohne Veränderung alle Werte in den Datensätzen strings
09/15/2015 23:28 AlphaGenY#13
Da kommt ja einiges hoch was ich die letzten Semester versucht habe in Uni zu verdrängen :D
Studiere Maschinenbau und muss deshalb Informatik belegen (c++)
Ist nicht soo viel hängengeblieben

Okay String ist Text. Auch wenn der Text eine Zahl ist :D
Aber man kann den String in eine andere Variable umwandeln glaube ich :P

PHP Code:
a = tonumber("mysql_query("FROM account.account SELECT coins WHERE id = " .. pc.get_player_id() .. " LIMIT 1;")") 
PHP Code:
if a ~= 0 then 
09/16/2015 02:02 #Metho#14
Also ich würde dir empfehlen dass ganze in SQL zumachen, dabei geht der Datentyp nciht verloren und du rufst die DB meistens nur 2 bis 3 mal auf. Guck' mal nach IF und ELSE in SQL von MySQL
09/16/2015 07:30 rollback#15
Die mysql query muss schon noch als Funktion aufgerufen werden :rolleyes:

Wie gesagt, die funktion gibt einen table mit allen Datensätzen zurück

Wenn du genau sagst was du vor hast können wir auch vielleicht helfen eine bessere Lösung zu finden (zb die if abfrage innerhalb der datenbank zu machen, wie Metho sagte)