Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] wibieranie nazwy pliku
szczemp
post 25.05.2012, 07:48:28
Post #1





Grupa: Zarejestrowani
Postów: 149
Pomógł: 9
Dołączył: 9.12.2010

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


Piszę prosty system, ale w prostych systemach też pojawiają się ciekawe problemy.
Mianowicie system zapisuje do plików dane z formularza. Gdzieś w konfigu jest stała określająca max ilość plików - powiedzmy 5. Chcę, aby pliki miały nazwy 01, 02 .. ale nie więcej niż 05.
Aktualnie mam tak zrobione:
Metoda losuje liczbę z przedziału od 1 do max i sprawdzam czy plik z taką nazwą już istnieje. Jeśli istnieje istnieje to wywołuje siebie rekurencyjnie.
Teoretycznie metoda może wykonywać się w nieskończoność, bo za każdym wywołaniem wylosuje liczbę już zajętą.
Myślałem o czymś co zapamięta wylosowane ostatnio liczby i będzie losowało z pominięciem tych właśnie, ale jakoś mi się to nie podoba:))
Nie mogę też pobrać nazwy ostatnio utworzonego pliku albo największej liczby, bo pliki można kasować i np będą 01, 02, 03, 04, 05 i zostanie skasowany np 02. System pobierze najwyższy numer i powie, że już nie można utworzyć pliku, bo nie może mieć nazwy 06.
Macie jakiś pomysł na proste rozwiązanie, ale też takie, które nie zapętli mi skryptu?
Go to the top of the page
+Quote Post
d3ut3r
post 25.05.2012, 08:12:46
Post #2





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


można w ten sposób:

  1. $max=5;
  2. $ext='txt'; //rozszerzenie plików
  3. $path='test/'; //sciezka do plikow
  4.  
  5. $nazwa='';
  6.  
  7. for ($i=1;$i<=$max;$i++){
  8.  
  9. if (!file_exists($path.$i.'.'.$ext)){
  10. $nazwa=$i.'.'.$ext;
  11. break;
  12. }
  13. }
  14. if ($nazwa){
  15. echo $nazwa;
  16. } else{
  17. echo "brak wolnych plików!";
  18. }


Ten post edytował d3ut3r 25.05.2012, 08:13:13


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
szczemp
post 25.05.2012, 08:16:30
Post #3





Grupa: Zarejestrowani
Postów: 149
Pomógł: 9
Dołączył: 9.12.2010

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


Miałem już takie rozwiązanie, ale zrezygnowałem z niego, bo dobre dla niewielu plików - 5 podałem tylko dla przykładu.
Go to the top of the page
+Quote Post
rocktech.pl
post 25.05.2012, 08:28:50
Post #4





Grupa: Zarejestrowani
Postów: 587
Pomógł: 131
Dołączył: 8.02.2010

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


Witam.

Spróbuj tak.

  1. $max = 5;
  2.  
  3. $ext = 'txt'; //rozszerzenie plików
  4.  
  5. $path = 'test/'; //sciezka do plikow
  6.  
  7. $files = glob ( "$path/*.$ext" );
  8.  
  9. $nazwa = false;
  10.  
  11. for ( $i = 1; $i <= $max; $i++ ) {
  12.  
  13. if ( !in_array ( $i . '.' . $ext, $files ) ) {
  14.  
  15. $nazwa = $i . '.' . $ext;
  16.  
  17. break;
  18. }
  19. }
  20.  
  21. if ( $nazwa ) {
  22. echo $nazwa;
  23. } else {
  24. echo "brak wolnych plików!";
  25. }


Ten post edytował rocktech.pl 25.05.2012, 08:34:06


--------------------
Despite the tons of examples and docs, mod_rewrite is voodoo. Damned cool voodoo, but still voodoo. --Brian Moore

I never go looking for a sucker. I look for a Champion and make a sucker of of him. --Amarillo Slim


Home-made : js-gui-classes | Accordion | Tabs | Carousel / php-sms-classes | Obsługa bramki SMS MultiInfo | Obsługa bramki SMS Mobiltek
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: 19.07.2025 - 09:06