proleem met mysqli select
Ik heb dit :
Code (php)
1
$getprize = $connect->query("SELECT * FROM prijzen WHERE item NOT LIKE '%".$specials['item']."%' AND rarity = '".$rarity."' ORDER BY rand() LIMIT 1");
En ik wil graag, dat je uit tabel "prijzen" alleen items kan winnen, die niet op de blocklist staan.
Alle items die je 1 maal kan winnen, worden opgeslagen in tabel "blocklist".
Ik heb ook gezocht op arrays, IF NOT etc, maar geen enkele tutorial of uitleg van stackoverflow werkt.
Wellicht kan het zijn, dat veel op stackoverflow oud is en nog mysql gebaseerd is.
Hopelijk kunnen jullie mij op weg helpen.
Groeten,
Marco
Gewijzigd op 03/04/2016 22:15:47 door Marco Eilander
Wat is de logica van een aparte tabel blocklist als je gewoon een kolom aan "prijzen" kunt toevoegen met een naam als "blocked" of zo?
als ik een extra kolom zou maken, en daar "blocked" in zou zetten, dan kan niemand meer de item winnen ipv enkel die ene gebruiker.
Toevoeging op 03/04/2016 22:49:42:
Normaal gesproken zou ik een tabel users nemen, een tabel prijzen en een tabel gewonnen welke feitelijk een koppeltabel is tussen users en prijzen:
Blocklist:
Items worden momenteel opgeslagen in kolom item als item1,item2,item3
Mijn users tabel heet "spelers"
Code (php)
1
2
3
2
3
SELECT p.prijs_id, p.omschrijving FROM prijzen p
LEFT JOIN gewonnen g ON p.prijs_id = g.prijs_id
WHERE g.user_id IS NULL
LEFT JOIN gewonnen g ON p.prijs_id = g.prijs_id
WHERE g.user_id IS NULL
Toevoeging op 03/04/2016 23:10:47:
in Blocklist moet de kolom id helemaal weg omdat het een koppeltabel is. gebruiker varchar weg en dit moet worden speler_id (integer) en zo ook voor de kolom item. Dit moet worden item_id (integer).
Gewijzigd op 03/04/2016 23:13:51 door Frank Nietbelangrijk
In plaats van NOT LIKE ... zou je dan mogelijk NOT EXISTS (<subquery>) kunnen gebruiken dan.