iets als array in de db moet op gefilterd worden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

M B

M B

26/01/2007 21:28:00
Quote Anchor link
Beste PHP'ers,

in een database heb ik een kolom gemaamd types, hierin staan types van automerken. Hieruit wil ik op een bepald type kunnen filteren.

ik heb op 1 regel bijvoorbeeld de volgende types staan

C15, C15, C35

en op een andere regel

C1, C2, C3

nu wil ik filteren op C15 doormiddelen van "type LIKE '%$type%'"

nu gaat dat met C15 goed en wordt alleen de bovenste regel opgehaald

gebruik ik nu C1 wordt het een ander verhalen want dan worden beide regels opgehaald.

Nu kan ik het oplossen door alles uit de db te trekken te exploden op ", " en dan kijk op het in_array is. 1 probleem: mijn webserver vind dit geen leuk tefereel.

dus is er niet een manier voor om dat al te doen voordat het uit de db getrokken wordt?

Alvast bedankt voor de hulp.

Groetjes,

Michel
 
PHP hulp

PHP hulp

19/06/2024 20:08:00
 
- SanThe -

- SanThe -

26/01/2007 21:36:00
Quote Anchor link
Ook achter de laatste een komma zetten dan kan je op LIKE '%C1,% filteren.
 
M B

M B

26/01/2007 21:39:00
Quote Anchor link
simpelere oplossings is er volgens mij niet, ik had em bijna zelf kunnen verzinnen :)

bedankt voor het denkwerk (Y)

dat wordt alleen wel 200 regels doorlopen.

Groetjes,

Michel
 
- SanThe -

- SanThe -

26/01/2007 21:42:00
Quote Anchor link
Bedoel je in de database? Even een simpele update query maken en klaar.
 
M B

M B

26/01/2007 21:43:00
Quote Anchor link
ik was inderdaad al iets aan het schrijven, had toen ik het bericht type er even geen erg in dat ook daarvoor PHP weer perfect te gebruiken is.
 
Jan Koehoorn

Jan Koehoorn

26/01/2007 21:49:00
Quote Anchor link
Even tussendoor: je datamodel is verkeerd. Je hebt een aantal types in 1 record, gescheiden door een komma.
 
M B

M B

26/01/2007 21:52:00
Quote Anchor link
hoe bedoel je dat?
 
Jan Koehoorn

Jan Koehoorn

26/01/2007 21:56:00
Quote Anchor link
Je hebt een veld gemaakt waarin je 1 of meer types zet. Dat is een verkeerd datamodel. Het zou er zo uit moeten zien:

tabel 'types'
id
type

tabel 'merken'
id
merk

tabel 'merken_types'
type_id
merk_id
 
M B

M B

26/01/2007 21:59:00
Quote Anchor link
ok, normaal werk ik idd ook met id's en meerdere tabellen maar het leek me wel eens leuk om te kijken of dit ook werkt. En dat doet het.

het enigste probleem is is dat het er niet sneller op wordt :(
 
Jan Koehoorn

Jan Koehoorn

26/01/2007 22:06:00
Quote Anchor link
Dat is niet je enige probleem. Een goede DB begint met een goed datamodel. Als dat al niet klopt, wordt het bijna onmogelijk om goede query's te schrijven. Stel dat je alle merken met type C15 uit je DB wilt halen. Hoe ga je dan onderscheiden tussen C15, C151 ABC15 en C1500? Tuurlijk, met LIKE kom je een heel eind, maar zoals je al gemerkt hebt werkt het niet snel.

Als je kijkt naar mijn vorige voorbeeld dan zou je type C15 met een query als deze zo op kunnen halen:

SELECT m.merk, t.type
FROM merken AS m, types AS t, merken_types AS mt
WHERE t.type = 'C15'
AND t.id = mt.type_id
AND m.id = mt.merk_id
 



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.