/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Vis online brugere øverst
Fra : Unsafe


Dato : 28-10-05 15:25

Hej alle sammen :)

Jeg har prøvet at spørger før diverse steder om 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 ? :)

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Unsafe (30-10-2005)
Kommentar
Fra : Unsafe


Dato : 30-10-05 18:23

Slet ingen ?

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Stig Johansen (31-10-2005)
Kommentar
Fra : Stig Johansen


Dato : 31-10-05 06:31

Unsafe wrote:

> Slet ingen ?

Prøv at sammenligne disse to linier fra OP:
......
  `user_id` int(11) NOT NULL default '0'
......
   ,IF( o.user_id IS NULL, 0, 1 ) as online
.....

--
Med venlig hilsen
Stig Johansen

Unsafe (31-10-2005)
Kommentar
Fra : Unsafe


Dato : 31-10-05 15:52

Hvad mener du ?

Hvad kan jeg gøre så det virker?

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Stig Johansen (01-11-2005)
Kommentar
Fra : Stig Johansen


Dato : 01-11-05 06:40

Unsafe wrote:

> Hvad mener du ?

At du definerer NOT NULL i din tabel, og tester for NULL i din SQL.
Da o.user_id aldrig er NULL, vil din IF(..) altid have samme værdi.

> Hvad kan jeg gøre så det virker?

Umiddelbart ser det ud som om du blot skal bruge feltet o.user_id
direkte(o.user_id as online).

--
Med venlig hilsen
Stig Johansen

Unsafe (01-11-2005)
Kommentar
Fra : Unsafe


Dato : 01-11-05 20:12

Det gav samme resultat som før.


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Stig Johansen (02-11-2005)
Kommentar
Fra : Stig Johansen


Dato : 02-11-05 07:11

Unsafe wrote:

> Det gav samme resultat som før.

Hov, glem lige det jeg skrev før. Jeg havde ikke lige set, at du benytter en
LEFT OUTER JOIN, så user_id kan jo godt være NULL i dit oprindelige
statement.

Hvis du med 'ikke øverst' mener, at de ligger nederst, ligger forklaringen i
din sortering:
   ORDER BY
        online
        ,f.id DESC

Her sorterer du efter online i stigende orden, og hvis 1 er online, kommer
den til sidst.

Prøv at rette det til:
   ORDER BY
        online DESC
        ,f.id DESC

Eller
   ORDER BY
        online DESC
        ,f.id

Hvis du vil have sorteret efter stigende id i stedet for faldende.

--
Med venlig hilsen
Stig Johansen

Unsafe (02-11-2005)
Kommentar
Fra : Unsafe


Dato : 02-11-05 08:59

Da jeg gjorder det med online DESC og ikke f.id DESC kom en af mine online
venner længere op på listen,

MEn stadig ikke helt op, der var stadig et par stykker OFFLINE før ham

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste