webForumDet fria alternativet

Automatisk meny

5 svar · 801 visningar · startad av tanten

tantenMedlem sedan nov. 20051 596 inlägg
#1

Försöker komma på hur man kan få datumen i en tabell att med php skapa nya länkar i menyn så fort den fått innehåll. Så som många bloggar fungerar.
Så härskulle jag vilja få till det: Arkiv
<dl>
<dt>2008</dt>
<dd><a href="/2008/feb.php" title="feb 2008">Februari</a></dd>
osv
<dd><a href...>April</a></dd> //efter i morgon när den första nyheten kommit in i databasen osv...
</dl>
Är det möjligt med bara php?

Blir jätteglad för alla tips...

itpastornMedlem sedan feb. 2007278 inlägg
#2

Om man tänker sig data lagrad i MySQL med datetime, så kan man i sin SQL-fråga formatera per år och månad och sedan gruppera svaren så att det blir ett svar per månad. Därefter blir det en loop i php för att visa resultatet.

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_date-format

SELECT DATE_FORMAT(blogtime,'%Y') AS year, DATE_FORMAT(blogtime,'%M') as month 
GROUP BY year, month 
ORDER by blogtime DESC

Moderna versioner av MySQL (5.0.25+) stödjer också locale för exempelvis namn på dagar och månader. Då kan man använda svaret från frågan ovan utan att översätta till svenska. http://dev.mysql.com/doc/refman/5.0/en/locale-support.html

tantenMedlem sedan nov. 20051 596 inlägg
#3

Tack för svar itpastorn, men jag kanske uttryckte mig dåligt.
Som jag har det nu så får jag till länken på det sätt du beskriver, <dd><a href="../2008/feb.php" title="feb 2008">Februari</a></dd>men jag får samtidigt skapa en ny fil för varje månad... typ feb.php

$stmt = $db->prepare('SELECT rubrik, message
FROM news
WHERE datum > \'2008-02-01\'
AND datum < \'2008-03-01\'
ORDER BY id DESC');

Och jag tror inte att det går till så på bloggarnas Archive-länkar.
t.ex på din vän blog.c0la's Archive så skapas länkarna automatiskt på något sätt.
Kan det vara så att man måste använda atom+xml? Känner att jag har aldeles för lite kunskap för att ställa frågan rätt, men hoppas ni förstår vad jag menar. :r

aasahMedlem sedan mars 20034 471 inlägg
#4

Vad är det egentligen du länkar till? Poster i en databas? För i så fall ska det inte till några filer. Säg att du har en tabell:

Gästbok
nr Inlägg Datum
1 Hej 080105
2 Tja 080212
3 kul 080324
4 puh 080324

Då kan du skapa en sida i PHP som visar ett visst inlägg baserat på id:t, tex

$sql = "SELECT Inlägg FROM Gästbok WHERE  id = ".$_GET['id'];
$res = mysql_query($sql) or die();
$row = mysql_fetch_array($res);
echo $row['Inlägg'];

Då kommer showGuestbook.php?id=1 att skriva ut "Hej", medan showGuestbook.php?id=3 visar "kul".

Då kan du länka till den infon så här:

$sql = "SELECT id, DATE_FORMAT(Datum,'%Y') AS år, DATE_FORMAT(Datum,'%M') as mån  FROM Gästbok ORDER BY Datum DESC";
$res = mysql_query($sql) or die();
$old = '';
while ($row = mysql_fetch_array($res)) {
   $curr = $row['mån'].' '.$row['år'];
   if ($curr != $old) {
      echo '<h1>'.$curr.'</h1>';
      $old = $curr;
   }
   $url = "showGuestbook.php?id=".$row['id'];
   echo '<a href="'.$url.'">...</a>';
}
Fredde MannenMedlem sedan nov. 20014 054 inlägg
#5

Och vill man få det att se ut som liknande: http://www.domain.se/2008/Februari.php

Så får man ta hjälp av htaccess och använda sig av rewrite-rules ..

men som egentligen kanske ser ut så här: http://www.domain.se/page.php?y=2008&m=2

typ...

tantenMedlem sedan nov. 20051 596 inlägg
#6

Annat kom emellan så jag har inte hunnit med att ta tag i detta igen förrän nu, så jag gör ett nytt försök och livar upp min gamla tråd igen...
Men nej det är inte ett inlägg som det ska länkas till.
Jag länkar till en hel månads dagboksanteckningar. Som en vanlig blogg.
Och jag har pillat lite och försökt med lite olika varianter, men...
Som det ser ut just nu så har jag en index fil med en header som pekar in till /2008/juli.php och det fungerar så länge det är juli, men när det blir augusti och det skrivs en ny dagboksanteckning så skulle jag vilja komma på ett sätt att få indexfilen att peka till augusti i stället.
Inte så att det byts vid månadsskiftet. Då finns det risk att det blir en tom sida som visas flera dagar eller error, gissar jag. Sedan har jag 12 filer som ser ut som den jag visade förut. En för varje månad.
Av vad jag förstått så har det tillkommit nya classer som kan hantera datum i.o.m. php5 men dokumentationen är väl si så där.
Sidan är fem år gammal och har sin historia... och alla gamla mappar som ligger i roten får vara kvar som de är med sin gamla kodning. därav headern till mappen 2008.
Någon som kan ge tips på hur jag ska lösa detta för framtiden? :q

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)