Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]otwieranie plików txt w pętli
Forum PHP.pl > Forum > Przedszkole
tofik1778983
Witam
Mam w folderze 'pliki' trochę plików tekstowych ich nazwy kolejno 01,02,03...10,11,12...
Obecnie działam na lokalnym serwerze apache (xampp) nie na jakimś zewnętrznym ftp.
Problem jest taki
gdy daje w pętli otwieranie kolejnych plikow jest instrukcja
  1. if($_POST['odp_'.$i.'']=='' ) continue;

ma ona ominąć niezaznaczone radiobuttony, ale omija mi też pliki których nazwy zaczynają się zerem czyli 9 pierwszych...
Gdy zmieniam nazwy plików na 1,2,3,4,5,6,7,8,9 bez zera na początku, pętla otwiera mi pliki nie po kolei
leci sobie tak: 1,10,11,12...19,2,20,21... trochę mi to nie na rękę bo psuje cel istnienia skryptu ;]

jak potrzebuje plik o nr 4 to dostaje plik 14 .. potrzebuje plik 39, dostaję 45..
próbowałem też
  1. sort($tablica_z_plikami);

ale dalej to samo jest.. może tylko na lokalu tak jest na serwerze będzie ok.. proszę o radę. (na razie nie mogę wrzucić na mój ftp bo jakieś prace konserwacyjne akurat mają ;/)
tehaha
użyj http://php.net/manual/en/function.natsort.php zamiast sort()
tofik1778983
Próbowałem już, efekt jest taki sam jak z sort.. nie czaje.
Ale kiedyś miałem podobny problem i wiem ze na lokalu było źle posortowane a na serwerze już dobrze.. może teraz też tak jest..
tehaha
a odpal tylko to i napisz co wyświetla:
  1. <?php
  2. $array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png");
  3.  
  4. asort($array1);
  5. echo "Standard sorting\n";
  6. print_r($array1);
  7.  
  8. natsort($array2);
  9. echo "\nNatural order sorting\n";
  10. print_r($array2);
  11. ?>
tofik1778983
  1. Standard sorting Array ( [3] => img1.png [1] => img10.png [0] => img12.png [2] => img2.png ) Natural order sorting Array ( [3] => img1.png [2] => img2.png [1] => img10.png [0] => img12.png )

widzę ze tu działa wiec ja mam coś u siebie nie teges..
tehaha
no to działa jak należy, jak wrzucisz pliki bez zera na początku i użyjesz natsort() to zostaną odpowiednio posegregowane
tofik1778983
Widzę dzieki, tylko u mnie coś jest jeszcze nie tak zaraz coś sprawdzę i się odezwę ;]

tablice z plikami robie tak:
  1. $dir=opendir($folder);
  2. while($file = readdir($dir)){
  3. if ($file === '.' || $file === '..' || $file === 'tmp') continue;
  4. $tablica_z_plikami[] = $file;
  5. $ile_plikow++;
  6. }
  7. closedir($dir);

potem
  1. natsort($tablica_z_plikami);

i wyświetlam:
  1. for($i=0;$i<$ile_plikow;$i++)
  2. {
  3. print $tablica_z_plikami[$i].'<br>';
  4. }


efekt:

Cytat
1.txt
10.txt
11.txt
12.txt
13.txt
14.txt
15.txt
16.txt
17.txt
18.txt
19.txt
2.txt
20.txt
21.txt
22.txt
23.txt...
tehaha
no bo wyświetlasz po kluczach użyj foreach():
  1. foreach($tablica as $value)
  2. {
  3. echo $value;
  4. }
tofik1778983
A ie dało by się w pętli for?? bo teraz z foreach nie będzie mi działać reszta kodu ;/
Sporo tego pewnie na całą noc przerabiania;/
tehaha
a jaka to różnica? co chodzi o to, że używasz zmiennej $i? przecież możesz też zrobić:
  1. $i = 0;
  2. foreach($tablica as $value)
  3. {
  4. echo $value;
  5. ++$i;
  6. }

a jeżeli problem leży w tym że używasz potem $i jako klucza to możesz zrobić:
  1. foreach($tablica as $i=> $value)
  2. {
  3. echo $value;
  4. }

tutaj $i jest kluczem a $value wartością tablicy
zegarek84
Cytat(tofik1778983 @ 1.06.2010, 21:08:39 ) *
A ie dało by się w pętli for?? bo teraz z foreach nie będzie mi działać reszta kodu ;/
Sporo tego pewnie na całą noc przerabiania;/
mógłbym podać sposób na for gdzie to w sumie było by jak foreach ale pewnie i tak gdzieś będzie problem z pewnymi wartościami... jedyna rada jeśli tego kodu masz dużo to polecam kożystać z jakiegoś IDE - ja polecam NetBeans - to co teraz zapewne Ciebie interesuje to klikasz na zmienną i wciskasz crlt+r i zmieniasz nazwy zmiennych... widzisz ogólne błędy składni itd. - fakt - może deczko trzeba się przyzwyczaić ale plusów jest wiele...

sorki za oftopick ale całość widze bez sensu... a na to co masz możesz dać warunek np. w pętli for zaraz na początku:
if($i<10)$i='0'.$i; // będzie wtedy string np. 01... np. 02 itd....

i uprzedzam, że nie wszystkie posty czytałem...
tofik1778983
Dzięki. Już sobie poradziłem. Doszły małe korekty i ogólnie działa jak trzeba ;]
Jako edytora używam dreamweavera 8 także ma sporo przydatnych opcji.
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.