Toon posts:

[php] getallen met kommas controleren in db!

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi.,

Ik heb een tabel 'users' met daarin:

id | site
1 | 1,3,8

en een tabel 'site' met daarin:

id | titel
1 | test 1
2 | test 2
3 | test 3
4 | test 4
5 | test 5
6 | test 6
7 | test 7
8 | test 8


Ik wil nu controleren aan de hand van 'users.id' en '$site' of een bepaalde persoon, die ik opgeef met '$userid' of die '$site' in zijn user lijstje heeft staan. Ik wil dit graag in 1 query of 2, maar zonder while lus!

Dus iets van dit :

mysql_query("SELECT * FROM users, site WHERE users.id = '$id' AND site.id IN HET LIJSTJE VAN DE USER ZIT");

Alvast bedankt.

Verwijderd

Is dit niet een geval van een verkeerd ontworpen database? Ik zou eerder denken aan:
code:
1
2
3
4
5
6
7
id | site
 1 |  1
 1 |  3
 1 |  8
 2 |  1
 2 |  2
etc..

Verwijderd

oplossing is een koppeltabel (edit, ff wat duidelijker)

user_id

koppel

site_id



koppeltabel staat dan:
user_id
site_id

en dus niet zo van
userid siteid,siteid,siteid

hmm beetje korte uitleg, hopelijk snap je hem :)
zo niet ff wat databasedocumentatie lezen :) succes

  • spok9
  • Registratie: November 2000
  • Laatst online: 04-09 15:20

spok9

Groen...

Kan je die users tabel niet beter anders maken?

BV.

id | site
1 | 2
1 | 3
1 | 8
2 | 1
2 | 8

enz.

Dat is veel handiger, want dan kan je gebruik maken van WHERE users.site = site.id

edit: ik == traag ;)

Zolang ik het zelf geloof is het goed toch?


Verwijderd

oeps!?

Je kan beter een koppeltabelletje (wie weet de echte term?) gebruikenmet daarin de user_id en site_id. Dan hoef je niet raar te zoeken in een veld met id's.
Je kan dan inderdaad m.b.v. 1 query de gewenste informatie uit de database halen. (JOIN gebruiken)

edit:
ik ben niet bepaald de eerste...

Verwijderd

Topicstarter
Op vrijdag 29 maart 2002 18:53 schreef Cheatah het volgende:
Is dit niet een geval van een verkeerd ontworpen database? Ik zou eerder denken aan:
code:
1
2
3
4
5
6
7
id | site
 1 |  1
 1 |  3
 1 |  8
 2 |  1
 2 |  2
etc..
owjah, was ik vergeten..

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

afgezien van het DB design:
code:
1
SELECT * FROM <tabel> WHERE id IN (users.sites)

SIZE does matter.
"You're go at throttle up!"


Verwijderd

Topicstarter
Op vrijdag 29 maart 2002 21:12 schreef Skinny het volgende:
afgezien van het DB design:
code:
1
SELECT * FROM <tabel> WHERE id IN (users.sites)
werkt dat ook dan als id 1 is en users.sites dit is :

3,8,10,14 ? ? dus dat ie dan niks terug geeft.. omdat er wel een 1 in zit bij die 10 ?
Pagina: 1