Avatar billede rarw Nybegynder
24. oktober 2005 - 06:14 Der er 5 kommentarer og
1 løsning

Vis online venner øverst

Hej alle sammen :)

Jeg har prøvet at spørger før og det er muligt at få ens venner på sin venneliste øverst på listen hvis de er online.

Jeg fik rigtig god hjælp men desværre virkede resultatet ikke :(

Tabellen for brugere:

CREATE TABLE `users` (
  `id` int(11) NOT NULL auto_increment,
  `brugernavn` varchar(25) NOT NULL default '',
  `password` varchar(255) NOT NULL default '',
  `navn` varchar(255) NOT NULL default '',
  `born_day` int(11) NOT NULL default '0',
  `born_month` int(11) NOT NULL default '0',
  `born_year` int(11) NOT NULL default '0',
  `landsdel` varchar(255) NOT NULL default '',
  `created` varchar(255) NOT NULL default '',
  `email` varchar(255) NOT NULL default '',
  `kon` set('Dreng','Pige') NOT NULL default '',
  `tekst` longtext NOT NULL,
  `billede` set('yes','no') NOT NULL default '',
  `postnr` int(4) NOT NULL default '0',
  `born` date NOT NULL default '0000-00-00',
  PRIMARY KEY  (`id`)
);

Min online tabel er sådan her ud:

CREATE TABLE `online_profiles` (
  `date` int(11) NOT NULL default '0',
  `brugernavn` varchar(25) default NULL,
  `page` varchar(255) default NULL,
  `user_id` int(11) NOT NULL default '0'
);

Og til sidst venneliste tabellen:

CREATE TABLE `venneliste` (
  `id` int(11) NOT NULL auto_increment,
  `to_user` int(11) NOT NULL default '0',
  `from_user` int(11) NOT NULL default '0',
  `date` longtext NOT NULL,
  `godkendt` set('yes','no') NOT NULL default '',
  PRIMARY KEY  (`id`)
);

Vi kom frem til dette:

$sql = "
    SELECT
        f.*
        ,t.brugernavn as tilbruger
        ,fra.brugernavn as frabruger
        ,IF( o.user_id IS NULL, 0, 1 ) as online
    FROM
        venneliste f
    INNER JOIN
        users t
    ON
        f.to_user = t.id
    INNER JOIN
        users fra
    ON
        f.from_user = fra.id
    LEFT OUTER JOIN
        online_profiles o
    ON
        f.id = o.user_id
    WHERE
        (f.to_user = '".$_GET['id']."'
        OR f.from_user = '".$_GET['id']."')
        AND f.godkendt = 'yes'
    ORDER BY
        online
        ,f.id DESC
    LIMIT
        $vis_fra, $pr_side";


Men det sætter dem ikke øverst på vennelisten :(

Nogle der kan hjælpe ? evt lave en ny query / kode :D?
Avatar billede rarw Nybegynder
25. oktober 2005 - 11:53 #1
Slet ingen :O?
Avatar billede cyberdudes Nybegynder
25. oktober 2005 - 15:37 #2
Ikke den smarteste løsning men prøv noget i den her stil:

1: Find alle brugere på din vennelist liste
2: Kør dem igennem og for hver lavet et check om de er online i online tabellen
3: Hvis de er online så vis dem
4: Kør dem igennem og for hver lav et check om de IKKE er online i online tabellen
5: Hvis de IKKE er online så vis dem

Dette burde få dem der er online øverst...
Avatar billede rarw Nybegynder
25. oktober 2005 - 16:53 #3
Kan du give et eksempel :O?
Avatar billede cyberdudes Nybegynder
27. oktober 2005 - 11:44 #4
1: SELECT * FROM venneliste;
2: lav en for() løkke i php med resultatet fra punkt 1
3: SELECT user_id FROM online_profiles
3.1: Hvis user_id fra punkt 3 er > 0 så er brugeren online.
3.2: Vis brugeren
4: SELECT user_id FROM online_profiles
4.1: Hvis user_id fra punkt 4 er = 0 så er brugeren ikke online.
4.2: Vis brugeren

Gider ikke til at lave alt php koden også, det brude være til at lave udfra det jeg har skrevet...  :)
Avatar billede rarw Nybegynder
27. oktober 2005 - 12:23 #5
hmm, altså kan ikke selv finde ud af at sammesætte den :/
Avatar billede rarw Nybegynder
28. oktober 2005 - 14:35 #6
Jeg prøver bare igen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester