login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Tabellen koppelen

Offline Luc18 - 21/06/2011 19:55 (laatste wijziging 21/06/2011 19:58)
Avatar van Luc18Onbekend Beste,

Ik heb al een tijdje een eigen forum, dit om mijn php en sql steeds verder te vorderen. Nu wil ik alleen hetvolgende inbouwen:

- Als een lid een topic leest wordt de id van het lid in een database opgeslagen samen met het topic id. Dan wordt het topic grijs gekleurd als je het hebt gelezen en blauw als je het nog niet hebt gelezen.

Tenminste dat is de bedoeling. Alleen wil ik dit dus koppelen aan de huidige database structuur. Hoe moet ik dat doen?

Ik wil het dus in de huidige query verwerken waar de actieve topiclist wordt opgehaald.

Ik zat zelf te denken aan een RIGHT join, maar daar moet dan nog een where opgezet worden zodat hij alleen zoekt naar mijn id.. Maar hoe ik dat moest doen via de where join wist ik niet.

4 antwoorden

Gesponsorde links
Offline svm - 21/06/2011 20:32
Avatar van svm PHP ver gevorderde Nee, dit is niet handig, want je hebt per (active) topic slechts een result, dus dan zou je de id's met scheidingstekens in een waarde moeten plaatsen wat niet praktisch is.
Maak een nieuwe tabel aan met voor elk topic id ook een lid id gekoppeld.

  1. CREATE TABLE `readedtopics` (
  2. lid INT(10) NOT NULL,
  3. topic INT(10) NOT NULL
  4. )TYPE=MyISAM;
Offline Luc18 - 21/06/2011 20:47
Avatar van Luc18 Onbekend Ja dat bedoelde ik ook, maar dan moet die tabel weer gekoppeld worden aan de actieve topics, en dan alleen het resultaat ophalen van het lid dat ingelogd is.

Dus ik heb topic id 1
lid nummer 2 is ingelogd en gaat kijken, die komt dan in readtopic te staan met: topic id=1 en userid=2

nu moet in het actieve gedeleelte in de query die ik al had, een right join gemaakt worden die readtopicID=topicID WHERE userID=ingelogdID

Snapje? Hij moet dus het liefst met de bestaande query uitzoeken of hij hem al gelezen heeft.
Offline svm - 25/06/2011 18:05
Avatar van svm PHP ver gevorderde Hmm, geen anderen met een oplossing en ik zou zo ook niet weten hoe je het het makkelijkste in een query kunt doen (JOINS is naar mijn mening sowieso niet de oplossing).
Het beste gebruik je een aparte functie denk ik dan:
  1. function colourTopicName($topic,$lid) {
  2. $colour = mysql_result(mysql_query("SELECT COUNT(lid) FROM readedtopics WHERE lid='". $lid ."' AND topic='". $topic ."'"),0);
  3. if(empty($colour)) {
  4. return '#00A'; //blue/readed
  5. }else{
  6. return '#555'; //grey/unreaded
  7. }
  8. }
Offline ArieMedia - 25/06/2011 18:17
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
svm schreef:
Hmm, geen anderen met een oplossing en ik zou zo ook niet weten hoe je het het makkelijkste in een query kunt doen (JOINS is naar mijn mening sowieso niet de oplossing).
Het beste gebruik je een aparte functie denk ik dan:
[..code..]
Zo.. dat gaat lekker veel performance vreten

Je kan beter 1x een query doen van alle topic's en dit in een registry opslaan
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.183s