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

PHP data modyfikacji pliku?

0 głosów
65 wizyt
pytanie zadane 1 czerwca 2018 w PHP, Symfony, Zend przez BlvckFox Gaduła (3,420 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 (94,730 p.)
komentarz 1 czerwca 2018 przez BlvckFox Gaduła (3,420 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 Maniak (68,070 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 (3,420 p.)

Jak naprawić problem z:

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

komentarz 1 czerwca 2018 przez event15 Szeryf (94,730 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 (3,420 p.)
Więc jak najlepiej się za to wziąć?
komentarz 1 czerwca 2018 przez Chess Maniak (68,070 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 48 wizyt
pytanie zadane 28 października 2018 w PHP, Symfony, Zend przez Ignobiles Obywatel (1,800 p.)
0 głosów
2 odpowiedzi 87 wizyt
pytanie zadane 14 stycznia 2018 w PHP, Symfony, Zend przez rembik Nowicjusz (180 p.)
0 głosów
1 odpowiedź 96 wizyt
Porady nie od parady
Komentarze do pytań nie służą do odpowiadania, od tego jest wydzielona sekcja odpowiedzi. Funkcją komentarzy jest natomiast możliwość uzyskania dodatkowych informacji na temat samego posta.Komentarze

64,898 zapytań

111,368 odpowiedzi

234,330 komentarzy

46,744 pasjonatów

Przeglądających: 212
Pasjonatów: 12 Gości: 200

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...