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
  • Jednoduché zaheslování složky v PC
    od Zabral68 » 25 pro 2023 08:58 » v Vše ostatní (bezp)
    3
    3290
    od Zabral68 Zobrazit poslední příspěvek
    25 pro 2023 09:49
  • Skript na vytvoreni zastupce slozky
    od ajr » 01 úno 2024 21:21 » v Windows 11, 10, 8...
    1
    1347
    od ITCrowd Zobrazit poslední příspěvek
    02 úno 2024 08:36
  • Outlook - složky v AJ, nelze vymazat Příloha(y)
    od huklorcz » 15 bře 2024 22:20 » v Kancelářské balíky
    5
    1911
    od mmmartin Zobrazit poslední příspěvek
    15 bře 2024 23:52
  • Outlook - složky v AJ, nelze vymazat Příloha(y)
    od janakailana » 03 bře 2024 08:21 » v Kancelářské balíky
    6
    1589
    od janakailana Zobrazit poslední příspěvek
    03 bře 2024 11:16
  • USB-C pouze data ? Příloha(y)
    od ski1961 » 08 říj 2023 10:25 » v Rady s výběrem hw a sestavením PC
    4
    2436
    od ski1961 Zobrazit poslední příspěvek
    08 říj 2023 11:40

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 38 hostů