PHP vypis složky a nasledne seřazeni podle data Vyřešeno

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
Pepis
Tvůrce článků
Level 3.5
Level 3.5
Příspěvky: 961
Registrován: srpen 07
Pohlaví: Muž
Stav:
Offline
Kontakt:

PHP vypis složky a nasledne seřazeni podle data  Vyřešeno

Příspěvekod Pepis » 21 led 2013 22:21

Pomoci php vypišu obsah složky na web, seřadi se to nahodně takže pomoci tohohle kodu jsem to seřadil numericky

Kód: Vybrat vše

while($file_name=readdir($dir))
$dirFiles[] = $file_name;
rsort ($dirFiles,SORT_NUMERIC);
foreach($dirFiles as $file_name)


vše funguje až na to že rok 2012 je před 2013
Soubour mam pojmenovany ve formatu dd.mm.yyyy vim ze by vse vyresilo prejmenovani souboru na yyyy.mm.dd ale potřebuju to seřadit tak jak to pojmenovane je.

Pokud nevite tak by taky helplo vyfiltrovat stare soubory neco ve stylu - if startswith **.**.2012; $file_name=$file_name2012.

Php neumim kdyz potrebuju neco udelat prez php funkci pomaha strejček google ale teď jsem v koncich ;)

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP vypis složky a nasledne seřazeni podle data

Příspěvekod CZechBoY » 22 led 2013 00:31

šlo by to přes usort

Kód: Vybrat vše

<?php
function cmpDate($a, $b)
{
    if ($a[0] == '.' || $b[0] == '.') {
        return 0;
    }
    $date_a = strtotime($a);
    $date_b = strtotime($b);
    return ($date_a < $date_b) ? -1 : 1;
}

while($file_name=readdir($dir))
    $dirFiles[] = $file_name;
usort($dirFiles, "cmpDate");

foreach ($dirFiles as $file) {
    echo htmlspecialchars($file) . "<br/>\n";
}



edit: vymazáno $a=array..
a proměnná se jmenuje $dirFiles
Naposledy upravil(a) CZechBoY dne 22 led 2013 19:32, celkem upraveno 2 x.
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
Pepis
Tvůrce článků
Level 3.5
Level 3.5
Příspěvky: 961
Registrován: srpen 07
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP vypis složky a nasledne seřazeni podle data

Příspěvekod Pepis » 22 led 2013 19:24

Hm super ale neumim to nejak vlozit do toho kodu - nefunguje mi to ;( takhle vypada muj nynejši kod.

Kód: Vybrat vše

<?php

$directory="files/";

$dir=opendir($directory);
$file_list="<table cellpadding=\"2\" cellspacing=\"2\">";

while($file_name=readdir($dir))
$dirFiles[] = $file_name;
rsort ($dirFiles,SORT_NUMERIC);
foreach($dirFiles as $file_name)
    {

    if(($file_name!=".")&&($file_name!=".."))
        {

        $file_list.="<tr><td><font style=\"color:#000000;font-family:arial,helvetica;font-size:9pt\">".$file_name."</font></td><td width=\"50\">&nbsp;</td><td><font style=\"color:#ffffff;font-family:arial,helvetica;font-size:9pt\"><a href=\"files/".$file_name."\">Stahni</a></font></td></tr>";
       
        }

    }

$file_list.="</table>";
closedir($dir);
echo $file_list;

?>

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP vypis složky a nasledne seřazeni podle data

Příspěvekod CZechBoY » 22 led 2013 19:30

však stačí nahradit tu část se sortováním, když jsem poslal sortovací část...

Kód: Vybrat vše

<?php

$directory="files/";


function cmpDate($a, $b)
{
    if ($a[0] == '.' || $b[0] == '.') {
        return 0;
    }
    $date_a = strtotime($a);
    $date_b = strtotime($b);
    return ($date_a < $date_b) ? -1 : 1;
}

$dirFiles = array();
$dir=opendir($directory);
while($file_name=readdir($dir))
    $dirFiles[] = $file_name;
closedir($dir);
usort($dirFiles, "cmpDate");

$file_list="<table cellpadding=\"2\" cellspacing=\"2\">";
foreach($dirFiles as $file_name)
    {

    if(($file_name[0]!='.'))
        {

        $file_list.="<tr><td><font style=\"color:#000000;font-family:arial,helvetica;font-size:9pt\">".$file_name."</font></td><td width=\"50\">&nbsp;</td><td><font style=\"color:#ffffff;font-family:arial,helvetica;font-size:9pt\"><a href=\"files/".$file_name."\">Stahni</a></font></td></tr>";

        }

    }

$file_list.="</table>";
echo $file_list;
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
Pepis
Tvůrce článků
Level 3.5
Level 3.5
Příspěvky: 961
Registrován: srpen 07
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP vypis složky a nasledne seřazeni podle data

Příspěvekod Pepis » 22 led 2013 20:34

Hmm vypsalo to soubory takhle

Kód: Vybrat vše

13.01.2013 blablabla.mp3
25.12.2012 blablabala.mp3
06.01.2013  blablabla.mp3
20.01.2013  blablabla.mp3
10.01.2013  blablabla.mp3
19.01.2013  blablabla.mp3
23.12.2012  blablabla.mp3
19.01.2013  blablabla.mp3
01.01.2013  blablabla.mp3
22.12.2012  blablabla.mp3

takže to moc podle datumu nejde

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP vypis složky a nasledne seřazeni podle data

Příspěvekod CZechBoY » 22 led 2013 22:07

Kód: Vybrat vše

<?php
$directory = "./files/";

if(substr($directory, -1, 1) != '/')
   $directory .= '/';

$dirFiles = array();
$dir = opendir($directory);
while($file_name = readdir($dir))
    $dirFiles[] = $file_name;
closedir($dir);
usort($dirFiles, "cmpDate");

$file_list = "<table cellpadding=\"2\" cellspacing=\"2\">";
foreach($dirFiles as $file_name) {
   if($file_name[0] != '.') {
      $file_list .= "<tr><td style=\"color:#000000;font-family:arial,helvetica;font-size:9pt\">" . htmlspecialchars($file_name, ENT_QUOTES) . "</td><td width=\"50\">&nbsp;</td><td style=\"color:#ffffff;font-family:arial,helvetica;font-size:9pt\"><a href=\"" . $directory . rawUrlEncode($file_name) . "\">Stahni</a></td></tr>";
   }
}
$file_list .= "</table>";
echo $file_list;


/** funkce na porovnání 2 dat
 * funkce si sama ořízne přebytečné znaky (na délku 10 znaků)
 * funkce předpokládá formát data "d.m.Y"
**/
function cmpDate($a, $b) {
    if ($a[0] == '.') {
        return $b[0] == '.' ? 0 : +1;
    } elseif($b[0] == '.') {
      return -1;
   }
   $a = substr($a, 0, 2+2+4+2); // 2 pro den, 2 pro měsíc, 4 pro rok, 2 tečky
   $b = substr($b, 0, 2+2+4+2); // 2 pro den, 2 pro měsíc, 4 pro rok, 2 tečky
    $date_a = date_create_from_format('d.m.Y', $a);
    $date_b = date_create_from_format('d.m.Y', $b);
   if($date_a === false) {
      return $date_b === false ? 0 : +1;
   } elseif($date_b === false) {
      return -1;
   }
    return ($date_a < $date_b) ? +1 : -1; // sestupně (první je nejmladšéí)
   //return ($date_a < $date_b) ? -1 : +1; // vzestupně (první je nejstarší)
}
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
Pepis
Tvůrce článků
Level 3.5
Level 3.5
Příspěvky: 961
Registrován: srpen 07
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP vypis složky a nasledne seřazeni podle data

Příspěvekod Pepis » 25 led 2013 20:05

Diky moc, ještě sem musel upgradovat php na verzi 5.3 aby fungovalo date_create_from_format a pote hodin function cmpDate pred funkci usort a vse jede jak ma ;)
Maš to umě, opravdu moc díky


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Výběr PC podle her Příloha(y)
    od buripe » 13 pro 2024 16:16 » v Rady s výběrem hw a sestavením PC
    6
    1887
    od buripe Zobrazit poslední příspěvek
    15 pro 2024 18:21
  • Která PC sestava je podle vás nejlepší? Příloha(y)
    od Rhadley » 04 lis 2024 16:34 » v Rady s výběrem hw a sestavením PC
    4
    1783
    od Kminek Zobrazit poslední příspěvek
    05 lis 2024 09:03
  • Rozdělení sítě na podsítě, výpočet podsítí podle počtu hostů Příloha(y)
    od zuzana3 » 27 pro 2024 08:09 » v Administrace sítě
    12
    4737
    od petr22 Zobrazit poslední příspěvek
    27 pro 2024 12:29
  • W11 - předdefinované složky Příloha(y)
    od draxxx » včera, 08:45 » v Windows 11, 10, 8...
    2
    524
    od draxxx Zobrazit poslední příspěvek
    včera, 16:25
  • Obsah složky se zrcadlí na ploše Příloha(y)
    od Grander » 01 dub 2025 17:44 » v Windows 11, 10, 8...
    4
    2747
    od Grander Zobrazit poslední příspěvek
    02 dub 2025 15:29

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti