Szerző Téma: mysql sorokon végig menni (while)  (Megtekintve 1599 alkalommal)

mysql sorokon végig menni (while)
« Dátum: 2012. december 26. - 20:28:09 »
0 Show voters
sziasztok
van egy táblázatom és leszereném kérdezni az összes sort whileal
sor értékeit  egy változoba tárolni pl a sor idjét:)
hogyan?:)
elõre is köszönöm.

mysql sorokon végig menni (while)
« Válasz #1 Dátum: 2012. december 27. - 11:20:05 »
0 Show voters
Én szerver indításkor mindig újra létre hozattam  az ID sort mysql táblán, mivel ha törlésre került a dolog akkor az újonnan létrehozott adatsor nem a megüresedett helyre került, hanem a végére.
 
ALTER TABLE `tablaneve` DROP `ID`
ALTER TABLE `tablaneve` ADD `ID` INT( 4 ) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST\"

 
Ez sok gondtól megfog kímélni, mivel minden egyes szerver indításkor újra hiány nélkül újra indexelésre kerül minden adatsor.
Játék közben meg már mindegy hogy mennyi adatsort törölnek hoznak létre, nincs jelentõsége ha minden indításkor újra indexelésre kerül ami fontos.

mysql sorokon végig menni (while)
« Válasz #2 Dátum: 2012. december 27. - 14:24:09 »
0 Show voters
kis okoskodassal nagyábbol sikerült:)
nem a te példáddal:)
elösször meg csinálom a pickupokat:)
 

new data[128],picknev,Float:pickx,Float:picky,Float:pickz;
mysql_query(\"SELECT pickupnev,pickupx,pickupy,pickupz FROM hotel\");
mysql_store_result();
while(mysql_fetch_row(data)) {
sscanf(data, \"p<|>s[50]fff\",picknev,pickx,picky,pickz);
picknev = CreatePickup(1273, 1, pickx,picky,pickz);
    }

 
picknev ilyen értékeket kap hogy: lvhotel1 lvhotel2 ... lvhotel9 kapna:D
 ha rajta van a pickupon a játékos:
 

public OnPlayerPickUpPickup(playerid, pickupid)
{
    new data1[128],string[128],picknev[128],lefoglalva[128];
mysql_query(\"SELECT foglalva,pickupnev FROM hotel\");
    mysql_store_result();
    while(mysql_fetch_row(data1)) {
    sscanf(data1, \"p<|>s[50]s[50]\",lefoglalva,picknev);
    if(pickupid ==picknev) //hát itt irtam lvhotel1,2,3 de ugyan azon az 1 pickupon kapom meg az adatokat:( és lvhotel9 értékeit:(
  {
  format(string,500,\"szoba név: %s \\n Lefoglalva: %s \",picknev,lefoglalva);
       ShowPlayerDialog (playerid, listabehoz,DIALOG_STYLE_MSGBOX, \"Hotel foglalas\",string, \"ok\",\"kilep\");
  }
    }
}

 
miért nem müködik?:(
« Utoljára szerkesztve: 2012. december 27. - 15:43:53 írta kriszrap »

mysql sorokon végig menni (while)
« Válasz #3 Dátum: 2012. december 27. - 16:23:39 »
0 Show voters
Amennyi létrehozott pickup van annyi változónak is kellene lenni.
Egy sima picknev változót futtatsz while ciklussal és tárolod benne a CreatePickup által visszaadott azonosítószámot, nem csoda hogy csak az utolsó \"lvhotel\" adattal mûködik.
Az OnPlayerPickUpPickup alatt is kellene annyi lehetõség amennyi pickupot létre akarsz hozni.

mysql sorokon végig menni (while)
« Válasz #4 Dátum: 2012. december 27. - 16:33:32 »
0 Show voters
picknev et tömböt létrekéne hoznom 9 tömböt?
new picknev[9]; igy és while cikulus ba elinditok egy a változot hogy tudjam hányadik sornáljár igy gondolom:
 

new picknev[9];
new hanyadik;
new data[128],Float:pickx,Float:picky,Float:pickz;
mysql_query(\"SELECT pickupnev,pickupx,pickupy,pickupz FROM hotel\");
mysql_store_result();
while(mysql_fetch_row(data)) {
sscanf(data, \"p<|>s[50]fff\",picknev,pickx,picky,pickz);
hanyadik++;
picknev[hanyadik] = CreatePickup(1273, 1, pickx,picky,pickz);
    }

 
igy gondoltad?:)

Nem elérhető totar

  • 425
    • Profil megtekintése
mysql sorokon végig menni (while)
« Válasz #5 Dátum: 2012. december 27. - 17:00:38 »
0 Show voters
Ezt leírná valaki, hogy mi célt szolgál? while(mysql_fetch_row())

mysql sorokon végig menni (while)
« Válasz #6 Dátum: 2012. december 27. - 17:51:42 »
0 Show voters
Az úgy semmire. :D
A fenti példákban addig ismétlõdik a while(mysql_fetch_row(data)) amíg az összes adatsort egymás után el nem helyezi a \"data\" változóba.

mysql sorokon végig menni (while)
« Válasz #7 Dátum: 2012. december 27. - 19:15:30 »
0 Show voters
ɐʞzssǝlosz ugy gondoltad ahogy leirtam?:)

mysql sorokon végig menni (while)
« Válasz #8 Dátum: 2012. december 27. - 21:59:41 »
0 Show voters
Ja, már alakul. :D
Csak az OnPlayerPickUpPickup-nál is kell a több lehetõség.

mysql sorokon végig menni (while)
« Válasz #9 Dátum: 2012. december 28. - 12:47:23 »
0 Show voters
ugyan az a probléma:( 1 ikon utolso érték és ennyi.
 

public OnPlayerPickUpPickup(playerid, pickupid)
{
    new data1[128],string[128],picknev[9],hanyadik,lefoglalva[128];
mysql_query(\"SELECT foglalva,pickupnev FROM hotel\");
    mysql_store_result();
    while(mysql_fetch_row(data1)) {
    sscanf(data1, \"p<|>s[50]s[50]\",lefoglalva,picknev);
hanyadik++;
    if(pickupid == picknev[hanyadik])
  {
  format(string,500,\"szoba név: %s \\n Lefoglalva: %s \",picknev,lefoglalva);
       ShowPlayerDialog (playerid, listabehoz,DIALOG_STYLE_MSGBOX, \"Hotel foglalas\",string, \"ok\",\"kilep\");
  }
    }
    hanyadik = 0;
}
« Utoljára szerkesztve: 2012. december 28. - 15:01:20 írta kriszrap »

mysql sorokon végig menni (while)
« Válasz #10 Dátum: 2012. december 28. - 17:01:59 »
0 Show voters
Ezeket csak úgy össze ctrl+c/+v -zed?
Ilyet sose csinálnék még álmomban sem hogy mysql lekérést hajtsak végre OnPlayerPickUpPickup alatt.
A picknev változót integer típusúnak szántad, akkor ne karakterláncként alkalmazd.
Eredetileg ezt CreatePickup által létrehozott illetve visszaadott azonosító tárolására szántad.
A változó neve se találó mivel csak összezavar téged.
Nézd csak meg a kódodat:
 
    if(pickupid == picknev[hanyadik]) // Itt a picknev karakterlánc egyik karakterét próbálod összehasonlítani a pickupid -vel ami egy egész számot tartalmazó változó.
          {
          format(string,500,\"szoba név: %s \\n Lefoglalva: %s \",picknev,lefoglalva); // Itt meg ugyanazt a változót karakterláncként ki akarod íratni?

 
Sok az összevisszaság és nem tudni mit is akarsz létrehozni.
Amúgy most a kódban hol van létrehozva a CreatePickup által a pickupok?

mysql sorokon végig menni (while)
« Válasz #11 Dátum: 2012. december 28. - 18:50:47 »
0 Show voters
2 hozzászolás :) ott a createpickup . picknev nél ink nem a nevét probálok kiszedni ha nem az adatbázisba az idet ugy sztem könnyeblesz:)

mysql sorokon végig menni (while)
« Válasz #12 Dátum: 2012. december 28. - 20:14:27 »
0 Show voters
És mi lenne ha teljes kódot másolnál be és nem össze vissza részleteket, amire írtam nincs CreatePickup ott tényleg nincs.
 
Idézetet írta: kriszrap date=1356695243\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"31467\" data-ipsquote-contentclass=\"forums_Topic
ugyan az a probléma:( 1 ikon utolso érték és ennyi.
 

public OnPlayerPickUpPickup(playerid, pickupid)
{
    new data1[128],string[128],picknev[9],hanyadik,lefoglalva[128];
mysql_query(\"SELECT foglalva,pickupnev FROM hotel\");
    mysql_store_result();
    while(mysql_fetch_row(data1)) {
    sscanf(data1, \"p<|>s[50]s[50]\",lefoglalva,picknev);
hanyadik++;
    if(pickupid == picknev[hanyadik])
  {
  format(string,500,\"szoba név: %s \\n Lefoglalva: %s \",picknev,lefoglalva);
       ShowPlayerDialog (playerid, listabehoz,DIALOG_STYLE_MSGBOX, \"Hotel foglalas\",string, \"ok\",\"kilep\");
  }
    }
    hanyadik = 0;
}

 

Szerintem az elején kellene kezdened a dolgot, mysql nélkül.
Létrehozol 10 darab pickupot.
 
#include <a_samp>
 
new
pickup_id[10];
 
public
OnFilterScriptInit()
{
for(new i; i < sizeof pickup_id; i++)
{
pickup_id = CreatePickup(1273, 1, 0.0 - i, 0.0 + i, 2.0);
}
return 1;
}
public
OnPlayerPickUpPickup(playerid, pickupid)
{
for(new i; i < sizeof pickup_id; i++)
{
if(pickup_id == pickupid)
{
   new
      str[128];
   format(str, sizeof str, \"Megtaláltad a %d sorszámú pickupot.\", pickupid);
   SendClientMessage(playerid, -1, str);
   return 1;
}
}
return 1;
}
« Utoljára szerkesztve: 2012. december 28. - 20:39:09 írta ɐʞzssǝlosz »

mysql sorokon végig menni (while)
« Válasz #13 Dátum: 2012. december 29. - 00:35:34 »
0 Show voters
na sikerült
 

public OnPlayerPickUpPickup(playerid, pickupid)
{
    new data[128],string[128],pickid[10],hanyadik,foglalva[10],pickupnev[10];
mysql_query(\"SELECT id,foglalva,pickupnev FROM hotel\");
    mysql_store_result();
    hanyadik=0;// 0 hozz add 1 et
    while(mysql_fetch_row(data)) {
    hanyadik++;
    sscanf(data, \"p<|>ds[50]s[50]\",pickid[hanyadik],foglalva[hanyadik],pickupnev[hanyadik]);
    if(pickupid == pickid[hanyadik])
  {
  format(string,500,\"Szoba szám : %d \\n Foglalva : %s \",pickid[hanyadik],foglalva[hanyadik]);
       ShowPlayerDialog (playerid, listabehoz,DIALOG_STYLE_MSGBOX, \"Hotel foglalas\",string, \"ok\",\"kilep\");
       printf(\"%d\",pickid[hanyadik]);
  }
    }
}
public pickuplerakas()
{
new data[128],pickid[10],hanyadik,Float:pickx[10],Float:picky[10],Float:pickz[10];
mysql_query(\"SELECT id,pickupx,pickupy,pickupz FROM hotel\");
    mysql_store_result();
    hanyadik =0;
    while(mysql_fetch_row_format(data)) {
    hanyadik++;
    sscanf(data, \"p<|>dfff\",pickid[hanyadik],pickx[hanyadik],picky[hanyadik],pickz[hanyadik]);
    printf(\"%d / %f /%f / %f\",pickid[hanyadik],pickx[hanyadik],picky[hanyadik],pickz[hanyadik]);
    }
    for(new i=0; i <= 9; i++)
{
    pickid = CreatePickup(1273, 1, pickx,picky,pickz);
    printf(\"%d /%f /%f/%f \",pickid,pickx,picky,pickz);
}
return 1;
}
public OnGameModeInit()
{
pickuplerakas()
}

 
teljes kód
még annyi azt utánna zárok:)
a while csak egyszer futt végig  OnPlayerPickUpPickup nál?:)
« Utoljára szerkesztve: 2012. december 29. - 01:21:34 írta kriszrap »

mysql sorokon végig menni (while)
« Válasz #14 Dátum: 2012. december 29. - 04:12:01 »
0 Show voters
Nem csak egyszer fut végig.
Annyiszor amennyi adatsor van a hotel sql táblán, és annyiszor ahányszor meghívásra kerül az OnPlayerPickUpPickup.
Ui.:
Még mindig nem tudom mit akarsz létrehozni.  :-[
De írtam egy változatot amibõl a Load részt feltudod használni:
 
#define MAX_PICKUP 10
new
HotelPickup[MAX_PICKUP];
stock
LoadPickup()
{
new
i = 0,
temp[128],
Float:pickx,
Float:picky,
Float:pickz;
mysql_query(\"SELECT `pickupx`, `pickupy`, `pickupz` FROM `hotel`\");
mysql_store_result();
while(mysql_fetch_row_format(temp))
{
if(i < MAX_PICKUP)
{
   sscanf(temp, \"p<|>fff\", pickx, picky, pickz);
   HotelPickup = CreatePickup(1273, 1, pickx, picky, pickz);
   i++;
}
}
mysql_free_result();
}
public
OnPlayerPickUpPickup(playerid, pickupid)
{
for(new i; i < MAX_PICKUP; i++)
{
if(HotelPickup == pickupid)
{
   new
      str[128];
   format(str, sizeof str, \"Szoba szám : %d\", pickupid);
   ShowPlayerDialog(playerid, listabehoz, DIALOG_STYLE_MSGBOX, \"Hotel foglalas\", str, \"ok\",\"kilep\");
   return 1;
}
}
return 1;
}
« Utoljára szerkesztve: 2012. december 29. - 04:31:54 írta ɐʞzssǝlosz »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal