Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sort()
Forum PHP.pl > Forum > Przedszkole
Polkier
Mam mały skrypt wyświetlający prostą galerię zdjęć, po przesiadce na PHP 5 miniaturki, które wcześniej sortowały mi się samoczynnie względem nazwy wpadły w chaos.
Zastosowałem funkcję sort() , czyli sortowanie tabeli i owszem sortuje ale nie wyświetla mi zawsze jednej fotki, która w dodatku jest pusta (chociaż istnieje) nie wiem co zrobić. Podgląd problemu Turcja 2008 trzeba zjechać na sam dół ostatnia miniaturka
nospor
masz blad w lini 46 swojego skryptu. zeby go rozwiązac musisz dopisac w linii 95 nastepujacy kod:
  1. <?php
  2. echo 'Pokaz kod!!!! Wrozek nie ma';
  3. ?>
Polkier
No dobrze oto mój kod:

Kod
<?
$nr = $_GET['nr'];

$katalog = opendir ('zdjecia/miniaturki');
$i=1;
while ($plik = readdir ($katalog))   {
         if  (ereg (".gif$|.jpg$", $plik)) {  $zdjecia[$i++] = $plik;  }
}
closedir ($katalog);
sort($zdjecia);
if (($nr>0) && ($nr<=count($zdjecia))) {
print "<p align=center>";
if ($nr>1) {
print '<a href="index.php?nr='.($nr-1);
print '"><img SRC="http://www.kieres.pl/pliki/poprzednie.gif" alt="Poprzednie" title="Poprzednie"></a>&nbsp;&nbsp;&nbsp';
}
print '<a href="."><img SRC="http://www.kieres.pl/pliki/galeria.gif" alt="Powrót do galerii" title="Powrót do galerii"></a>&nbsp;&nbsp;&nbsp;';
if ($nr<count($zdjecia)) {
print '<a href="index.php?nr='.($nr+1).'"><img SRC="http://www.kieres.pl/pliki/nastepne.gif" alt="Następne" title="Następne"></a>';
}
print "</p><p align=center>";
$nazwapliku = 'zdjecia/duze/'.$zdjecia[$nr];
if (file_exists ($nazwapliku)) {
$rozmiar = getimagesize ($nazwapliku);
print '<img src='.$nazwapliku.' '.$rozmiar[3];
print '></p>';
} else {
print "Brak dużej wersji grafiki";
}
} elseif (count ($zdjecia)>0)  {    //musi byc conajmiej jedna grafa
print "<p align=center>";
for ($i=1; $i<=count ($zdjecia); $i++) {
$nazwapliku = 'zdjecia/miniaturki/'.$zdjecia[$i];
$rozmiar = getimagesize ($nazwapliku);
print "<a href=\"index.php?nr=$i\">";
print "<img src=\"$nazwapliku\" ".$rozmiar[3];
print "border=0 hspace=10 vspace=10 alt=fotka></a>";
}
print "</p>";
} else { //w katalogu nie ma zdjec
print "
<big><center><b>Katalog jest pusty!</b></center></big>";
}
nospor
sort() przeindexowuje ci indexy. teraz zaczynają sie od 0 a nie od 1
Polkier
To jak to zmienić sciana.gif
nospor
nie
  1. <?php
  2. for ($i=1; $i<=count ($zdjecia); $i++) {
  3. ?>

a:
  1. <?php
  2. for ($i=0; $i<count ($zdjecia); $i++) {
  3. ?>


Troche wlasnego pomyslunku by niezaszkodzilo.
Miej tez na uwadze by numer sprawdzac o jeden mniejszy
Polkier
Pomyślunek może kiedyś będzie ale jest to mój całkiem początkowy początek i nawet nie raczkuję a dopiero zaczynam się turlać. Zmieniłem jak mówiłeś, ale dalej na końcu coś wyświetla a pierwszej fotki nie wywołuje

Wiem wiem ale działu żłobek nie ma na tym forum
nospor
Pokaz kod po zmianach.
W kodzie po sort() daj print_r($zdjecia) i pokaz co ci to wyswietli.

Daj kod tym razem we wlasciwym bbcode czyli [php]
Polkier
Kod po zmianie (wyświetla numery zdjęć):
Kod
<?
$nr = $_GET['nr'];

$katalog = opendir ('zdjecia/miniaturki');
$i=1;
while ($plik = readdir ($katalog))   {
        if  (ereg (".gif$|.jpg$", $plik)) {  $zdjecia[$i++] = $plik;  }
}
closedir ($katalog);
sort($zdjecia);
print_r($zdjecia);
if (($nr>0) && ($nr<=count($zdjecia))) {
print "<p align=center>";
if ($nr>1) {
print '<a href="index.php?nr='.($nr-1);
print '"><img SRC="http://www.kieres.pl/pliki/poprzednie.gif" alt="Poprzednie" title="Poprzednie"></a>&nbsp;&nbsp;&nbsp';
}
print '<a href="."><img SRC="http://www.kieres.pl/pliki/galeria.gif" alt="Powrót do galerii" title="Powrót do galerii"></a>&nbsp;&nbsp;&nbsp;';
if ($nr<count($zdjecia)) {
print '<a href="index.php?nr='.($nr+1).'"><img SRC="http://www.kieres.pl/pliki/nastepne.gif" alt="Następne" title="Następne"></a>';
}
print "</p><p align=center>";
$nazwapliku = 'zdjecia/duze/'.$zdjecia[$nr];
if (file_exists ($nazwapliku)) {
$rozmiar = getimagesize ($nazwapliku);
print '<img src='.$nazwapliku.' '.$rozmiar[3];
print '></p>';
} else {
print "Brak dużej wersji grafiki";
}
} elseif (count ($zdjecia)>0)  {    //musi byc conajmiej jedna grafa
print "<p align=center>";
for ($i=0; $i<=count ($zdjecia); $i++) {
$nazwapliku = 'zdjecia/miniaturki/'.$zdjecia[$i];
$rozmiar = getimagesize ($nazwapliku);
print "<a href=\"index.php?nr=$i\">";
print "<img src=\"$nazwapliku\" ".$rozmiar[3];
print "border=0 hspace=10 vspace=10 alt=fotka></a>";
}
print "</p>";
} else { //w katalogu nie ma zdjec
print "<br><big><center><b>Katalog jest pusty!</b></center></big>";
}
?>
kallosz
daj to w tagu PHP
nospor
1) prosilem grzecznie bys uzyl poprawnego bbcode
2) podalem ci kod na jaki masz zmienic - 1 LINIJKA i to nawet nie umiesz skopiowac. Przeanalizuj jeszcze raz co ci napisalem i wyslij mi na PW poprawny kod z poprawnym bbcode.
szanuj nasz czas

mowisz, ze dopiero raczkujesz. ok. ale jak mowie: zrob "a" to chyba potrafisz zrobic "a" a nie "b" ?

edit: po dostoswaniu sie do tego oco prosilem - otwieram smile.gif
Polkier
To jeszcze raz, tutaj kod po poprawie:
  1. <?
  2. $nr = $_GET['nr'];
  3.  
  4. $katalog = opendir ('zdjecia/miniaturki');
  5. $i=1;
  6. while ($plik = readdir ($katalog))   {
  7.        if  (ereg (".gif$|.jpg$", $plik)) {  $zdjecia[$i++] = $plik;  }
  8. }
  9. closedir ($katalog);
  10. sort($zdjecia);
  11. print_r($zdjecia);
  12. if (($nr>0) && ($nr<=count($zdjecia))) {
  13. print "<p align=center>";
  14. if ($nr>1) {
  15. print '<a href="index.php?nr='.($nr-1);
  16. print '"><img SRC="h://www.kieres.pl/pliki/poprzednie.gif" alt="Poprzednie" title="Poprzednie"></a>&nbsp;&nbsp;&nbsp';
  17. }
  18. print '<a href="."><img SRC="h://www.kieres.pl/pliki/galeria.gif" alt="Powrót do galerii" title="Powrót do galerii"></a>&nbsp;&nbsp;&nbsp;';
  19. if ($nr<count($zdjecia)) {
  20. print '<a href="index.php?nr='.($nr+1).'"><img SRC="h://www.kieres.pl/pliki/nastepne.gif" alt="Następne" title="Następne"></a>';
  21. }
  22. print "</p><p align=center>";
  23. $nazwapliku = 'zdjecia/duze/'.$zdjecia[$nr];
  24. if (file_exists ($nazwapliku)) {
  25. $rozmiar = getimagesize ($nazwapliku);
  26. print '<img src='.$nazwapliku.' '.$rozmiar[3];
  27. print '></p>';
  28. } else {
  29. print "Brak dużej wersji grafiki";
  30. }
  31. } elseif (count ($zdjecia)>0)  {    //musi byc conajmiej jedna grafa
  32. print "<p align=center>";
  33. for ($i=0; $i<count ($zdjecia); $i++) {
  34. $nazwapliku = 'zdjecia/miniaturki/'.$zdjecia[$i];
  35. $rozmiar = getimagesize ($nazwapliku);
  36. print "<a href=\"index.php?nr=$i\">";
  37. print "<img src=\"$nazwapliku\" ".$rozmiar[3];
  38. print "border=0 hspace=10 vspace=10 alt=fotka></a>";
  39. }
  40. print "</p>";
  41. } else { //w katalogu nie ma zdjec
  42. print "<br><big><center><b>Katalog jest pusty!</b></center></big>";
  43. }
  44. ?>


a tutaj kawałek widoku po wstawieniu print_r:
Kod
Array  (      [0] => turcja_08_001.jpg      [1] => turcja_08_002.jpg      [2] => turcja_08_003.jpg      [3] => turcja_08_004.jpg      [4] => turcja_08_005.jpg      [5] => turcja_08_006.jpg      [6] => turcja_08_007.jpg      [7] => turcja_08_008.jpg      [8] => turcja_08_009.jpg      [9] => turcja_08_010.jpg      [10] => turcja_08_011.jpg      [11] => turcja_08_012.jpg      [12] => turcja_08_013.jpg      [13] => turcja_08_014.jpg      [14] => turcja_08_015.jpg      [15] => turcja_08_016.jpg ... itd


Działa już sortowanie, został tylko problem z numerowaniem, wszystkie zdjęcia wyświetlają się po kliknięciu miniaturki oprócz pierwszego.

Po właściwym ustawieniu numerowania wszystko już działa poprawnie, bardzo dziękuję za pomoć temat chyba zamknięty.
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.