Avatar billede Milla-Tigerdyr Praktikant
30. september 2011 - 15:44 Der er 29 kommentarer og
2 løsninger

Er det muligt at lave en php kode, der hiver ét emne op? (sticky)

Hej eksperter.
Ville bare lige hører om det er muligt at lade ét emne blive sticky på et forum, så det bliver ved med at stå øverst.
<br>
Jeg har intet imod at skulle gå ind og lave en php kode der f.eks siger at hvis id'en på emnet er =3 (bare et eks.) så skal den vises øverst hele tiden.

Er der nogen der har en ide til det?
Avatar billede heinzdmx Nybegynder
30. september 2011 - 15:47 #1
Du kan lave et felt der du kalder "sticky" og så enten sætte værdien til 1 eller NULL. Så kan du lave 2 gennemløbning hvor den første kun tager sticky threads og den næste tager alle der ikke er.
Avatar billede Milla-Tigerdyr Praktikant
30. september 2011 - 15:52 #2
Ehm, og hvordan gør jeg så liiige det?s;
Kan godt finde ud af at lave et felt der hedder sticky, men resten er lidt..ved ikke helt hvordan jeg skal gøre.
Avatar billede heinzdmx Nybegynder
30. september 2011 - 16:25 #3
Følgende kode bruger jeg:


// Følgende for aktiv
$SQL = "UPDATE tabel SET aktiveret='1' where id = ".$_escapedid;
// Følgende for deaktiveret:
$SQL = "UPDATE tabel SET aktiveret=NULL where id = ".$_escapedid;


Nu kan du så lave en normal query og baseret på om du vil lave et eller 2 kald til db kan du:

1.
- Lave første loop hvor du skriver if ($result['aktiveret'])
- kalde mysql_data_seek($result, 0);
- Lave andet loop hvor i stedet kalder if (!$result['aktiveret'])
2. Lav 2 query's hvor du indsætter en WHERE aktiveret='1' på den første og WHERE aktiveret=NULL på den anden

Hvilken metode der er bedst er der delte meninger om:

http://stackoverflow.com/questions/4638014/can-you-reuse-a-mysql-result-set-in-php
Avatar billede majbom Novice
30. september 2011 - 19:11 #4
du kunne også bare sætte den til 0 hvis det ikke er sticky og 1 hvis den er, og så sortere efter sticky, så behøver du kun én query til alle poster...
Avatar billede Milla-Tigerdyr Praktikant
30. september 2011 - 19:16 #5
Splazz, men hvis jeg sortere efter sticky, kommer emnerne så ikke i forkert rækkefølge? Eller ville man kunne gøre, så det er den der er sidst svaret i, der er øverst?:)
Avatar billede heinzdmx Nybegynder
30. september 2011 - 19:19 #6
Det har du ret i splazz. Hvis du vil sorteret efter tid, kan du sætte en
ORDER BY sticky, date_field


Så vil den sortere først efter sticky og bagefter feltet der hedder date_field
Avatar billede Milla-Tigerdyr Praktikant
30. september 2011 - 19:21 #7
heinzdmx; men hvad skal date_field indeholde? Altså dato'en på emnet, så det nyeste kommer først eller hvad?

Men, hvordan ville jeg så kunne lave det sådan, at det der var skrevet senest i, kom øverst?
Avatar billede Slettet bruger
30. september 2011 - 19:30 #8
Du skal bare sortere omvendt på datoen så nyeste kommer først:
ORDER BY sticky, date_field DESC
Avatar billede majbom Novice
30. september 2011 - 19:31 #9
du kunne evt lave en kolonne mere i den tabel, hvor du har en dato på seneste indlæg, som bliver opdateret med NOW() hver gang der bliver oprettet en kommentar/indlæg til emnet
Avatar billede Slettet bruger
30. september 2011 - 19:33 #10
sticky skal også have en DESC efter så sticky står øverst (hvis 1=sticky og 0=ej sticky).
Avatar billede Milla-Tigerdyr Praktikant
01. oktober 2011 - 11:43 #11
Hvad betyder det der DESC/ hvad gør det?
Avatar billede Milla-Tigerdyr Praktikant
01. oktober 2011 - 11:46 #12
Hvilken datatype ville i sætte sticky som?
Avatar billede Milla-Tigerdyr Praktikant
01. oktober 2011 - 12:29 #13
Vent.. nu har jeg sorteret den med sticky, id, men den med sticky = 1, kommer ikke øverst, den kommer nederst?:S

Og hvis jeg skulle lave den med det sidste svar, så kunne jeg lave et felt der hedder last_answer, men hvordan opdatere jeg det?:S
Avatar billede majbom Novice
01. oktober 2011 - 12:44 #14
hvordan ser din query ud der hente posterne?

når du smider en kommentar til en tråd i din tabel, har du vel id'et på tråden? så laver du jo bare en update-query der opdatere trådens last_answer på now():

UPDATE tabel SET last-answer = now() WHERE parent_id=$id_på_tråden
Avatar billede Milla-Tigerdyr Praktikant
01. oktober 2011 - 12:46 #15
Jeg tester det lige :)
Avatar billede Milla-Tigerdyr Praktikant
01. oktober 2011 - 12:55 #16
Så virker det med at det der senest er svaret i, kommer frem. Men det sticky emne, laver sig altså sticky nede i bunden?:S
Avatar billede majbom Novice
01. oktober 2011 - 12:57 #17
citat fra #14:

hvordan ser din query ud der hente posterne?
Avatar billede Milla-Tigerdyr Praktikant
01. oktober 2011 - 13:02 #18
Jamen, hvad mener du?
Denne her?

$sql="SELECT * FROM $tbl_name ORDER BY sticky, last_answer DESC LIMIT $offset, $limit";
Avatar billede majbom Novice
01. oktober 2011 - 13:15 #19
citat fra #10:

sticky skal også have en DESC efter så sticky står øverst
Avatar billede Milla-Tigerdyr Praktikant
01. oktober 2011 - 13:17 #20
Så der skal stå:

ORDER BY sticky DESC, last_answer DESC
Avatar billede Milla-Tigerdyr Praktikant
01. oktober 2011 - 13:18 #21
Så virker det :D!
Avatar billede Milla-Tigerdyr Praktikant
01. oktober 2011 - 13:22 #22
Nej, nu flytter de sig ikke op mere :s
Avatar billede Milla-Tigerdyr Praktikant
01. oktober 2011 - 13:23 #23
Nu gør det :D Ligemeget :P
Avatar billede majbom Novice
01. oktober 2011 - 16:13 #24
det virker?

husk at bede de andre om svar også...
Avatar billede Milla-Tigerdyr Praktikant
01. oktober 2011 - 19:18 #25
heinzdmx og tolamaps smider i lige et svar?:)
Avatar billede Slettet bruger
01. oktober 2011 - 19:19 #26
Jeg springer over, ellers tak.
Avatar billede heinzdmx Nybegynder
02. oktober 2011 - 15:23 #27
Svar her :)
Avatar billede majbom Novice
02. oktober 2011 - 19:52 #28
tfp :)
Avatar billede Milla-Tigerdyr Praktikant
02. oktober 2011 - 19:56 #29
tfp?
Avatar billede majbom Novice
02. oktober 2011 - 20:13 #30
Tak For Point

:)
Avatar billede Milla-Tigerdyr Praktikant
02. oktober 2011 - 20:16 #31
Nååååårh :D
- Det var så lidt.

Splazz, kunne du lige kigge det andet emne der..du ved, det med siderne på mit forum :)
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