Kezdőoldal » Számítástechnika » Weblapkészítés » SQL lekérdezések véletlenszerű...

SQL lekérdezések véletlenszerű adatok alapján?

Figyelt kérdés

Szóval, már sokszor írtam ki ilyen kérdést, de a problémát még mindig nem sikerült megoldanom. Van egy jackpot oldal, ahol botok játszanak, egy 90 másodpercenként ismétlődő függvény indítja el a kört. A kör így néz ki elméletben: Kiválaszt véletlenszerű mennyiségben a users táblából véletlenszerű botokat. Eddig ez így nézne ki:



//item típusok (csak példák)

itemtypes = ["telefon", "tv", "tablet"];


//szám, ami megmondja, mennyi usert kérdezzen le 1-10 között

itemsnum = Math.floor(Math.random() * 10) + 1;


mysqlConnection.query("SELECT * FROM users WHERE ORDER BY RAND() LIMIT "+itemsnum+"", function(err1,row1,fields1){



//botok tömbb bejárása

for(i = 0; i < row1.length; ++i){



//RANDOM ITEM random_itemsnum = Math.floor(Math.random() * 10) + 1; //mennyi itemet kérdezzen le random_item = item_types[Math.floor(Math.random()*item_types.length)]; //random item a tömbből



//véletlenszerű itemek lekérdezése véletlenszerű mennyiségben

mysqlConnection.query("SELECT * FROM items WHERE type = '"+random_item+"' ORDER BY RAND() LIMIT "+random_itemsnum+" ", function(err2,row2,fields2){


//Egy bothoz jutó véletlenszerű mennyiségben lekérdezett véletlenszerű itemek feltöltése az adatbázisba

for(k = 0; k < row2.length; ++k){


//adatok a row2 tömbből

userid = row2[i].steamid; offerid = Math.floor(Math.random() * 5000) + 1; username = row2[i].name; item = row10[k].itemname; qualityclass = row10[k].qualityclass; color = row10[k].color; value = row10[k].value; avatar = row2[i].avatar; image = row10[k].image;


//és ezután egy sima insert query-vel feltöltjük az adatokat az adatbázisba



//ellenőrzés

myconsolelog(userid+", "+item); myconsolelog("+++++++"); myconsolelog(row10); myconsolelog("+++++++");



}

}



}



});


A fakeuserid

A problémám a következő: Mindig ezt a hibaüzenetet adta ki a konzol:

TypeError: Cannot read property 'id' of undefined for loop


Megcsináltam, hogy csak 5 usert kérdezzen le, illetve csak 5 itemet. Tehát akkor ugye a következőnek kéne történnie:

Mindegyik user kap 5 véletlenszerű itemet. Elindul a for loop, első usernél feltöltjük az 5 itemet, utána ha ez megvan megyünk tovább a következő user-re. Na itt a következő volt a probléma: Mindig ugyanazok voltak a usernek az adatai. Méghozzá mindig az ötödik (utoljára kiválasztott) user adataival töltötte fel az adatbázist. Ezt nem értem, mitől van. Tudnátok segíteni egy olyan algoritmus megírásában, ami ezt a problémát oldja meg: Véletlenszerű felhasználók kiválasztása véletlenszerű mennyiségben, utána minden egyes kiválasztott felhasználónál véletlenszerű itemek kiválasztása véletlenszerű mennyiségben.



2017. ápr. 22. 14:09
 1/5 A kérdező kommentje:
UI.: amit fent kiraktam kódot, csak példa és van benne egy-két hiba, ettől függetlenül még a hiba fennáll.
2017. ápr. 22. 14:14
 2/5 anonim ***** válasza:

Mint az alábbi topikban:

https://www.gyakorikerdesek.hu/szamitastechnika__weblapkeszi..

Drone007 #6-os hozzászólásában már rávilágított: először derítsd ki, hogy a lekérdezések mit adnak vissza

2017. ápr. 22. 14:21
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:

Ez a csávó teljesen read-only.

Nyomatja ezt a fos kódot már 2 hónapja, hogy nem tudja megoldani, de a tanácsokkal egyáltalán nem foglalkozik.

2017. ápr. 22. 15:01
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:
#3: úgy érted write-only. :)
2017. ápr. 22. 15:47
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:
#4 I/O error :)
2017. ápr. 22. 16:56
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!