Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]Generator 6 znakow jakie jest prawdopodobienstwo powtozenia ?
andy84
post
Post #1





Grupa: Zarejestrowani
Postów: 165
Pomógł: 0
Dołączył: 14.11.2005
Skąd: London

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


czesc moze mi ktos powiedziec jakie moge miec prawdopodobienstwo powtorzenia w tym skrypcie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

generuje on 6znakowy kod za kazdym uruchomeiniem inny, ale czy moze sie np zdazyc ze w 100 wygenerowanych kodach beddzie powtorka ?


  1. <?
  2. $alphanum = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  3. $rand = substr(str_shuffle($alphanum), 0, 6); 
  4. echo "$rand";
  5. ?>
Go to the top of the page
+Quote Post
strife
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


To pytanie to raczej z matematyką jest związane, a nie z php, poczytaj sobie na temat prawdopodobieństwa. http://pl.wikipedia.org/wiki/Prawdopodobieństwo to będziesz znał odpowiedź na pytanie.

Cytat
generuje on 6znakowy kod za kazdym uruchomeiniem inny, ale czy moze sie np zdazyc ze w 100 wygenerowanych kodach beddzie powtorka ?


PS.
  1. <?php
  2. echo "$rand";
  3. ?>
- niepotrzebnie używasz ciapków ( " ).
Go to the top of the page
+Quote Post
andy84
post
Post #3





Grupa: Zarejestrowani
Postów: 165
Pomógł: 0
Dołączył: 14.11.2005
Skąd: London

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


Cytat(strife @ 26.06.2007, 21:17:02 ) *
To pytanie to raczej z matematyką jest związane, a nie z php, poczytaj sobie na temat prawdopodobieństwa. http://pl.wikipedia.org/wiki/Prawdopodobieństwo to będziesz znał odpowiedź na pytanie.
PS.
  1. <?php
  2. echo "$rand";
  3. ?>
- niepotrzebnie używasz ciapków ( " ).

@strife hehe nie nawidze prawdopodobienstwa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ale dzieki za linka (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
strife
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


Cytat(andy84 @ 26.06.2007, 22:21:11 ) *
@strife hehe nie nawidze prawdopodobienstwa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ale dzieki za linka (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


No ja też nie, ale jak trzeba to trzeba, ponieważ chcesz znać odpowiedź na pytanie:

Cytat
czesc moze mi ktos powiedziec jakie moge miec prawdopodobienstwo powtorzenia w tym skrypcie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)


Więc wiesz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Nie mniej jednak z własnego doświadczenia mogę Ci powiedzieć, że prawdopodobieństwo wygenerowania takiego samego kodu będzie dosyć niewielkie. Może lepiej napisz co to ma być, do czego chcesz tego użyć to podamy Ci inne może lepsze rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
andy84
post
Post #5





Grupa: Zarejestrowani
Postów: 165
Pomógł: 0
Dołączył: 14.11.2005
Skąd: London

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


@strife robie wlasnie system zamowien w ktorym beda kupony - tzn firma bedzie wysylala losowo wygenerowane kupony do 500 klientow miesiecznie, kazdy kupon musi byc inny i nie powtarzac sie 6 znakow alfa/num wielkosc liter nie ma znaczenia , mam juz formularz caly zrobiony z pelna rejestracja uzytkownika ktory podaje go itp: tabele w bazie ktora sprawdza mi czy sie kuponu nr nie bedzie powtarzal jesli bedzie raz uzyty to zostaje wylaczony, wiec tylko cos do dobrej generacji z mala bardzo mala iloscia powtorzen zostalo (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

qde sory jak za bardzo naplatalem ;/
Go to the top of the page
+Quote Post
strife
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


No teraz już lepiej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ja bym to rozwiązał w ten sposób tworzysz sobie tabele, w której masz jeden klucz unikalny (z ID kuponu), a druga wartość to powtórzenie przyjmujące wartość logiczną true/false w zależności czy ten kupon został już użyty.

A kupon możesz losować w bardzo prosty sposób korzystając z md5" title="Zobacz w manualu PHP" target="_manual.

  1. <?php
  2. $generate = strtoupper(md5(microtime()));
  3. $result  = substr($generate, 0, 6 );
  4. echo $result;
  5. ?>


W pętli oczywiście, i dodajesz kody do bazy. Jak sprawdzisz czy kody się rzeczywiście nie powtarzają? Pole unikalne w bazie. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ot cała filozofia.

Pozdrawiam.
Go to the top of the page
+Quote Post
andy84
post
Post #7





Grupa: Zarejestrowani
Postów: 165
Pomógł: 0
Dołączył: 14.11.2005
Skąd: London

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


Ja bym to rozwiązał w ten sposób tworzysz sobie tabele, w której masz jeden klucz unikalny (z ID kuponu), a druga wartość to powtórzenie przyjmujące wartość logiczną true/false w zależności czy ten kupon został już użyty. -

@strife: to juz mam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

zostalo mi tylko generowanie tych unikalnych kluczy i jeszce musze zrobic ich liczenie ze jezeli wygeneruje 500kluczy to zeby przestal je wpisywac mozesz z tym mi cos poroadzic pewnie wypadalo by zroibc sprawdzanie przy pomocy count w bazie i jak count bedzie sie =500 to mu zrobic wyjscie z petli (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) dobrze mysle ?
Go to the top of the page
+Quote Post
strife
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


Cytat
zostalo mi tylko generowanie tych unikalnych kluczy i jeszce musze zrobic ich liczenie ze jezeli wygeneruje 500kluczy to zeby przestal je wpisywac mozesz z tym mi cos poroadzic pewnie wypadalo by zroibc sprawdzanie przy pomocy count w bazie i jak count bedzie sie =500 to mu zrobic wyjscie z petli (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) dobrze mysle ?


Dokładnie.

  1. <?php
  2. $ile = 500;
  3. while( $i < $ile ) {
  4. $generate = strtoupper(md5(microtime()+$i));
  5. $result  = substr($generate, 0, 6 );
  6. // tutaj wykonujesz zapytanie dodajac $result
  7. $i++;
  8. }
  9. ?>


Pozdrawiam.
Go to the top of the page
+Quote Post
kwiateusz
post
Post #9


Admin Techniczny


Grupa: Administratorzy
Postów: 2 072
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




zalezy czy poprzednie kupony bedą usuwane czy pozostaną i mogą być wykorzystane w dowolnym terminie... jeśli zostaną to daj fora do 500 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
andy84
post
Post #10





Grupa: Zarejestrowani
Postów: 165
Pomógł: 0
Dołączył: 14.11.2005
Skąd: London

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


ok sluchajcie zroiblem skrypt do generowania i wpisania tych rekordow do bazy
  1. <?php
  2. $i=0;
  3. while($i < 500){
  4. $generate = strtoupper(md5(microtime()));
  5. $result  = substr($generate, 0, 6 );
  6. $query="INSERT INTO vouchers VALUES ('0','".$result."','0')";
  7. mysql_query($query) or die (mysql_error());
  8. $i++;
  9. }
  10. ?>


ale kurcze wstawiajac to w ten sposob wszystkie ID mam = 0

uzywam takiego wstawiania do bazy ( z 0 ) ale poza petla i wszystko dziala moze mi ktorys z was podpowiedziec jak ustawic dodawanie aby zawsze ID prawidlowo sie wpisywalo po koleji (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) - moge napisac skrypt ktory bedzie co petle dodawal 1 do liczby ID ale czy to jest rozwiazaniem ?
Go to the top of the page
+Quote Post
kwiateusz
post
Post #11


Admin Techniczny


Grupa: Administratorzy
Postów: 2 072
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




a id w bazie masz auto_increment? on powinie nsie zapoiekowac tym że id bedzie większe o 1
Go to the top of the page
+Quote Post
strife
post
Post #12





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


Cytat(kwiateusz @ 26.06.2007, 23:15:47 ) *
a id w bazie masz auto_increment? on powinie nsie zapoiekowac tym że id bedzie większe o 1


Ale po co dodatkowe pole ? Unikalne ID to będzie ten wygenerowany kupon, chyba lepiej :roll2:

  1. <?php
  2. $query="INSERT INTO vouchers VALUES ('0','".$result."','0')";
  3. ?>


Jak widzę, dajesz zero w zapytaniu na pierwszej pozycji przed przecinkiem, także nie dziw się, że wszystkie masz z wartością zero. Ja bym to rozwiązał tak, tworzymy tabele gdzie ID jest unikalne typu varchar(6).

Kod
ID | DISABLED


A potem:

  1. <?php
  2. $query="INSERT INTO vouchers VALUES ('$result',0)";
  3. ?>


(IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)
Go to the top of the page
+Quote Post
andy84
post
Post #13





Grupa: Zarejestrowani
Postów: 165
Pomógł: 0
Dołączył: 14.11.2005
Skąd: London

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


zeczywiscie male nie dopatrzenie ale juz jest ok autoincrement braklo i sie dziwie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) to teraz wisienka na topie i ten dzial zamykam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) pozdorwka panowie

@strife - dzieki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ej panowie jeszce swieczuszki trzeba dostawic ;/ powie mi ktos jak sprawdzic czy ciag wpisywany ma min 6 znakow i sforsowac uzytkownika do wpisania min 6 znakow a jak jest cos mniej to ze odrazu jest to blad?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?

jak robie sprawdzenie tego w ciagu to zajmnie wieki ;/

Ten post edytował andy84 26.06.2007, 22:31:21
Go to the top of the page
+Quote Post
x3m
post
Post #14





Grupa: Zarejestrowani
Postów: 18
Pomógł: 1
Dołączył: 23.01.2007
Skąd: Ostróda

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


Cytat
czesc moze mi ktos powiedziec jakie moge miec prawdopodobienstwo powtorzenia w tym skrypcie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

1 do 1 947 792
Go to the top of the page
+Quote Post
strife
post
Post #15





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


Cytat(andy84 @ 26.06.2007, 23:20:22 ) *
Ej panowie jeszce swieczuszki trzeba dostawic ;/ powie mi ktos jak sprawdzic czy ciag wpisywany ma min 6 znakow i sforsowac uzytkownika do wpisania min 6 znakow a jak jest cos mniej to ze odrazu jest to blad?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?

jak robie sprawdzenie tego w ciagu to zajmnie wieki ;/


Robisz taki skrypt, a pytasz o totalne podstawy. No tak w sumie na Przedszkolu jesteśmy (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Zainteresuj się strlen" title="Zobacz w manualu PHP" target="_manual w takim razie. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Pozdrawiam.
Go to the top of the page
+Quote Post
andy84
post
Post #16





Grupa: Zarejestrowani
Postów: 165
Pomógł: 0
Dołączył: 14.11.2005
Skąd: London

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


@strife jestem kompletnym nowicjuszem ale pytam tylko o to czego nie wiem albo nie mam pojecia po jakich slowach szukac dzieki napewno cos zaraz z tym zrobie pozdrowka (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

ok zliczanie ilosci na min 6 tez poprawione (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
  1. <?php
  2. $strl=strlen($vouchernoform);
  3. if($strl<'6')
  4. {
  5. $vouchernoform="Invalid";
  6. echo "<br><div id="star"><b>Sorry but this Voucher is invalid, or has been used already.<br>If you enterd this voucher first time please contact our system administrator
    .<b></div><br>"
    ;
  7. }
  8. ?>


ok koncze temacik wszystko smiga hula i skacze (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) dobrej nocy wam

Ten post edytował andy84 26.06.2007, 22:53:52
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: 15.09.2025 - 13:10