Kontoauszug System
- reaL.
- Geschlossen
- Erledigt
-
-
Wenn du noch neu im Umgang mit mySQL bist ist es immer hilfreich deine Queries erst im phpMyAdmin auszuführen. Da siehst du dann direkt, ob irgendwelche Fehler auftreten und wie das Resultat aussieht nach dem Query.
-
Ich leg dir auch sehr ans Herz dich da in dem Thema mal in der Wiki durchzulesen, ist gar nicht schwer der umgang mit SQL.
-> WIKI EINTRAG <-
http://wiki.sa-mp.com/wiki/MySQL/R40 -
-
So führt der Query ins Nichts. Du musst über SAMP erstmal ermitteln welche ID der Spieler in deiner Datenbank hat und diese dann auch bei dem Query angeben (über eine Variable).
-
Zeig mal wie du deine Spieler abspeicherst
-
Achso xD
In Der Varriable pInfo[playerid][p_id] Speichere ich die Datenbankid beim Laden Des Spielers.
Und hier muss ich das dann nochmal Auslesen oder ?
-
mysql_format(handle, query, sizeof query, "SELECT * FROM kontoauszug WHERE pdb_id = %i ORDER BY ID DESC LIMIT 15", pInfo[playerid][p_id]),
mysql_pquery(handle, query, "ShowAuszug", "i", playerid);So musst das gemacht werden mit dem Query.
-
Ok
Danke dafür aber das in dem Public muss das dort auslesen wie beim Spieler laden ? -
In einer Schleife den String immer mit \n (Neue Zeile) und den neuen einträgen updaten, in dem Callback "ShowAuszug".
-
Im Public musst du nur das auslesen, was für dich relevant ist. Die Spieler-ID kennst du ja bereits, also brauchst du die auch nicht auslesen.
-
-
public ShowAuszug(playerid)
{
new string[1024], row_count = 0, getter[MAX_PLAYER_NAME], cash = 0;
cache_get_row_count(row_count);
if(row_count == 1)
{
cache_get_field_name(row_count, "Profilname", getter);
cache_get_value_name_int(row_count, "Summe", cash);
format(string, sizeof string, "1 - Empfänger: %s, Summe: %i", getter, cash);
}
else if(row_count >= 2)
{
for(new i;i<row_count;i++)
{
cache_get_field_name(i, "Profilname", getter),
cache_get_value_name_int(i, "Summe", cash),
format(string, sizeof string, "\n%s%i - Empfänger: %s, Summe: %i", string, i, getter, cash);
}
}
ShowPlayerDialog(playerid, DIALOG_AUSZUG, DIALOG_STYLE_LIST, "Deine letzten Bankauszüge", string, "Button1", "Button2");
return 1;
}//EDIT
Habs mal verbessert, %i wurde ja gar nicht ausgefüllt sag ich mal.
Probier dich mal an dem Quellcode zu orientieren und versuche so gut wie möglich auch nicht nur den Quellcode zu kopieren und einzufügen sondern ihn auch zu verstehen! -
Großes Dankeschön dafü.
Aber was stimmt da nicht -
public ShowAuszug(playerid)
{
new string[1024], row_count = 0, getter[MAX_PLAYER_NAME], cash = 0;
cache_get_row_count(row_count);
if(row_count == 0)
{
cache_get_field_name(row_count, "Profilname", getter);
cache_get_value_name_int(row_count, "Summe", cash);
format(string, sizeof string, "1 - Empfänger: %s, Summe: %i", getter, cash);
}
else if(row_count >= 1)
{
for(new i;i<row_count;i++)
{
cache_get_field_name(i, "Profilname", getter),
cache_get_value_name_int(i, "Summe", cash),
format(string, sizeof string, "\n%s%i - Empfänger: %s, Summe: %i", string, i+1, getter, cash);
}
}
ShowPlayerDialog(playerid, DIALOG_AUSZUG, DIALOG_STYLE_LIST, "Deine letzten Bankauszüge", string, "Button1", "Button2");
return 1;
}Probiers mal so
-
-
Ah natürlich, blöder Denk & Tippfehler hehe.
Sollte jetzt alles funktionieren oder ? -
Ja soweit aber als ich es umschreiben wollte hab ich was gemerkt.
Typ = 0 ?
Obwohl in der Datenbank 1 steht ?Code
Alles anzeigenforward ShowAuszug(playerid); public ShowAuszug(playerid) { new string[1024], row_count, getter[MAX_PLAYER_NAME], cash, Typ,Zeit,yea,mon,day,hou,minn,sec; cache_get_row_count(row_count); if(row_count == 1) { cache_get_value_name_int(row_count, "Typ", Typ); cache_get_value(row_count, "Info", getter); cache_get_value_name_int(row_count, "Summe", cash); cache_get_value_name_int(row_count, "Timestamp", Zeit); printf("%d",Typ); if(Typ == 1) { TimestampToDate(Zeit,yea,mon,day,hou,minn,sec,2); format(string,sizeof(string),"Am %02d.%02d.%d um %02d:%02d:%02d %d$ Eingezahlt. Ort: %s",day,mon,yea,hou,minn,sec,cash,getter); } if(Typ == 2) { TimestampToDate(Zeit,yea,mon,day,hou,minn,sec,2); format(string,sizeof(string),"Am %02d.%02d.%d um %02d:%02d:%02d %d$ Ausgezaht. Ort: %s",day,mon,yea,hou,minn,sec,cash,getter); } } else if(row_count >= 2) { for(new i;i<row_count;i++) { cache_get_value_name_int(row_count, "Typ", Typ); cache_get_value(row_count, "Info", getter); cache_get_value_name_int(row_count, "Summe", cash); cache_get_value_name_int(row_count, "Timestamp", Zeit); if(Typ == 1) { TimestampToDate(Zeit,yea,mon,day,hou,minn,sec,2); format(string,sizeof(string),"%s\n%d - Am %02d.%02d.%d um %02d:%02d:%02d %d$ Eingezahlt. Ort: %s",string,i,day,mon,yea,hou,minn,sec,cash,getter); } if(Typ == 2) { TimestampToDate(Zeit,yea,mon,day,hou,minn,sec,2); format(string,sizeof(string),"%s\n%d - Am %02d.%02d.%d um %02d:%02d:%02d %d$ Ausgezaht. Ort: %s",string,i,day,mon,yea,hou,minn,sec,cash,getter); } } } ShowPlayerDialog(playerid,DIALOG_AUSZUG,DIALOG_STYLE_LIST,"Deine letzten Bankauszüge",string,"Ok",""); return 1; }
-
Was ich vorhin eh schon fragen wollte, welche MySQL Include & Plugin Version benutzt du.
Das kannst du in der Server_Log.txt einsehen.-> MEINE SQL INFO IN DER LOG <-
//EDIT -> Hab grad gesehen gibt schon die r41-3, für die Leute die interesse haben. (Download)
-
Auch die R41-2.
Habe gemerkt der Fehler tritt nur auf wenn der Spieler nur ein Eintrag hat woran liegt das ?
-