• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP data modyfikacji pliku?

VPS Starter Arubacloud
0 głosów
230 wizyt
pytanie zadane 1 czerwca 2018 w PHP przez BlvckFox Gaduła (4,240 p.)
edycja 1 czerwca 2018 przez BlvckFox

Witam, chciałbym zrobić "galerię", która by wyświetlała wszystkie zdjęcia z danego folderu ale od najnowszego do najstarszego zdjęcia. Jak można to zrobić? Wszystkie poradniki są strasznie chaotycznie napisane.
Pierw powinienem pobrać wszystkie pliki i sprawdzić ich date modyfikacji,
Później posortować je i umieścić ścieżki do nich w tablicy np. $sortedFiles
A na koniec wyświetlić np for <img src="$sortedFiles[i]">, ale jak mogę zrobić pierwsze 3 kroki?

 

W skrócie: chce stworzyć taki program ktory tworzy tablice w ktorej są URLe posortowane od najnowszego zdjęcia z danego folderu

2 odpowiedzi

+1 głos
odpowiedź 1 czerwca 2018 przez event15 Szeryf (93,790 p.)
komentarz 1 czerwca 2018 przez BlvckFox Gaduła (4,240 p.)
edycja 1 czerwca 2018 przez BlvckFox

1. Warning: file_get_contents(test): failed to open stream: Permission denied 

2. Warning: filemtime(): stat failed for xxx.jpeg
3. ^- 

–1 głos
odpowiedź 1 czerwca 2018 przez Chess Szeryf (76,710 p.)
edycja 1 czerwca 2018 przez Chess
body{
    background:grey;
}
td{ 
	border:1px solid orange;
}
<?php 

class Foo { 
	
	public $mydir = 'foxfoxfox/';
 
	public function inverse(){ 
			 	
		$arr = [];
			 
		$output = scandir($this->mydir);
			 
		for($i=0;$i<count($output);$i++){
				
			if($output[$i]=='.' || $output[$i]=='..'){ 
				null;
			}else{ 
				$arr[$output[$i]] = filemtime($this->mydir.$output[$i]); 
			}
				
		}
			  
		return $arr; 
			
	}	
		
}

$bar = new Foo();
$xua = $bar->inverse();

?>
<form method="get" action=""> 
	<select name="newest_latest">
		<option value="newest">newest</option>
		<option value="latest">latest</option>
	</select>
	<input type="submit"/>
</form>
<?php

$newest_latest = $_GET['newest_latest'] ?? 'newest';

if($newest_latest==='latest'){ 
	asort($xua);
}else{ 
	arsort($xua);
}
 
?>
<table>
 
<?php

$iterator=0;
$cl = 0;

foreach($xua as $key_arr => $value_arr){
	 
	if($iterator%5==0) {
		$new_tag_op = '<tr>';
		$new_tag_cl =  null;
	}else{ 
		$new_tag_op = null;
	  	$cl++;
	}
	 
	if($cl==4){ 
		$new_tag_cl = '</tr>';
		$cl=0;
	}
	 
	$iterator++;
	 
 	echo "{$new_tag_op} <td><img src=\"{$bar->mydir}/{$key_arr}\"/></td>";
	 
	$dateTime_x = date('F d Y H:i:s',$value_arr);
	 
	echo "<td>{$dateTime_x}</td>{$new_tag_cl}";
	
}

?>
</table>

Wklej ten kod do swojego edytora w takiej kolejności w jakiej podałem.

komentarz 1 czerwca 2018 przez BlvckFox Gaduła (4,240 p.)

Jak naprawić problem z:

Warning: filemtime(): stat failed for xxx.jpg

komentarz 1 czerwca 2018 przez event15 Szeryf (93,790 p.)

@Chess, nie dość że dajesz bezrefleksyjnie gotowca, to jeszcze zamiast foreacha stosujesz fora? ;) I w nim nulla zamiast continue na przyklad? ;) Do tego nie stosujesz się do ogólnie przyjętych standardów PSR?

Dużo lepiej byłoby gdyby autor pytania sam by napisał kod, który jest błędny i ktoś mógłby mu pomóc poprawić go, niż dawać kulawego gotowca do bezrefleksyjnego przeklepania.

komentarz 1 czerwca 2018 przez BlvckFox Gaduła (4,240 p.)
Więc jak najlepiej się za to wziąć?
komentarz 1 czerwca 2018 przez Chess Szeryf (76,710 p.)
edycja 1 czerwca 2018 przez Chess

@BlvckFox, przepraszam za wrzucenie błędnego kodu, już poprawiłem (edytowałem). Błąd polegał na tej linii: 

$arr[$output[$i]] = filemtime($this->mydir.$output[$i]);

Napisałem wtedy tak:

$arr[$output[$i]] = filemtime($output[$i]);

Co było błędem, ponieważ nie podałem katalogu, w którym znajdowały się pliki.

@event15, chciałem użyć pętli for to użyłem for, w czym problem? Wspomniałeś coś, że w kodzie napisałem null, czy nie chodziło ci czasem o tę linię: 

if($output[$i]=='.' || $output[$i]=='..'){ 
     null;
} // ...

?

Zamiast tego null miało być continue? Jeśli tak, to czy mógłbyś wytłumaczyć dlaczego?

Do tego nie stosujesz się do ogólnie przyjętych standardów PSR?

Czy mógłbyś uściślić? Dzięki za przypomnienie o tym PSR może poczytam.

Co do ostatniego akapitu, to już zedytowałem odpowiedź.

Podobne pytania

0 głosów
0 odpowiedzi 133 wizyt
pytanie zadane 28 października 2018 w PHP przez Ignobiles Obywatel (1,800 p.)
0 głosów
1 odpowiedź 397 wizyt
pytanie zadane 28 września 2018 w SQL, bazy danych przez groochu Początkujący (370 p.)
0 głosów
0 odpowiedzi 127 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...