Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL][inne]AUTOMATIC IMAGE MONTAGE with jQuery
Forum PHP.pl > Forum > Przedszkole
adrianozo
Witam wszystkich smile.gif

Do pewnego projektu wplotłem pewną wtyczkę napisaną w jQuery ale mam pewien problem z tym: http://tympanus.net/Development/AutomaticI...age/index6.html

Chodzi o to, że jak klikam LOAD MORE... to niby wszystko jest ok ale powiela mi obrazki, a chciałbym żeby były wczytane raz czyli jeśli wczyta się już wszystko z bazy danych to np. zniknie napis LOAD MORE. Na ten moment jest tak, że po każdym kliknięciu LOAD MORE... wczytuje te same obrazki:

http://nportfolio.pl/Framework/galeria

Skrypt:

  1. <div class="am-container" id="am-container">
  2. {foreach from=$list item=foo}
  3. <a href="{$rootpatch}templates/zdjecia/mini/{$foo['minik']}" data-lightbox="roadtrip"><img src="{$rootpatch}templates/zdjecia/mini/{$foo['minik']}" alt="{$foo['nazwa']}" /></a>
  4. {/foreach}
  5. </div>
  6. <div id="loadmore" class="loadmore" style="width: 100%; display: block;">Wiecej...</div>
  7. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
  8. <script src="{$rootpatch}includes/js/jquery.montage.js"></script>
  9. <script type="text/javascript">
  10. $(function() {
  11. var $container = $('#am-container'),
  12. $imgs = $container.children('img').hide(),
  13. totalImgs = $imgs.length,
  14. cnt = 0;
  15.  
  16. var $container = $('#am-container'),
  17. $imgs = $container.find('img').hide(),
  18. totalImgs = $imgs.length,
  19. cnt = 0;
  20.  
  21. $imgs.each(function(i) {
  22. var $img = $(this);
  23. $('<img/>').load(function() {
  24. ++cnt;
  25. if( cnt === totalImgs ) {
  26. $imgs.show();
  27. $container.montage({
  28. fillLastRow : true,
  29. alternateHeight : true,
  30. alternateHeightRange : {
  31. min : 90,
  32. max : 240
  33. }
  34. });
  35. $('#overlay').fadeIn(500);
  36. $('#loadmore').show().bind('click', function() {
  37. newimgs = '';
  38. {foreach from=$lista item=foos}
  39. newimgs += '<a href="{$rootpatch}templates/zdjecia/mini/{$foos['minik']}" data-lightbox="roadtrip"><img src="{$rootpatch}templates/zdjecia/mini/{$foos['minik']}"/></a>';
  40. {/foreach}
  41.  
  42. var $newimages = $( newimgs );
  43. $newimages.imagesLoaded( function(){
  44. $container.append( $newimages ).montage( 'add', $newimages );
  45. });
  46. });
  47. }
  48. }).attr('src',$img.attr('src'));
  49. });
  50.  
  51. });
  52. </script>


  1. public function galeria() {
  2. $this->model->smarty->assign("siteTitle", "Galeria", true);
  3. $sql = new classMysql();
  4. $this->setTpl('Gallery');
  5. $id = $sql->selectAsoc("SELECT MIN(id) AS min, MAX(id) AS max FROM `framework_portfolio`");
  6. $rand1 = rand($id[0]['min'], $id[0]['max']);
  7. $rand2 = rand($id[0]['min'], $id[0]['max']);
  8. while($rand1==$rand2 or $rand1>=$rand2) {
  9. $rand2 = rand($id[0]['min'], $id[0]['max']);
  10. }
  11. $random = $rand2-$rand1;
  12. $wylicz = '';
  13. $ile = $random+$id[0]['min'];
  14. $min = $id[0]['min'];
  15. for($i=$min;$i<$ile;$i++)
  16. $wylicz = $wylicz.$i.",";
  17. $wylicz = substr($wylicz, 0, strlen($wylicz) - 1);
  18. $strona = $sql->selectAsoc("SELECT `id`, `nazwa`, `minik` FROM `framework_portfolio` ORDER BY `id` ASC LIMIT 0, $random");
  19. $this->model->smarty->assign("list", $strona, true);
  20. $stronica = $sql->selectAsoc("SELECT `nazwa`, `minik` FROM `framework_portfolio` WHERE `id` NOT IN($wylicz)");
  21. $this->model->smarty->assign("lista", $stronica, true);
  22. }


Jak mogę zrobić tak, żeby napis LOAD MORE.../WIĘCEJ... znikał jak wczytają się już wszystkie obrazki z bazy?

Z góry dziękuje za odpowiedź smile.gif
jacobson
Mozesz przy kazdym odpytaniu bazy sprawdzac liczbe wszystkich elementow galerii i ile jest juz pobranych i jak juz jest koniec to chowac albo np jak nie jest to jakas bardzo wazna informacja to zapisac wczesniej w jakims elemencie jako np atrybut title ilosc wszystkich obrazkow i porownywac ilosc pobranych elementow z ta wartoscia.
adrianozo
Jeśli chodzi o PHP to nie będzie z tym żadnego problemu natomiast jeśli chodzi o jQuery to zupełnie nie mam o tym pojęcia

Od strony PHP i SMARTY wszystko mam gotowe, ale dalej nie działa tak jakbym chciał.

Jest ktoś w stanie pomóc?

Wystarczyło dodać:

Kod
$(this).remove();


po

Kod
$('#loadmore').show().bind('click', function() {
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.