Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]otwieranie plików txt w pętli
tofik1778983
post 1.06.2010, 18:54:17
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 1
Dołączył: 22.11.2007
Skąd: lbn

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


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ą ;/)

Ten post edytował tofik1778983 1.06.2010, 18:55:56


--------------------
Go to the top of the page
+Quote Post
tehaha
post 1.06.2010, 18:56:45
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


użyj http://php.net/manual/en/function.natsort.php zamiast sort()
Go to the top of the page
+Quote Post
tofik1778983
post 1.06.2010, 19:10:05
Post #3





Grupa: Zarejestrowani
Postów: 144
Pomógł: 1
Dołączył: 22.11.2007
Skąd: lbn

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


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..


--------------------
Go to the top of the page
+Quote Post
tehaha
post 1.06.2010, 19:18:34
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


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. ?>
Go to the top of the page
+Quote Post
tofik1778983
post 1.06.2010, 19:20:25
Post #5





Grupa: Zarejestrowani
Postów: 144
Pomógł: 1
Dołączył: 22.11.2007
Skąd: lbn

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


  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..

Ten post edytował tofik1778983 1.06.2010, 19:22:30


--------------------
Go to the top of the page
+Quote Post
tehaha
post 1.06.2010, 19:23:06
Post #6





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


no to działa jak należy, jak wrzucisz pliki bez zera na początku i użyjesz natsort() to zostaną odpowiednio posegregowane
Go to the top of the page
+Quote Post
tofik1778983
post 1.06.2010, 19:30:20
Post #7





Grupa: Zarejestrowani
Postów: 144
Pomógł: 1
Dołączył: 22.11.2007
Skąd: lbn

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


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...


--------------------
Go to the top of the page
+Quote Post
tehaha
post 1.06.2010, 19:53:50
Post #8





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


no bo wyświetlasz po kluczach użyj foreach():
  1. foreach($tablica as $value)
  2. {
  3. echo $value;
  4. }


Ten post edytował tehaha 1.06.2010, 19:54:26
Go to the top of the page
+Quote Post
tofik1778983
post 1.06.2010, 20:08:39
Post #9





Grupa: Zarejestrowani
Postów: 144
Pomógł: 1
Dołączył: 22.11.2007
Skąd: lbn

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


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;/


--------------------
Go to the top of the page
+Quote Post
tehaha
post 1.06.2010, 20:32:44
Post #10





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


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
Go to the top of the page
+Quote Post
zegarek84
post 1.06.2010, 20:44:08
Post #11





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


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...


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
tofik1778983
post 1.06.2010, 21:22:39
Post #12





Grupa: Zarejestrowani
Postów: 144
Pomógł: 1
Dołączył: 22.11.2007
Skąd: lbn

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


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.

Ten post edytował tofik1778983 1.06.2010, 21:23:23


--------------------
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: 12.06.2025 - 19:31