Szerző Téma: MySQL - Olyan változó megadása,ami még egy sorban sincs  (Megtekintve 1274 alkalommal)

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
MySQL - Olyan változó megadása,ami még egy sorban sincs
« Dátum: 2014. január 03. - 22:11:47 »
0 Show voters
Sziasztok!
Telefonrendszert szeretnék csinálni,és arra lennék kíváncsi,hogy MySQL-el hogy oldhatom meg azt,hogy olyan számot adjon a játékosnak,ami még egy sorban sincs?
Telefonszam értéke egy random 4 jegyû szám legyen,és ne egyezzen meg egyetlen egy sor Telefonszam váltózójának értékével.
Eddig dinivel oldottam meg,és ott mûködött,de most át kell írnom a modomat MySQL-re,és itt megakadtam.
Elõre is köszönöm.

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
MySQL - Olyan változó megadása,ami még egy sorban sincs
« Válasz #1 Dátum: 2014. január 04. - 13:33:26 »
0 Show voters
Ezt még egyszer PHP-ban csináltam, amikor ki kellett írni néhány random számot, melyek nem lehettek ugyanazok. Átírtam pawn nyelvre, na meg a te kérésedhez illõre, remélem mûködni fog, és hasznát veszed a dolgoknak. Ha átírás közben elírtam valamit, ez van, sajnálom, de a lényegét érteni fogod a kódnak, és sikerül majd megoldanod a problémádat.
 
new Szam = // Itt csináld meg a random 4 jegyû számot!
format(mysql_string, sizeof(mysql_string), \"SELECT Teloszam FROM Tabla\"); // Lekérdezés formázása
mysql_query(mysql_string); // Lekérdezés
mysql_store_result();
while(mysql_fetch_row(mysql_line)) // Megnézzük az összes találatot
{
if(Szam == strval(mysql_line)) // Ha a szám nem egyezik meg vele, nem történik semmi, azonban ha igen...
{
new i, Joszam;
for(i = 0; Joszam != 1; i++) // ...elindul ez a for ciklus. Addig ismétlõdik, ameddig a Joszam értéke 1 nem lesz
{
   Szam = // Ide írd le megint azt, amivel megcsinálod a random 4 jegyû számot! Ezzel egy új számot kérve
   if(Szam != strval(mysql_line)) // Amennyiben nem egyezik meg a Szam, és a találat értéke, a Joszam értéke 1 lesz, így nem folytatódik tovább a ciklus a végtelenségig, ismét új számot kérve
   {
      Joszam = 1;
   }
}
}
}
mysql_free_result(); // Felszabadítod az erõforrást
// Itt már a Szam értékbe biztosan nem fog megegyezni más telefonszámok értékével. Ha egyszerre több játékos használja a dolgot, érdemes rá tenni egy playerid-s tömböt.
// Frissíted az adatbázist, vagy amit akarsz csinálni, például:
format(mysql_string, sizeof(mysql_string), \"UPDATE Tabla SET Teloszam = \'%d\' WHERE Nev = \'%s\'\", Szam, Nev(playerid));
mysql_query(mysql_string);

 
Utóirat: végre egy értelmes, gondolkodtató segítségkérés :)
« Utoljára szerkesztve: 2014. január 04. - 14:01:06 írta Dfoglalo »

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
MySQL - Olyan változó megadása,ami még egy sorban sincs
« Válasz #2 Dátum: 2014. január 04. - 13:35:23 »
0 Show voters

Ezt még egyszer PHP-ban csináltam, amikor ki kellett írni néhány random számot, melyek nem lehettek ugyanazok. Átírtam pawn nyelvre, na meg a te kérésedhez illõre, remélem mûködni fog, és hasznát veszed a dolgoknak. Ha átírás közben elírtam valamit, ez van, sajnálom, de a lényegét érteni fogod a kódnak, és sikerül majd megoldanod a problémádat.
 
new Szam = // Itt csináld meg a random 4 jegyû számot!
format(mysql_string, sizeof(mysql_string), \"SELECT Teloszam FROM Tabla\"); // Lekérdezés formázása
mysql_query(mysql_string); // Lekérdezés
mysql_store_result();
mysql_fetch_row(mysql_line);
while(mysql_fetch_row(mysql_line)) // Megnézzük az összes találatot
{
if(Szam == strval(mysql_line)) // Ha a szám nem egyezik meg vele, nem történik semmi, azonban ha igen...
{
new i, Joszam;
for(i = 0; Joszam != 1; i++) // ...elindul ez a for ciklus. Addig ismétlõdik, ameddig a Joszam értéke 1 nem lesz
{
   Szam = // Ide írd le megint azt, amivel megcsinálod a random 4 jegyû számot! Ezzel egy új számot kérve.
   if(Szam != strval(mysql_line)) // Amennyiben nem egyezik meg  a Szam, és a találat értéke, a Joszam értéke 1 lesz, így nem folytatódik tovább a ciklus a végtelenségig, ismét új számot kérve
   {
      Joszam = 1;
   }
}
}
}
mysql_free_result(); // Felszabadítod az erõforrást
// Itt már a Szam értékbe biztosan nem fog megegyezni más telefonszámok értékével. Ha egyszerre több játékos használja a dolgot, érdemes rá tenni egy playerid-s tömböt.
// Frissíted az adatbázist, vagy amit akarsz csinálni, például:
format(mysql_string, sizeof(mysql_string), \"UPDATE Tabla SET Teloszam = \'%d\' WHERE Nev = \'%s\'\", Szam, Nev(playerid));
mysql_query(mysql_string);

 
:)
 
[/quote]
Ennek semmi értelme.
Egyébként azt honnan veszed, hogy milyen típusú MySQL plugint használ?

Dupla hozzászólás automatikusan összefûzve. ( 2014. január 04. - 13:36:21 )

tudvari, elkészítetted már a MySQL tábláját a telefonrendszernek, amelyben tárolni fogod a telefonokat / telefonszámokat?

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
MySQL - Olyan változó megadása,ami még egy sorban sincs
« Válasz #3 Dátum: 2014. január 04. - 13:38:38 »
0 Show voters
Dehogyis nincs értelme. Az egy dolog, hogy te nem tudod értelmezni. A lekérdezéseket pedig átalakítja magának. Az sem biztos, hogy így kell lekérdezni pawn-ban, már rég foglalkoztam vele, mostanában csak PHP-ban volt szükségem MySQL-ra :D

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
MySQL - Olyan változó megadása,ami még egy sorban sincs
« Válasz #4 Dátum: 2014. január 04. - 13:40:50 »
0 Show voters
Ilyen verziójú MySQL-t használok.Köszi szépen,majdm egnézem,hogy jó-e.

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
MySQL - Olyan változó megadása,ami még egy sorban sincs
« Válasz #5 Dátum: 2014. január 04. - 13:51:49 »
0 Show voters
Idézetet írta: Dfoglalo date=1388839118\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"45646\" data-ipsquote-contentclass=\"forums_Topic
Dehogyis nincs értelme. Az egy dolog, hogy te nem tudod értelmezni. A lekérdezéseket pedig átalakítja magának. Az sem biztos, hogy így kell lekérdezni pawn-ban, már rég foglalkoztam vele, mostanában csak PHP-ban volt szükségem MySQL-ra :D
 
Állj. Honnan veszed, hogy én nem tudom értelmezni, és mire fel vagy ebben olyan biztos?
Elõszöris ha már annyira biztos vagy a kódodba, közlök veled pár hibát..
1.: Mi a francnak kérdezed le az elsõ sornak a értékeit, azelõtt, hogy az összeset lekéred ciklusba?
 
mysql_fetch_row(mysql_line);
while(mysql_fetch_row(mysql_line)) // Megnézzük az összes találatot

 
Helyes:
 
while(mysql_fetch_row(mysql_line))

 
2.: Minek kell formázni a karakterláncot? Nincs szükség rá..
 
format(mysql_string, sizeof(mysql_string), \"SELECT Teloszam FROM Tabla\"); // Lekérdezés formázása
mysql_query(mysql_string); // Lekérdezés

 
Helyes:
 
mysql_query(\"SELECT Teloszam FROM Tabla\"); // Lekérdezés

 


Szerintem egy jó megoldás:
 
new szam;
mysql_query(\"SELECT FLOOR(RAND() * 9999) AS random_num FROM Tabla WHERE \'random_num\' NOT IN (SELECT Teloszam FROM Tabla) LIMIT 1\");
mysql_store_result();
szam = mysql_fetch_int();
mysql_free_result();
printf(\"A telefonszám: %i\");

 
Az SQL kódot írta: Tushar, átalakította: Pedró.
(nos abban nem vagyok biztos, hogy 4 számjegyû lesz.)
« Utoljára szerkesztve: 2014. január 04. - 13:54:44 írta Pedró »

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
MySQL - Olyan változó megadása,ami még egy sorban sincs
« Válasz #6 Dátum: 2014. január 04. - 13:59:53 »
0 Show voters

Állj. Honnan veszed, hogy én nem tudom értelmezni, és mire fel vagy ebben olyan biztos?
 
[/quote]
Onnan, hogy azt mondtad rá:
 

Ennek semmi értelme.
 
[/quote]
;)
 

1.: Mi a francnak kérdezed le az elsõ sornak a értékeit, azelõtt, hogy az összeset lekéred ciklusba?
 
mysql_fetch_row(mysql_line);
while(mysql_fetch_row(mysql_line)) // Megnézzük az összes találatot

 
Helyes:
 
while(mysql_fetch_row(mysql_line))

 

[/quote]
Véletlenül maradt ott, amikor gondolkoztam, hogy is nézne ez ki pawn nyelven. Köszönöm, hogy észrevetted, javítom. :)
 

2.: Minek kell formázni a karakterláncot? Nincs szükség rá..
 
format(mysql_string, sizeof(mysql_string), \"SELECT Teloszam FROM Tabla\"); // Lekérdezés formázása
mysql_query(mysql_string); // Lekérdezés

 
Helyes:
 
mysql_query(\"SELECT Teloszam FROM Tabla\"); // Lekérdezés

 

[/quote]
Tényleg nem muszáj, de mint mondtam, régen foglalkoztam már vele pawn nyelven. Tényleg nem szükséges, ez igaz. :) De attól még nem A \"Helyes:\" a második megoldás, hanem az IS egy megoldás. :)
De ez most nem arról szólt, hogy egy egy ilyen apróság hogy van e megoldva, hanem arról, hogy maga az összehasonlítás meg legyen oldva.

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
MySQL - Olyan változó megadása,ami még egy sorban sincs
« Válasz #7 Dátum: 2014. január 04. - 14:10:05 »
0 Show voters
Az sem jó szerintem.

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
MySQL - Olyan változó megadása,ami még egy sorban sincs
« Válasz #8 Dátum: 2014. január 04. - 14:35:19 »
0 Show voters
Ha esetleg elrontottam volna itt, pawn nyelvben, itt a PHP kód átirata egy darab teszt PHP fájlba, melyben a változók nevét átírtam a teszt fájlhoz, melyet rengetegszer újratöltöttem, és sosem kaptam ugyanazt a 2 számot. De ettõl függetlenül magának az elvnek mûködnie KELL, legyen szó bármely nyelvrõl, bármilyen értékadási módszerrõl, akár MySQL-os lekérdezésrõl, habár szerintem a pawn nyelves átiratom sincs elrontva. :)
<?php$Szam1 = rand(1, 4);$Szam2 = rand(1, 4);if($Szam1 == $Szam2){   for($i= 0; $Joszam != 1; $i++)   {      $Szam2 = rand(1, 4);      if($Szam2 != $Szam1)      {         $Joszam = 1;      }   }   $Joszam = 0;   echo \'Amennyiben ezt az üznetet látod, eleinte ugyanaz a két szám lett legenerálva.
Ezek után persze nem lenne szabad a szöveg alatt ugyanazt a két számot látnod.
\';}echo $Szam1;echo \'
\';echo $Szam2;?>

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
MySQL - Olyan változó megadása,ami még egy sorban sincs
« Válasz #9 Dátum: 2014. január 04. - 15:22:49 »
0 Show voters
undefined symbol \"mysql_line\"

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
MySQL - Olyan változó megadása,ami még egy sorban sincs
« Válasz #10 Dátum: 2014. január 04. - 15:25:15 »
0 Show voters
Az csak egy változó, amelyben stringet tárolsz :D Át is nevezheted tõlem, egy meglévõre, de ha ezt szeretnéd használni, akkor tessék:
 
new mysql_line[128];

 
Habár azt hittem, ezen nem akadsz fent :D


Edit: kicsit felfrissítettem a pawn nyelvi MySQL tudásomat, és most látom, hogy elméletileg használhatsz mysql_fetch_int(mysql_line)-et is, és akkor csak simán egy int, lásd:
 
new mysql_line;

 
változót kell létrehoznod.
És akkor a strval függvény sem fog kelleni.
« Utoljára szerkesztve: 2014. január 04. - 15:30:14 írta Dfoglalo »

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
MySQL - Olyan változó megadása,ami még egy sorban sincs
« Válasz #11 Dátum: 2014. január 04. - 17:10:11 »
0 Show voters
Köszi,próbálkoztam a megoldásával,de attól,hogy nem ír ki errort,az még jelenti azt,hogy jó,így inkább kiírtam ide :D

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
MySQL - Olyan változó megadása,ami még egy sorban sincs
« Válasz #12 Dátum: 2014. január 04. - 23:08:52 »
0 Show voters
Próbáltad az én megoldásomat?

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
MySQL - Olyan változó megadása,ami még egy sorban sincs
« Válasz #13 Dátum: 2014. január 04. - 23:31:34 »
0 Show voters
Azzal az a baj,hogy nem értem,hogy pontosan mi is folyik ott.Nem akarok olyan scriptet használni,amiben nem tudom,hogy mirõl van szó.Ha részletesen le tudnád írni,akkor biztos használnám :D

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
MySQL - Olyan változó megadása,ami még egy sorban sincs
« Válasz #14 Dátum: 2014. január 05. - 14:46:15 »
0 Show voters
A megoldásom elvét érted? Ha nem, a php kód alapján próbáld megérteni, és ha érted, akár saját magadnak is meg tudod írni pawn nyelven, mert lehet, hogy az átirat nem a leg mûködõbb.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal