2016-04-14 8 views
1

を注文するには:私がしたい私は、とポストのDB持ってどのようにホット/上昇の記事で

post_id(int(7)) user_id(int(7)) post_txt(text) post_time(varchar(30)) likes_count(int(10)) 

(post_timeは、この「2016年5月4日午後05時41分」のように見えている)

それを "ホットポスト"で注文する"likes_count/post_time"

どうすればいいですか?

これは、私は今それを行う方法です。

$que_post=mysql_query("select * from user_post order by post_id desc"); 

PS。私は、これはあなたが通常同類を保存する方法ではないことを知っているが、私は目的

編集-例のデータのためにそれを実行します。

97||25||Hello world||8-4-2016 14:19||19 

私が使用したいアルゴリズムが/好きな時間です。私はその悪いアルゴリズムを知っていますが、私は基本を理解したいだけです。 私はあなたがその

+5

提供:(1)サンプルデータ。 (2)望ましい結果; (3) "ホットポスト"に使用しているルール。 –

+0

「likes_count/post_time」とは、言い換えるとlikes_countをポストタイムで割ったものですか?そうであれば、それは悪いアルゴリズムのように思える。なぜなら、新しいコンテンツはより暑いのではなく暑さが少なくなるからである。 – Chris

+1

'mysql_ *'を使用しないでください。削除されても動作しません。 'PDO' [リンク](http://php.net/manual/en/book.pdo.php)または' mysqli' [リンク](http://php.net/manual/en/book.mysqli.php)をクリックしてください。 – Tom

答えて

1

のために良いアルゴリズムを知っている場合は、(manualを読む)DATETIMEpost_timeフィールドの種類を変更する必要があります知っていただきたいと思います。 すべての行は、YYYY-MM-DD HH:MM:SSという形式のスクリプトで変換する必要があります。あなたがそれをすると、すべてがうまくいくでしょう。

アルファベット順に並べ替えると問題が発生します。たとえば、テキストとしての01.01.2016は31.01.1999未満です。

+0

私はSQLをすでにビルドしていますが、私はそれを変更します。データタイムを仮定しましょう。どうすればいいですか? –

+0

'new_post_time'フィールドを追加し、' STR_TO_DATE( '8-4-2016 14:19'、 '%m-%d-%Y%H%i') 'で更新することができます。フォーマットを修正する – Andrewus

0

post_timeカラムを日付タイプを使用するように変換できると仮定すると、それ以降の秒数が表示されます。

Order By like_count/(unix_timestamp(now()) - unix_timestamp(post_time)) Desc; 

列の型を変更するオプションがない場合は、オンザフライstr_to_date機能を使用して変換することができますが、それは潜在的に非常に遅く、操作になります。

関連する問題