SQL lekérdezések véletlenszerű adatok alapján?
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.
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
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!