Toon posts:

[php/mysql] miniforum, sorteren op laatste reactie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb twee tabellen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE talkreactie (
  id int(11) NOT NULL auto_increment,
  post_id int(11) NOT NULL default '0',
  auteur varchar(255) NOT NULL default '',
  datumtijd varchar(255) NOT NULL default '',
  bericht text NOT NULL,
  PRIMARY KEY  (id)

CREATE TABLE talktopic (
  id int(11) NOT NULL auto_increment,
  titel varchar(255) NOT NULL default '',
  starter varchar(255) NOT NULL default '',
  datumtijd varchar(255) NOT NULL default '',
  recent varchar(255) NOT NULL default '',
  bericht text NOT NULL,
  PRIMARY KEY  (id)

In talktopic worden de topics geplaatst, nu dacht ik dat ik met een timestamp die bestaat uit:

d-m-Y G:i

Telkens kon weergeven welk topic het actiefste is, maar dat werkt dus niet goed, is gebleken. Kan ik met een timestamp opslaan welk topic het actiefste is (dus waar als laatste een reactie op is geplaatst)

Kan het anders op een andere manier, bijvoorbeeld met verandering in databasestructuur oid? Moet ik van de cel datumtijd dan ipv Varchar, Time maken oid?

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
Een datum sla je niet op een VARCHAR, maar in een datumveld.

https://fgheysels.github.io/


Verwijderd

d-m-Y G:i werkt niet goed, gangbaar is 'Y-m-d G:i'. Daarmee werkt het sorteren dus wel goed.

En je kan er dus het beste een datetime-veld van maken. De huidige datum en tijd kan je dan automatisch in 'Y-m-d G:i'-formaat invoeren met de opdracht now(), dus:
code:
1
INSERT INTO tabel (datumtijd) VALUES (NOW())

Verwijderd

Topicstarter
Als ik Y-m-d doe, en dan in die timestamp gooi, kan die dan wel goed, of ook niet?

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
select wat_je_wil from talkreactie r, talktopic t order by r.datumtijd desc

Alleen inderdaad die datum niet in een varchar opslaan.. Op mysql.com ff zoeken naar coulmn types en vind iets leuks (als datetime? ff niet zeker)..

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Op vrijdag 07 juni 2002 12:28 schreef Sinisa het volgende:
Als ik Y-m-d doe, en dan in die timestamp gooi, kan die dan wel goed, of ook niet?
De kolom moet gewoon geen varchar zijn maar een datetime ofzo.. Dan kun je dat selecten met een functie als DATE_FORMAT(kolom, "%Y-%m-%d") of wat je ook maar wil :)

Verwijderd

Topicstarter
tnx voor snelle reacties, ga meteen proberen

Verwijderd

Op vrijdag 07 juni 2002 12:28 schreef Sinisa het volgende:
Als ik Y-m-d doe, en dan in die timestamp gooi, kan die dan wel goed, of ook niet?
Ja, dan doet hij het dus wel goed. Dat is ook heel logisch als je er even over nadenkt. Bij d-m-Y is 06-02-2002 hoger dan 04-03-2002. Bij Y-m-d heb je dit probleem dus niet.

Maar doe me een lol, en maak er voor de netheid meteen een datetime-veld van. En gebruik NOW().

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Op vrijdag 07 juni 2002 12:31 schreef sbesselsen het volgende:

[..]

Ja, dan doet hij het dus wel goed. Dat is ook heel logisch als je er even over nadenkt. Bij d-m-Y is 06-02-2002 hoger dan 04-03-2002. Bij Y-m-d heb je dit probleem dus niet.
[..]
Dusssssss
[KNIP iets stoms]

Anyway, met een datetime-veld hoef je niet eerst aan te geven welk formaat je het wilt hebben voor je er mee gaat rekenen, dat doet de myqsl-server voor je :9
Pagina: 1