Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Viimeisimmät päivitykset -scripti haussa

Sivun loppuun

Tontttu [15.08.2005 17:34:38]

#

Moro.

Olis kiva saaha semmonen scripti, joka kertoo esim. 10 sivua, mitä on viimeksi päivitetty päivityspäivämäärineen.

Olga [15.08.2005 17:47:06]

#

Miten olis filemtime. Käyt luupissa halutut sivut läpi, pistät tiedostot ja ajat taulukkoon, lajittelet taulukon ja tulostat 10 ekaa.

Tontttu [15.08.2005 18:04:00]

#

Linkki ei aukee.

Oon aloittelija näissä jutuissa nii en usko, että ite onnistun sitä tekemään. Voin mä kuitenkin yrittää, mut olisin tosi kiitollinen, jos joku vois väsätä semmosen.

Lisätty: Löysin tuon, kun surffailin php.netin sivuilla. En kuitenkaan osaa laittaa näyttämään 10 viimesintä muokattua tiedostoa

hmmp [15.08.2005 18:32:18]

#

Jos sivut on tietokannassa, homma on vielä helpompi. Jos esim. päivityspäivämäärä on timestampina sarakkeessa "last_update" ja sivun nimi sarakkeessa "nimi", niin voit hakea sivut kannasta SQL-lauseella "SELECT nimi FROM sivut ORDER BY last_update LIMIT 10". Ja sitten vaan käyt hakutulokset läpi ja tulostat ne.

Tontttu [15.08.2005 18:44:15]

#

Ei oo sivut tietokannassa, eli se ei onnistu.

arcatan [15.08.2005 19:10:00]

#

<h1>Kymmenen viimeksi päivitettyä</h1>
<ol>
<?php
  // laitetaan taulukkoon, olin laiska
  $sivut = Array("index.html", "outdex.html", "majava.html", "kilpikonna.html", "1337.html", "oon.html", "saletisti.html", "hot.html");

  foreach($sivut as $sivu) {
    // jännästi toisin päin nämä, helpompi koodata ;)
    $ajat[filemtime($sivu)] = $sivu;
  }

  krsort($ajat);

  for($i = 0; $i < 10 && $i < count($ajat); $i++)
  {
    echo "<li>" . $ajat[$i] . "</li>\n";
  }
?>
</ol>

En ole kokeillut, mutta saattaa toimia.

jrantala [15.08.2005 19:18:34]

#

ja esim kaikki html-sivut saadaan taulukkoon helposti:

$sivut = glob("*.html");

Tontttu [15.08.2005 19:26:07]

#

<h1>Kymmenen viimeksi päivitettyä sivua:</h1>
<ol>
<?php

$sivut = glob("*.php");

  foreach($sivut as $sivu) {

    $ajat[filemtime($sivu)] = $sivu;
  }

  krsort($ajat);

  for($i = 0; $i < 10 && $i < count($ajat); $i++)
  {
    echo "<li>" . $ajat[$i] . "</li>\n";
  }
?>
</ol>

noin laitoin sivuilleni, numerot 1-10 tulikyl nätisti, mut ei tuu päivitettyjä sivuja.

jrantala [15.08.2005 19:28:08]

#

Tuo $ajat-taulukko pitää varmaankin purkaa foreachilla.

Tontttu [15.08.2005 19:37:18]

#

En onnistunu.. Ei tuu sivuja listaan.

arcatan [15.08.2005 19:37:38]

#

Anteeksi. Ajattelinpa taas hölmösti. Tässä testattua koodia:

<h1>Kymmenen viimeksi päivitettyä sivua:</h1>
<ol>
<?php

  $sivut = glob("*.php");

  foreach($sivut as $sivu) {
    $ajat[filemtime($sivu)] = $sivu;
  }

  krsort($ajat);

  $count = 0;
  foreach($ajat as $aika => $sivu)
  {
    echo "<li><a href=\"$sivu\">$sivu</a> (" . date("d.m.Y", $aika) . ")</li>\n";
    if (++$count == 10) { break; }
  }
?>
</ol>

Tontttu [15.08.2005 19:40:36]

#

Noniiih! Nyt toimii. Kiitoskiitos :)

Tontttu [15.08.2005 23:01:32]

#

Ainiin..

Se osote mikä siihen tulee ei sais olla muodossa
<a href="http://www.arkku.net/~toni/tiedosto.php"></a>
Pitäs olla:
<a href="http://www.arkku.net/~toni/?sivu=tiedosto"></a>

Koitin jo ite, parse erroreita huutaa, tekispä melkeen mitä tahansa.. ;)

ajv [15.08.2005 23:11:03]

#

Jostain on jäänyt tälläinen koodi, mitä oon ite välillä tollasissa tapauksissa käytelly:

<?
function drop_extension($fname){
   $pos = strrpos($fname, ".");
   return array(substr($fname, 0, $pos), substr($fname, $pos+1));
}
// toiminnee tällälailla
$tiedot = drop_extension("tiedosto.txt");
echo $tiedot[0]; // tiedosto
echo $tiedot[1]; // txt
?>

Tontttu [16.08.2005 14:57:43]

#

Aloittelijana minä en nyt osaa tuota pistää oikeeseen kohtaan oikein.. :S

Tämmönen se koodi mulla nyt siis on:

<h1>Kymmenen viimeksi päivitettyä sivua:</h1>
<?php

  $sivut = glob("*.php");

  foreach($sivut as $sivu) {
    $ajat[filemtime($sivu)] = $sivu;
  }

  krsort($ajat);

  $count = 0;
  foreach($ajat as $aika => $sivu)
  {
    echo "-".date("d.m.Y", $aika)." <a href=\"$sivu\">$sivu</a> <br>\n";
    if (++$count == 10) { break; }
  }
?>

ajv [16.08.2005 15:14:01]

#

<h1>Kymmenen viimeksi päivitettyä sivua:</h1>
<?php

  $sivut = glob("*.php");

  foreach($sivut as $sivu) {
    $ajat[filemtime($sivu)] = $sivu;
  }

  krsort($ajat);

  $count = 0;
  foreach($ajat as $aika => $sivu)
  {
    $sivu = substr($sivu, 0, strrpos($sivu, "."))
    echo "-".date("d.m.Y", $aika)." <a href=\"?sivu=".$sivu."\">".$sivu."</a> <br>\n";
    if (++$count == 10) { break; }
  }
?>

Toi vois toimii. Turhaa tota tiedostonimee on pilkkoo taulukoksi tossa loopissa, joten purin siitä ton päätteen purkamisen ja laitoin pelkästään sen looppiin.

Tontttu [16.08.2005 19:22:26]

#

Eäh.. ei toimi. Huutaa jälleen parse erroria:

Parse error: parse error, unexpected T_ECHO in /home/toni/public_html/etusivu.php on line 71

exAtuu [16.08.2005 19:22:27]

#

Örr. Tätä piti välttää ;F Manuaalia nokan eteen ja opettelemaan, ei se valmiilla koodeilla onnistu. Opettelet itse, niin ei tarvitse jokaista pikkujuttua täältä kysyä ;)

Tontttu [16.08.2005 19:28:01]

#

Et arvaakkaan kui paljon oon lukenu php juttuja ja yrittäny oppia.. En oo vaan kunnolla kaikkia juttuja älynny..

ajv [16.08.2005 19:32:49]

#

unexpected T_ECHO, "Odottamaton echo", eli ennen tuota echoa on virhe syntaksissa. Tuollaisessa tilanteessa kannattaa lähteä terkastelemaan edellistä riviä, että siellä on kaikki sulut suljettu ja puolipisteet rivin lopussa...

Tontttu [16.08.2005 21:40:43]

#

:) Toimii, kiitos.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta