• 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
66 wizyt
pytanie zadane 1 czerwca 2018 w PHP, Symfony, Zend przez BlvckFox Gaduła (3,780 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,690 p.)
komentarz 1 czerwca 2018 przez BlvckFox Gaduła (3,780 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 (72,430 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,780 p.)

Jak naprawić problem z:

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

komentarz 1 czerwca 2018 przez event15 Szeryf (94,690 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,780 p.)
Więc jak najlepiej się za to wziąć?
komentarz 1 czerwca 2018 przez Chess Maniak (72,430 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 49 wizyt
pytanie zadane 28 października 2018 w PHP, Symfony, Zend przez Ignobiles Obywatel (1,800 p.)
0 głosów
2 odpowiedzi 89 wizyt
pytanie zadane 14 stycznia 2018 w PHP, Symfony, Zend przez rembik Nowicjusz (180 p.)
0 głosów
1 odpowiedź 102 wizyt
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

67,186 zapytań

114,137 odpowiedzi

241,915 komentarzy

46,173 pasjonatów

Przeglądających: 334
Pasjonatów: 10 Gości: 324

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.

...