Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Generowanie ciągów
Forum PHP.pl > Forum > Przedszkole
dark_root
Witam, tworze na swojej stronie upload. Chciałbym, żeby kolejne plikom nazwy były zmieniane w taki sposób
plik 9-009
plik 10-00A
plik 11-00B
i tak cały alfabet a dopiero potem 010.
Mam taki kod do generowania znaków
  1. <?
  2. function ciag()
  3. {
  4.   $znaki = "abcdefghijklmnoprstuqwyz";
  5.   $cyfry = "1234567890";
  6.   $haslo = '';
  7.   for ( $i = 0; $i <= 3; $i++ )
  8.   {
  9.      $los2 = rand(0, strlen($cyfry) - 1);
  10.      $haslo .= $cyfry{$los2};
  11.   }
  12.   for ( $i = 0; $i <= 3; $i++ )
  13.   {
  14.      $los = rand(0, strlen($znaki) - 1);
  15.      $haslo .= $znaki{$los};
  16.   }  
  17.   return $haslo;
  18. }
  19. echo ciag();
  20. ?>

Jednak tworzy on ciągi w losowy sposób jak go przekształcić, żeby nazwy plików tworzyły się w ściśle określonej kolejności, którą przedstawiłem na początku?
YaQzi
ja bym proponował po prostu trzymać gdzieś liczbę zapisanych już plików i na jej podstawie generować sobie nazwę kolejnego
  1. <?php
  2. // liczba zapisanych plików
  3. $lplikow = 6589+1;
  4. // tablica licznika
  5. $licznik = Array(0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','R','S','T','U','Q','W','Y','Z');
  6. //wygenerowanie nazwy
  7. $wliczniku = count($licznik);
  8. while($lplikow > 0){
  9.    if($lplikow >= $wliczniku){
  10.        $cyfra = $lplikow%$wliczniku;
  11.        $wynik[] = $licznik[$cyfra];
  12.        $lplikow = $lplikow-$cyfra;
  13.        $lplikow = $lplikow/$wliczniku;
  14.    }
  15.    else{
  16.        $cyfra = $lplikow;
  17.        $wynik[] = $licznik[$cyfra];
  18.        $lplikow = -1;
  19.    }
  20. }
  21. $nazwa = '';
  22. foreach($wynik as $znak){
  23.    $nazwa = "$znak$nazwa";
  24. }
  25. // wyświetlenie nazwy
  26. echo $nazwa;
  27. ?>
Pilsener
  1. <?php
  2. Array(0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E...');
  3. ?>
- pisać 123, jak to wygląda? Lepiej już pętle, a w ogóle to jest od tego funkcja RANGE.

Cytat
Witam, tworze na swojej stronie upload. Chciałbym, żeby kolejne plikom nazwy były zmieniane w taki sposób
plik 9-009
plik 10-00A
plik 11-00B
i tak cały alfabet a dopiero potem 010.
- no dobrze, ale jaki cel tego? Utrudnianie sobie życia? Dlaczego po prostu nie możesz nadawać plikom kolejnego numeru od 1 do nieskończoności? Rozumiem, że chcesz jakoś identyfikować te pliki - np. te na A to cracki, a B to seriale - ale od tego masz bazę danych, a nawet plik, gdzie możesz trzymać i łatwo modyfikować takie informacje:

NR pliku||Nazwa||Typ||Kategoria||Opis||Parametry etc.
1||krak do abc||exe||2||testowy opis||0
2||serial do abc||txt||1||testowy opis||5
3||focia babci||bmp||8||testowy opis||2

A jak potem będziesz wyszukiwał te pliki etc.? Nie wynajduj koła na nowo.
dark_root
No ale funkcja range odpada, gdyż nie mają to być losowe znaki z tablicy, lecz kolejne, układające się w ścisłej kolejności. Baza danych jednak tutaj nie rozwiązuje mojego problemu. Chce żeby generowały się ciągi znaków, za pomocą php.
erix
Cytat
Baza danych jednak tutaj nie rozwiązuje mojego problemu.

Niby czemu? Przecież wtedy masz najmniejszy problem pobrać największą zapisaną wartość, a dodać do niej 1, to już najmniejszy problem.
dark_root
Ponieważ zadanie, które mam zrobić każe wykonac to za pomocą samego kodu php.
erix
To możesz przecież zrobić płaską bazę danych tak, jak to ~Pilsener opisał
dark_root
Nie kapuje tego do końca. Ja chciałem to zrobić na zasadzie if, że jeśli $a=1 to zamienia się w 2 po liczbach leci alfabet i tak wszystkie znaki, aż dochodzi do Z. Wtedy $b zamienia się z 0 na 1 i tak dalej. Nie można tego zrobić poprzez funkcję if?
erix
Ale jak chcesz odczytać ostatnio zapisaną wartość? Musisz gdzieś przechowywać liczbę/literę, którą zwiększysz o jeden przy każdym uploadzie.

Innymi słowy, musisz gdzieś zapisać to $a, aby był dostępny między wykonaniami skryptu. Ostatecznie, możesz zapisać jego wartość do jakiegoś pliku i za każdym uploadem ją odczytywać.

Cytat
poprzez funkcję if?

if" title="Zobacz w manualu PHP" target="_manual, to nie jest funkcja. winksmiley.jpg
dark_root
No ja myślałem o zapętleniu tego w do{odpowiedni kod}while($a==Z && $b==Z) gdzie Z to ostatni możliwy znak, ale jeszcze tego nie skończyłem.
erix
Tu nie chodzi o zapętlanie, tylko odpowiedni zapis ostatniej wartości zmiennej...
dark_root
tzn. można prosić o jakiś przykład?
erix
Już wystarczająco to wytłumaczyłem, abyś sam to napisał.
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.