Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Sortowanie w petli
todziu
post 5.03.2021, 12:56:51
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 16.08.2006

Ostrzeżenie: (0%)
-----


Witam - pobrałem sobie z dobrodziejstw internetu skrypt Galeria Zdjęć :
https://www.aurainweb.pl/2019/10/jak-automa...a-w-php-jquery/

mam problem przy wyświetlaniu zdjęć w pętli foreach, obecnie zdjęcia wyświetlane są losowo, a chciałbym chronologicznie.
Zdjęcia w katalogu ./images mam ponumerowane 1.jpg, 2.jpg itd

kod PHP:
  1.  
  2. <?php
  3.  
  4. $dirname = "images/";
  5.  
  6. $images = glob("$dirname*.{png,jpeg,jpg,JPG,gif}", GLOB_BRACE);
  7.  
  8.  
  9. foreach($images as $image) {
  10. ?>
  11.  
  12. <a class="example-image-link gallery-item" href="<?php echo $image; ?>" data-lightbox="example-set" data-title="">
  13. <img class="example-image img-responsive" src="<?php echo $image; ?>" />
  14. </a>
  15. <?php
  16. }


pomożecie ?
Go to the top of the page
+Quote Post
dublinka
post 5.03.2021, 16:57:00
Post #2





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

Ostrzeżenie: (0%)
-----


  1. <?php
  2.  
  3. $ca = dir('images');
  4. $tab = array();
  5.  
  6. while((false!==($pl=$ca->read())))
  7. {
  8. if($pl!="."&&$pl!="..")
  9. {
  10. if(substr($pl,-strlen('.jpg'))=='.jpg')
  11. {
  12. $tab[] = $pl;
  13.  
  14. };
  15. };
  16. };
  17.  
  18. sort($tab);
  19.  
  20. foreach($tab as $img)
  21. {
  22. print $img;
  23. }
  24.  
  25. ?>


--------------------
Go to the top of the page
+Quote Post
LowiczakPL
post 5.03.2021, 17:48:43
Post #3





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


glob zwraca Ci nazwy plików posortowane alfabetycznie, ale masz je pogrupowane według rozszerzenia

aby to zmienić dodaj asort przed foreach

  1. asort($images);
  2.  
  3. foreach($images as $image) {


Ten post edytował LowiczakPL 5.03.2021, 17:50:19


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
dublinka
post 5.03.2021, 19:18:29
Post #4





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

Ostrzeżenie: (0%)
-----


Zapomnialem dodac filtrów smile.gif

  1. <?php
  2.  
  3. $ca = dir('images');
  4. $tab = array();
  5. $type = array('gif', 'png', 'jpg', 'jpeg');
  6. while((false!==($pl=$ca->read())))
  7. {
  8. if($pl!="."&&$pl!="..")
  9. {
  10.  
  11. $tab[] = $pl;
  12.  
  13.  
  14. };
  15. };
  16.  
  17. sort($tab);
  18.  
  19. foreach($tab as $img)
  20. {
  21.  
  22. $name = explode('.', $img);
  23. if(in_array($name[1], $type))
  24. {
  25. print $img;
  26. }
  27.  
  28. }
  29.  
  30. ?>


--------------------
Go to the top of the page
+Quote Post
LowiczakPL
post 6.03.2021, 09:40:49
Post #5





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


W jakim celu tak kombinować do bazowego kodu tylko 1 funkcja asort i to wszystko

1. pobrać pliki
2. posortować
3. wyświetlić

  1. <?php
  2. $images = glob("images/*.{png,jpeg,jpg,JPG,gif}", GLOB_BRACE);
  3. asort($images);
  4.  
  5. foreach ($images as $image) {
  6. echo '<a class="example-image-link gallery-item" href="' . $image . '" data-lightbox="example-set" data-title="">;
  7. echo '<img class="example-image img-responsive" src="' . $image . '" /></a>';
  8. }


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
todziu
post 8.03.2021, 11:01:39
Post #6





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 16.08.2006

Ostrzeżenie: (0%)
-----


niestety nie działa sortowanie, zdjęcia wyświetlane są w 3 kolumnach ale dalej nie są sortowane chronologicznie sad.gif
Go to the top of the page
+Quote Post
trueblue
post 8.03.2021, 11:52:44
Post #7





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Spróbuj użyć https://www.php.net/manual/en/function.natsort.php


--------------------
Go to the top of the page
+Quote Post
LowiczakPL
post 8.03.2021, 12:42:44
Post #8





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


nie dopatrzyłem się dałem alfabetyczne sortowanie a Ty chiałes chronologiczne, więc zamiast asort daj

  1. usort($images, function($a, $b) {return filemtime($b) - filemtime($a);});


a będzie sortowało według daty

Co nie oznacza to że pliki o identycznej dacie i czasie nie będą losowe

Ten post edytował LowiczakPL 8.03.2021, 12:47:44


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
dublinka
post 8.03.2021, 17:12:49
Post #9





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

Ostrzeżenie: (0%)
-----


Cytat(todziu @ 8.03.2021, 10:01:39 ) *
niestety nie działa sortowanie, zdjęcia wyświetlane są w 3 kolumnach ale dalej nie są sortowane chronologicznie sad.gif

Tu masz

https://www.w3schools.com/php/php_arrays_sort.asp


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 20:49