Szerző Téma: MySQL fetch int nem mûködik  (Megtekintve 2774 alkalommal)

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
MySQL fetch int nem mûködik
« Dátum: 2014. március 29. - 18:46:21 »
0 Show voters
Sziasztok! Már kezdtem örülni, hogy ma nem kell írjak segítségért, de sajnos megint egy problémába ütköztem. Elkezdtem a táskarendszerem mysql-ben és teljesen elakadtam, nem értem miért nem úgy mûködik ahogy kéne.
 
stock TaskaBetolt(playerid)
{
new query[128+1], dialog[1024+1];
new ertek;
for(new i = 1; i < ITEMS; i++)
{
format(query, sizeof(query), \"SELECT %i FROM taska WHERE username = \'%s\'\", i, playername(playerid));
mysql_query(query);
mysql_store_result();
ertek = mysql_fetch_int();
if(ertek == 0) { continue; }
if(strlen(dialog)) {
   format(dialog,sizeof(dialog),\"%s\\n%s\",dialog, taskatartalom);
}
else {
   format(dialog,sizeof(dialog),\"%s\",taskatartalom);
}
mysql_free_result();
}
ShowPlayerDialog(playerid, TASKA, DIALOG_STYLE_LIST, \"Táska\", dialog, \"Választ\", \"Kilép\");
}

 
Konkrétan az a gond, hogy mintha nem venné figyelembe a 10. sort. Nem ugorja át azt, ahol az érték nulla és ehelyett kiírja nekem az összes taskatartalom tömbben szereplõ nevet. Mit lehet tenni?
« Utoljára szerkesztve: 2014. március 29. - 18:48:59 írta doboka98 »

MySQL fetch int nem mûködik
« Válasz #1 Dátum: 2014. március 30. - 16:10:04 »
0 Show voters
\"SELECT %i FROM taska WHERE username = \'%s\'\"

 
ehelyett nem ezt szeretted volna?
 
\"SELECT ertek FROM taska WHERE username = \'%s\'\"

 
számomra az a %i az elején értelmetlen.. ^^

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
MySQL fetch int nem mûködik
« Válasz #2 Dátum: 2014. március 30. - 17:12:38 »
0 Show voters
Nem. Arról van szó, hogy a táblában a soraim (oszlopaim) neve számok 1-47-ig. Tehát 1, 2, 3....47. Ezért ilyen egyszerû, kiválasztja az i elemet a taska táblából, ahol username a player.

MySQL fetch int nem mûködik
« Válasz #3 Dátum: 2014. március 30. - 18:51:47 »
0 Show voters
Nagyon fejre állítottad a dolgokat,
van egy táblád aminek a neve taska abban létrehoztál 1-tõl 47-ig oszlopokat,
alatta milyen formában vagy melyik oszlopban tárolod a felhasználónevet illetve milyen értéket is szeretnél megjeleníteni?
Mivel egy oszlopban és az azt keresztezõ sorban egy adatot lehet tárolni kettõ nem fér el maximum ha karakterláncként tárolod mondjuk vesszõvel elválasztva, \"Árpád,23\".
Valahogy értelmetlen az egész, kezd újra és ne használj for ciklusban mysql_query utasítást mert nagyon sokáig tart míg lefut, egyszóval lassú (akadozó) módod lesz.

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
MySQL fetch int nem mûködik
« Válasz #4 Dátum: 2014. március 30. - 18:54:16 »
0 Show voters
A lényeg az, hogy egy táskarendszert szeretnék. Az 1-47-ig az oszlopok a fegyver ID-k. A ciklus lefut és amikor az i=1, akkor az 1-es weapont ID-t kéri ki és ha annak az értéke 0, akkor nem írja be a dialogba, továbbmegy. Ezt lehetne egyszerûbben megoldani?
Szerk. : A username a 0. oszlop, utána jönnek a számok.
« Utoljára szerkesztve: 2014. március 30. - 19:04:41 írta doboka98 »

MySQL fetch int nem mûködik
« Válasz #5 Dátum: 2014. március 30. - 19:03:29 »
0 Show voters
Ha jól értem, te annyit szeretnél hogy milyen fegyver legyen.
Biztosan lehetséges egyszerûbben megoldani.

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
MySQL fetch int nem mûködik
« Válasz #6 Dátum: 2014. március 30. - 19:07:07 »
0 Show voters
Nem feltétlenül, úgy gondoltam, hogy a 47 után (a weapon id-k vége után) adok hozzá további tárgyakat, amiket ugyanígy tárolok (pl. szendvics, kulcs. stb.). Úgy szeretném, hogyha pl. az oszlopok értéke 2, akkor 2 darab legyen az adott tárgyból/fegyverbõl (itt lõszer). Ez kicsit érthetetlen lehet, de nem tudom hogyan oldhatnám meg a táskarendszerem másképp.

MySQL fetch int nem mûködik
« Válasz #7 Dátum: 2014. március 30. - 19:40:53 »
0 Show voters
Értem, akkor is az adat lekérésed nem jó.
Egyetlen sql utasítással kellene lekérned minden adatot amire éppen szükséged van, most az összesre mivel 47 darab fegyver közül kell kiszedned azokat amelyek gyakorlatilag megvannak tehát egy az értékük:
 
 mysql_query(\"SELECT * FROM taska WHERE username = \'%s\'\");

 
Majd a vissza kapott adatok alapján tudod eldönteni melyik fegyvert kell ténylegesen ki íratni dialogba, idõvel persze gondot fog okozni majd az is ha a dialogból kell kiválasztani egyet és azt oda adni a játékosnak, mivel ott már csak azok a dolgok szerepelnek amik megvannak, a helyedben azt hogy van-e fegyver ugyanazzal az értékkel tüntetném fel ami a fegyver valódi ID értéke és mondjuk -1-el ha nincs neki:
1 2 3  4 5 6   7 8
1 2 3 -1 5 6 -1 8
Itt tehát a 4-es és a 7-es nincs a játékosnak meg.
Ezzel a módszerrel könnyebben tudsz nevet adni felsorolásban a dolgoknak és könnyebben vissza lehet azonosítani mikor kiválasztja azt egy játékos.
Egyébként elég nagy fába vágtad a fejszéd így kezdésnek. :D

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
MySQL fetch int nem mûködik
« Válasz #8 Dátum: 2014. március 30. - 19:53:22 »
0 Show voters
Igen, de akkor itt hogy fogom tárolni az ammot? :D

MySQL fetch int nem mûködik
« Válasz #9 Dátum: 2014. március 30. - 20:09:37 »
0 Show voters
Akkor a késõbbi azonosításra mást kell kitalálnod, mert igazad van tárolhatod ott a lõszer mennyiségét is.

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
MySQL fetch int nem mûködik
« Válasz #10 Dátum: 2014. március 30. - 20:21:54 »
0 Show voters
Nagyon nem tudom hogy tudnám ezt kivitelezni és nem szeretném ezt a részt átugrani.

Dupla hozzászólás automatikusan összefûzve. ( 2014. március 31. - 18:15:25 )

:D Jaj ez a samp. Nem mûködik az ami eddig mûködött. Most a parancsra unknown commandot ír, holott ezelõtt még ugyanígy mûködött :D. Mekkora fos már ez.
« Utoljára szerkesztve: 2014. március 31. - 18:15:25 írta doboka98 »

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
MySQL fetch int nem mûködik
« Válasz #11 Dátum: 2014. március 29. - 18:46:21 »
0 Show voters
Sziasztok! Már kezdtem örülni, hogy ma nem kell írjak segítségért, de sajnos megint egy problémába ütköztem. Elkezdtem a táskarendszerem mysql-ben és teljesen elakadtam, nem értem miért nem úgy mûködik ahogy kéne.
 
stock TaskaBetolt(playerid)
{
new query[128+1], dialog[1024+1];
new ertek;
for(new i = 1; i < ITEMS; i++)
{
format(query, sizeof(query), \"SELECT %i FROM taska WHERE username = \'%s\'\", i, playername(playerid));
mysql_query(query);
mysql_store_result();
ertek = mysql_fetch_int();
if(ertek == 0) { continue; }
if(strlen(dialog)) {
   format(dialog,sizeof(dialog),\"%s\\n%s\",dialog, taskatartalom);
}
else {
   format(dialog,sizeof(dialog),\"%s\",taskatartalom);
}
mysql_free_result();
}
ShowPlayerDialog(playerid, TASKA, DIALOG_STYLE_LIST, \"Táska\", dialog, \"Választ\", \"Kilép\");
}

 
Konkrétan az a gond, hogy mintha nem venné figyelembe a 10. sort. Nem ugorja át azt, ahol az érték nulla és ehelyett kiírja nekem az összes taskatartalom tömbben szereplõ nevet. Mit lehet tenni?
« Utoljára szerkesztve: 2014. március 29. - 18:48:59 írta doboka98 »

MySQL fetch int nem mûködik
« Válasz #12 Dátum: 2014. március 30. - 16:10:04 »
0 Show voters
\"SELECT %i FROM taska WHERE username = \'%s\'\"

 
ehelyett nem ezt szeretted volna?
 
\"SELECT ertek FROM taska WHERE username = \'%s\'\"

 
számomra az a %i az elején értelmetlen.. ^^

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
MySQL fetch int nem mûködik
« Válasz #13 Dátum: 2014. március 30. - 17:12:38 »
0 Show voters
Nem. Arról van szó, hogy a táblában a soraim (oszlopaim) neve számok 1-47-ig. Tehát 1, 2, 3....47. Ezért ilyen egyszerû, kiválasztja az i elemet a taska táblából, ahol username a player.

MySQL fetch int nem mûködik
« Válasz #14 Dátum: 2014. március 30. - 18:51:47 »
0 Show voters
Nagyon fejre állítottad a dolgokat,
van egy táblád aminek a neve taska abban létrehoztál 1-tõl 47-ig oszlopokat,
alatta milyen formában vagy melyik oszlopban tárolod a felhasználónevet illetve milyen értéket is szeretnél megjeleníteni?
Mivel egy oszlopban és az azt keresztezõ sorban egy adatot lehet tárolni kettõ nem fér el maximum ha karakterláncként tárolod mondjuk vesszõvel elválasztva, \"Árpád,23\".
Valahogy értelmetlen az egész, kezd újra és ne használj for ciklusban mysql_query utasítást mert nagyon sokáig tart míg lefut, egyszóval lassú (akadozó) módod lesz.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal