Szerző Téma: DIALOG + SQL  (Megtekintve 1817 alkalommal)

DIALOG + SQL
« Dátum: 2015. Március 24. - 22:15:41 »
0 Show voters
Sziasztok!
Olyan kérdésem lenne, hogy egy DIALOG_STLYE_LIST-ben, hogy tudom lekérni sql-ből az emberek nevét?
Igazából azzal lenne probléma, hogyha több nevet talál akkor 1-el több listitem legyen. Gondolkoztam már rajta de nem sikerült rájönnöm, hogy hogy tudom ezt megoldani.
Előre is köszönöm a segítséget!
« Utoljára szerkesztve: 2015. Március 24. - 22:17:28 írta ƒlaﻛh »

DIALOG + SQL
« Válasz #1 Dátum: 2015. Március 25. - 14:54:47 »
+1 Show voters

//ez a parancs alá
mysql_tquery(mysql,\"SELECT * FROM Users\",\"User_List\",\"i\",playerid);
//ez meg csak a illeszd be vhova
forward User_List(playerid);
public User_List(playerid)
{
new rows=cache_num_rows();
if(rows==0) return SendClientMessage(playerid,-1,\"{228B22}[users]: {FFA500}Nincsenek regisztrált játékosok.\"); //de ez ugysem fog megtöténni mert már az is regisztrált, akinek megjelenÍtjük :) Az más h azt nem kell listázni, akinek megmutatjuk.
new name[24],string[3500],bool:color=false;
for(new i;i<rows;i++)
{
    color=!color;
cache_get_field_content(i,\"Name\",name);
format(string,sizeof(string),\"%s{%s}%s\\n\",string,(color==false)?(\"FFD700\"):(\"DAA520\"),name);
}
ShowPlayerDialog(playerid,DIALOG_USERS,DIALOG_STYLE_LIST,\"Regisztált játékosok\",string,\"Vissza\",\"Rendben\");
return 1;
}

 
még ki is színeztem :)
de a string méretét is át írhatod, a slot-nak megfelelően.
U.I: hopsz xD csak most vettem ki a klán rendszeremből. :)
átírtam

Dupla hozzászólás automatikusan összefûzve. ( 2015. Március 25. - 15:38:01 )

De a \'Users\' tábla nevét írd át a tiédre.
A \'Name\' mező gondolom ugyanaz.
« Utoljára szerkesztve: 2015. Március 25. - 15:38:01 írta scripter »

DIALOG + SQL
« Válasz #2 Dátum: 2015. Március 26. - 18:32:24 »
0 Show voters
Köszönöm :3
Nos még ha lehet akkor egy olyan kérdésem lenne, hogyha rámegyek az egyik névre (listitemre), akkor hogy tudom megcsinálni, hogy hozzon be egy újabb dialogot és azt az embert tudjam kezelni?

DIALOG + SQL
« Válasz #3 Dátum: 2015. Március 26. - 23:47:44 »
0 Show voters

new string[32];
format(string,sizeof(string),\"SELECT * FROM Users WHERE ID=\'%d\'\",strval(listitem))
mysql_tquery(mysql,string,\"karakter\",\"i\",playerid);

 
Bocsi tabról vagyok
de ez a mysql kód ha kell a karakter publicot is megírom neked.
« Utoljára szerkesztve: 2015. Március 27. - 16:09:02 írta Kyosuke_Hiroshi »

DIALOG + SQL
« Válasz #4 Dátum: 2015. Március 27. - 15:59:33 »
0 Show voters
Megköszönöm ha megírod :)

DIALOG + SQL
« Válasz #5 Dátum: 2015. Március 27. - 16:13:51 »
0 Show voters
Ha haza értem megcsinálom viszont
R37 es mysqlt használok szóval azzal tudom megoldani neked ha úgy megfelel neked.
pl 3 adatot ki íratok vele ha megfelel pl név, szint, admin szint

DIALOG + SQL
« Válasz #6 Dátum: 2015. Március 27. - 16:24:01 »
0 Show voters
Rendben, köszönöm :)

DIALOG + SQL
« Válasz #7 Dátum: 2015. Március 27. - 17:33:37 »
0 Show voters
Tessék
 

/*
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `karakterek`;
CREATE TABLE `karakterek` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Nev` varchar(32) NOT NULL,
  `Admin` int(10) NOT NULL,
  `Szint` int(10) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
INSERT INTO `karakterek` VALUES (\'1\', \'Kyosuke_Hiroshi\', \'5555\', \'32\');
INSERT INTO `karakterek` VALUES (\'2\', \'Kyosuke_Hirooshi\', \'5554\', \'31\');
*/
#include <a_samp>
#include <a_mysql>
new sql_ID;
#define SQL_Host \"127.0.0.1\"
#define SQL_User \"root\"
#define SQL_Jelszo \"asdasd\"
#define SQL_Adatbazis \"tester\"
 
#define get_int(%1,%2,%3) (%3 = cache_get_field_content_int(%1,%2))
#define get_string cache_get_field_content
#define DIALOG_1 1
 
main()
{
}
public OnGameModeInit()
{
mysql_log(LOG_ERROR | LOG_WARNING | LOG_DEBUG, LOG_TYPE_TEXT);
sql_ID = mysql_connect(SQL_Host, SQL_User, SQL_Adatbazis, SQL_Jelszo);
SetGameModeText(\"Blank Script\");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
 
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(\"/karik\", cmdtext, true, 10) == 0)
{
new query[32];
format(query,sizeof(query),\"SELECT * FROM karakterek\",0);
mysql_tquery(sql_ID,query,\"Karakterek\",\"i\",playerid);
return 1;
}
return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1)
{
if(response)
{
   new query[128];
   format(query,sizeof(query),\"SELECT * FROM karakterek where Nev=\'%s\'\",inputtext);
   mysql_tquery(sql_ID,query,\"KarakterekStat\",\"i\",playerid);
}
}
return 1;
}
forward KarakterekStat(playerid);
public KarakterekStat(playerid)
{
new nums,fields;
cache_get_data(nums,fields);
new a,sz,nev[32],adatok[128];
if(nums)
{
get_int(0,\"Admin\",a);
get_int(0,\"Szint\",sz);
get_string(0,\"Nev\",nev);
format(adatok,sizeof(adatok),\"Admin: %d || Szint: %d || Név: %s\",a,sz,nev);
}
ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,\"Adatok\",adatok,\"OK\",\"\");
return 1;
}
forward Karakterek(playerid);
public Karakterek(playerid)
{
new nums,fields,formazas[512],nev[32];
cache_get_data(nums, fields);
if(nums)
{
new i = -1;
    for(;++i < nums;)
    {
   get_string(i,\"Nev\",nev);
   if(i == 0)
   {
      format(formazas,sizeof(formazas),\"%s\",nev);
   }
   else
   {
      format(formazas,sizeof(formazas),\"%s\\n%s\",formazas,nev);
   }
}
ShowPlayerDialog(playerid,DIALOG_1,DIALOG_STYLE_LIST,\"Karakterek\",formazas,\"OK\",\"Mégse\");
}
else
{
SendClientMessage(playerid,-1,\"Nincs karakter!\");
}
return 1;
}

 
SQL táblával mellékelve amit beimportálsz.
Ez tuti jó leteszteltem.

DIALOG + SQL
« Válasz #8 Dátum: 2015. Március 27. - 19:54:01 »
0 Show voters
A mysql insert into előtt még a tábla név után () be a mező neveket meg kell adni.
A Név mező varchar(24) elég
A kódot még lehet egyszerüsíteni és \"korszerűsíteni\"
Majd ha kell megcsinálom, csak telorol vok

DIALOG + SQL
« Válasz #9 Dátum: 2015. Március 27. - 20:43:26 »
0 Show voters
Idézetet írta: scripter date=1427482441\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"53450\" data-ipsquote-contentclass=\"forums_Topic
A mysql insert into előtt még a tábla név után () be a mező neveket meg kell adni.
A Név mező varchar(24) elég
A kódot még lehet egyszerüsíteni és \"korszerűsíteni\"
Majd ha kell megcsinálom, csak telorol vok
 
1. Okés a Navicat nevezetű remek program így exportált szóval egyenlőre abban jobban hiszek és igen tudom
INSERT INTO `tabla` (Mezo1,Mezo2,Mezo3) VALUES (\'1\', \'2\', \'3\',\'\')

 hogy így is lehet.
2. Okés ...
3. okés ez tuti működik.

DIALOG + SQL
« Válasz #10 Dátum: 2015. Március 28. - 14:24:02 »
0 Show voters
Próbáltam beilleszteni a saját modomba hát nem sikerült.
Aztán azt hittem, hogy elrontottma valamit és a te kódodat úgy ahogy van lefuttattam, átírtam az én adataimra stb (hogy sql-t elérje meg táblanevek), és azt tapasztaltam hogy nem én rontottam el, hanem a kód hibás. Nem tudom, hogy nálad, hogy működött de mikor beírtam a /karik-at kidobott annyi listitemet ahány karakter van az adatbázisban az addig oké, viszont az összes neve az hogy \"NULL\".
Ezek után ugye hiába megyek rá bármire nem adja ki a következő dialogot. :/
____________________________________________________________________
Módosítás:
Na kiderült, hogy mégis én voltam balfasz :D Elfelejtettem átírni a \"Név\" táblát \"név\"-re, mert ugye nem mindegy hogy kicsivel vagy naggyal van-e.
Nagyon szépen köszönöm a segítséget! :)
« Utoljára szerkesztve: 2015. Március 28. - 14:27:40 írta ProPeti »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal