Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Generowanie ciągów
dark_root
post
Post #1





Grupa: Zarejestrowani
Postów: 341
Pomógł: 1
Dołączył: 19.11.2007

Ostrzeżenie: (10%)
X----


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?
Go to the top of the page
+Quote Post
YaQzi
post
Post #2





Grupa: Zarejestrowani
Postów: 94
Pomógł: 31
Dołączył: 12.10.2008
Skąd: WAT

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


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. ?>
Go to the top of the page
+Quote Post
Pilsener
post
Post #3





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


  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.
Go to the top of the page
+Quote Post
dark_root
post
Post #4





Grupa: Zarejestrowani
Postów: 341
Pomógł: 1
Dołączył: 19.11.2007

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
erix
post
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.
Go to the top of the page
+Quote Post
dark_root
post
Post #6





Grupa: Zarejestrowani
Postów: 341
Pomógł: 1
Dołączył: 19.11.2007

Ostrzeżenie: (10%)
X----


Ponieważ zadanie, które mam zrobić każe wykonac to za pomocą samego kodu php.
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




To możesz przecież zrobić płaską bazę danych tak, jak to ~Pilsener opisał
Go to the top of the page
+Quote Post
dark_root
post
Post #8





Grupa: Zarejestrowani
Postów: 341
Pomógł: 1
Dołączył: 19.11.2007

Ostrzeżenie: (10%)
X----


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?
Go to the top of the page
+Quote Post
erix
post
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
dark_root
post
Post #10





Grupa: Zarejestrowani
Postów: 341
Pomógł: 1
Dołączył: 19.11.2007

Ostrzeżenie: (10%)
X----


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.

Ten post edytował dark_root 25.01.2009, 20:06:59
Go to the top of the page
+Quote Post
erix
post
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Tu nie chodzi o zapętlanie, tylko odpowiedni zapis ostatniej wartości zmiennej...
Go to the top of the page
+Quote Post
dark_root
post
Post #12





Grupa: Zarejestrowani
Postów: 341
Pomógł: 1
Dołączył: 19.11.2007

Ostrzeżenie: (10%)
X----


tzn. można prosić o jakiś przykład?
Go to the top of the page
+Quote Post
erix
post
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Już wystarczająco to wytłumaczyłem, abyś sam to napisał.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 14:21