Vinnaren i pepparkakshustävlingen!
2010-10-31, 02:29
  #1
Avstängd
BlackSunEmpires avatar
Hejsan Flashback.

Jag har just nu en MySQL-databas där datumet för de olika raderna är postade på det här viset "2010 10 27 08 03".

Alltså:
År: 2010, månad: 10 (oktober), dag: 27:e, timme: 08, minut: 03.

Hur ska jag bära mig åt för att visa de 30 senaste posterna sorterat efter datum utan att använda mig av id:s till varje post och verkligen sortera dem efter det senaste datumet först?
Citera
2010-10-31, 02:52
  #2
Medlem
Om du använder mysql datatypen TIMESTAMP så kan du bara gör så här
Kod:
SELECT FROM Table ORDER BY Date DESC 
Citera
2010-10-31, 02:59
  #3
Avstängd
BlackSunEmpires avatar
Citat:
Ursprungligen postat av K0nserv
Om du använder mysql datatypen TIMESTAMP så kan du bara gör så här
Kod:
SELECT FROM Table ORDER BY Date DESC 

Hur gör man då? Ställer man bara in fältet "date" i databasen till typen "TIMESTAMP" och låter bli att sätta in någonting i det när någon besöker sidan i fråga och så fylls det fältet i automatiskt?

Jag är dock inte helt säker på att jag vill använda mig av det här, i alla fall inte endast det här. Vill fortfarande själv kunna skriva ut tiden lite som jag vill, men jag skulle ju kunna köra med två separata date-fält. Ett för eget bruk och ett för att sortera posterna efter senaste datumet med.
Citera
2010-10-31, 04:46
  #4
Medlem
mutixs avatar
Kod:
SELECT * FROM Table ORDER BY Date DESC LIMIT 30;
Ska funka fint utan att ändra något.
Citera
2010-10-31, 11:27
  #5
Medlem
Citat:
Ursprungligen postat av BlackSunEmpire
Hur gör man då? Ställer man bara in fältet "date" i databasen till typen "TIMESTAMP" och låter bli att sätta in någonting i det när någon besöker sidan i fråga och så fylls det fältet i automatiskt?

Jag är dock inte helt säker på att jag vill använda mig av det här, i alla fall inte endast det här. Vill fortfarande själv kunna skriva ut tiden lite som jag vill, men jag skulle ju kunna köra med två separata date-fält. Ett för eget bruk och ett för att sortera posterna efter senaste datumet med.
Du kan mycket riktigt sätta default värdet för kolumnen till tiden när raden skapas, men det också att göra så att fältet får tiden uppdaterad när raden ändras.
Utöver detta kan du såklart också sätta in vilka värden du vill manuellt så här:
Kod:
INSERT INTO Table(dateVALUES('yyyy-mm-dd hh:mm:ss'


EDIT:
Om du vill skapa en besökslogg så måste du kolla varje gång personen besöker sidan om deras IP-adress är känd sedan tidigare, endast om den inte är det så lägger du till personen i listan.

Exempel:
Kod:
/*Kan göras på en jäva massa sätt och dett är absolut inte det bästa*/
$ip $_SERVER['REMOTE_ADDR']; 
$error false//Håller redan på om något gått fel

$previousVisits mysql_query("SELECT ID FROM VisitorLog WHERE ip='$ip'");
if( !
$previousVisits )
{
    
$error true;
}
else
{
if ( 
mysql_num_rows($previousVisits) == )
{
/*Här förutsätter vi att kolumnen med datumet i har som default NOW()*/
$query mysql_query("INSERT INTO VisitorLog(ip) VALUES('$ip')"; /
if ( !
$query 
{
$error true;
}
}

if ( 
$error 
{
echo 
"ooops";

__________________
Senast redigerad av K0nserv 2010-10-31 kl. 11:37.
Citera
2010-10-31, 11:41
  #6
Medlem
gadzooxs avatar
unix-timestamp, lagra i en integerkolumn, sortera descending. För att fylla fältet med ett värde kan du använda PHPs time(), eller MySQLs UNIX_TIMESTAMP()

Formateringen gör du sedan med PHPs date().
Citera
2010-10-31, 11:49
  #7
Moderator
Protons avatar
Vill man göra det bekvämt för sej går det ju att spara värdet som en DATETIME, använda funktionen NOW() för aktuell tipsstämpel när man ska ha in värden i databasen, och DTAE()-funktionen när man ska formatera sitt sparade datum. Alternativet är ju att man använder FROM_UNIXTIME() som är inbyggd i mysql för att få ut ett läsbart datum.
Citera
2010-10-31, 11:51
  #8
Medlem
Fast NOW() fungerar ju om man kör Timestamp också likaså kan du plocka ut datan från en timestamp genom att hämta den som unix timestamp och använda den i Phps Date()
Citera
2010-10-31, 11:51
  #9
Moderator
Protons avatar
Dessutom är ju det här mer en fråga om SQL-syntax gssar jag, vi flyttar den till databaser.

PHP -> Databaser/Mod
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback