proleem met mysqli select

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marco Eilander

Marco Eilander

03/04/2016 22:05:47
Quote Anchor link
Hallo,


Ik heb dit :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
 
PHP hulp

PHP hulp

16/04/2024 10:08:24
 
Frank Nietbelangrijk

Frank Nietbelangrijk

03/04/2016 22:36:01
Quote Anchor link
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?
 
Marco Eilander

Marco Eilander

03/04/2016 22:39:52
Quote Anchor link
tabel met prijzen heb ik wat je allemaal kan winnen, wanneer je een specifieke item hebt gewonnen, wat men maar 1 keer mag hebben, wordt het opgeslagen in een ander tabel met gebruiker id.


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.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

03/04/2016 22:45:58
Quote Anchor link
Duidelijk. Heb je ook een tabel users? welke kolommen heb je zoal in prijzen?

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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
users:
-user_id
-username
-email
(etc)

prijzen:
-prijs_id
-omschrijving
-(etc)

gewonnen:
-user_id
-prijs_id
 
Marco Eilander

Marco Eilander

03/04/2016 22:52:45
Quote Anchor link
Prijzen tabel: (special is 0-1, 1 betekent, dat je die item maar 1x kan winnen)
Afbeelding


Blocklist:
Items worden momenteel opgeslagen in kolom item als item1,item2,item3
Afbeelding

Mijn users tabel heet "spelers"
Afbeelding
 
Frank Nietbelangrijk

Frank Nietbelangrijk

03/04/2016 23:01:57
Quote Anchor link
Vervolgens kun je alle niet-gewonnen prijzen verkrijgen door een query als deze:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


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).
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
Blocklist:
speler_id
item_id
Gewijzigd op 03/04/2016 23:13:51 door Frank Nietbelangrijk
 
Thomas van den Heuvel

Thomas van den Heuvel

04/04/2016 13:03:19
Quote Anchor link
In plaats van NOT LIKE ... zou je dan mogelijk NOT EXISTS (<subquery>) kunnen gebruiken dan.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.