Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Losowanie Rand.
kurczak610
post
Post #1





Grupa: Zarejestrowani
Postów: 87
Pomógł: 2
Dołączył: 3.05.2009

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


Witam, chciałbym zrobić takie coś że:
Wpisuje w pole input cyfre taką ile chce aby wylosowało się cyfr. Np. 18
I klikam losuj i nizej pokazaly sie 18 losowych cyfr.

Mam cos takiego ale nie wiem jak polaczyc form z php zeby to działało i jak dać petelke:
  1. <form method="POST">
  2. <table>
  3. <tr><td>Liczba:</td><td><input type="text" name="ilosc"></td></tr>
  4. <tr><td></td><td><input type="submit" name="submit" value="Losuj!"></td></tr>
  5. </table>
  6. </form><br>
  7. <?php
  8.  
  9.   $cyfry=array('a','b','c');
  10.  
  11.  
  12.  
  13. do
  14. {
  15.   $los=rand(0,2);
  16.  
  17.   $cyfra.=$cyfry[$los];
  18.  
  19.   $i++;
  20. }
  21.  
  22. while($i<=5);
  23.  
  24. $pokaz = $cyfra;
  25. $explode=explode("\n",$pokaz);
  26. $code=count($explode);
  27. for($i=0;$i<$code;$i++)
  28. $kod = trim ($explode[$i]);
  29. echo "$kod";
  30. ?><br><br>

Za pomoc dam pomógł (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
kkuba
post
Post #2





Grupa: Zarejestrowani
Postów: 102
Pomógł: 13
Dołączył: 6.07.2008
Skąd: Nowy Sącz

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


  1. <form action="" method="POST">
  2. <tr><td>Liczba:</td><td><input type="text" name="ilosc"></td></tr>
  3. <tr><td></td><td><input type="submit" name="submit" value="Losuj!"></td></tr>
  4. </form><br>


  1. <?php
  2. if(isset($_POST['ilosc']))
  3. {
  4.    $count = $_POST['ilosc'];
  5.  
  6.    if(!is_numeric($count))
  7.    {
  8.        die('Przyjmuję tylko liczby. ');
  9.    }
  10.  
  11.    $chars = '1234567890abcdefghijklmnopqrstuvwxyz';
  12.  
  13.    for($q = 0; $q < $count; $q++)
  14.    {
  15.        $res .= $chars[rand(0, strlen($chars))];
  16.    }
  17.  
  18.    echo $res;
  19. }
  20. ?>


Pozdrawiam.
Go to the top of the page
+Quote Post
Asmox
post
Post #3





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


Ja to bym zrobił troszkę inaczej:
1. Ten formularzyk, tylko że do ćwiczeń może lepszy będzie GET
2.
  1. <?php
  2. function LosujLiczby($ile, $min=FALSE, $max=FALSE) {
  3. $liczby = array();
  4. if($min && $max){
  5. for $(i = 0; $i < $ile; $i++) {
  6. $liczby[$i] = Rand($min, $max)
  7. }
  8. }
  9. else {
  10. for $(i = 0; $i < $ile; $i++) {
  11. $liczby[$i] = Rand()
  12. }
  13. }
  14. return $liczby
  15. }
  16. ?>

Tych pierdół ze sprawdzaniem, czy argumenty to liczby itd nie będę podawał, bo wygląda mi to na ćwiczenie,a poza tym kolega wyżej już napisał co trzeba robić. Jak chcesz zdobyć te cyfry to możesz zrobić na przykład takie cuś:
  1. <?php
  2. $ile = $_GET['pole'] // To pole z formularza co w nim liczbę wpisujesz
  3. $liczby = LosujLiczby($ile) // Jak chcesz to podajesz zakres, jak nie to olej
  4. foreach ($liczby as $liczba) {
  5. echo "$liczba, "
  6. }
  7. ?>
Go to the top of the page
+Quote Post
kurczak610
post
Post #4





Grupa: Zarejestrowani
Postów: 87
Pomógł: 2
Dołączył: 3.05.2009

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


Ja tam wole na POST (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ale zle mnie zrozumieliście.

kkuba zrobil formularz ze jak wpisze np. 8 to robi sie 8 cyfrowy kod np.
12345678

A ja chce ze jak wpisze 8 ma byc tak:
12345678
qwertyui
asdfghjk
zxcvbnm,
qazwsxed
crfvtgby
hnujmikl
qwsdcvbg

Da się tak? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
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




Ja korzystam z takiego potworka:
  1. <?php
  2. $a = range(48,57);
  3.            $b = range(65,90);
  4.            $c = range(97,122);
  5.            $chars = array_merge($a,$b,$c);
  6.            $c = count($chars);
  7.  
  8.            for($a=0;$a<8;$a++){
  9.                $pass .= chr($chars[mt_rand(0,$c-1)]);
  10.            }
  11. ?>

Łopatologiczne. ;p
Go to the top of the page
+Quote Post
Maveral
post
Post #6





Grupa: Zarejestrowani
Postów: 45
Pomógł: 8
Dołączył: 30.07.2005

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


To ja już nie wiem czy chcesz same cyfry, czy też litery? W pierwszym poście piszesz o cyfrach, więc wyglądało by to jakoś tak:
  1. <?php
  2.  
  3. $ile = $_POST['ilosc'];
  4.  
  5. for ($k=0; $k<$ile; $k++)
  6. {
  7. $i = rand (1, 1000000);
  8. echo "$i <br />";
  9. }
  10.  
  11. ?>
Go to the top of the page
+Quote Post
golaod
post
Post #7





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


Tworzysz tablicę ze wszystkimi znakami jakie chcesz mieć, a następnie:
  1. <?php
  2. if( isset($_POST['ilosc']) ){
  3.  $keys =  array_rand($tablica_znakow, 8);
  4.  foreach($keys as $val)
  5.    echo $tablica_znakow[$val];
  6. }
  7. ?>


Tadam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował golaod 2.06.2009, 08:53:38
Go to the top of the page
+Quote Post
kurczak610
post
Post #8





Grupa: Zarejestrowani
Postów: 87
Pomógł: 2
Dołączył: 3.05.2009

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


Ok, mam takie coś:
  1. <form action="" method="POST">
  2. <table>
  3. <tr><td>Liczba:</td><td><input type="text" name="ilosc"></td></tr>
  4. <tr><td></td><td><input type="submit" name="submit" value="Losuj!"></td></tr>
  5. </table>
  6. </form><br>
  7. <?php
  8. if(isset($_POST['submit']))
  9. {
  10.   $ile = $_POST['ilosc'];
  11.  
  12.  
  13. $chars = '1234567890abcdefghijklmnopqrstuvwxyz';
  14.  
  15.   for ($k=0; $k<$ile; $k++)
  16.   {
  17.       $res = $chars[rand(0, strlen($chars))];
  18.  
  19. echo "$res <br />";
  20. }
  21.  
  22. }
  23. ?>


Jest ok, losuje tyle cyfr/liczb ile wpisze ale dlugosc tego kodu to 1 cyfra/liczba.
Co zrobić zeby kod mial dlugosc 5 cyfr/liczb?
Go to the top of the page
+Quote Post
Spawnm
post
Post #9





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




$res .= $chars[rand(0, strlen($chars))];
Go to the top of the page
+Quote Post
kurczak610
post
Post #10





Grupa: Zarejestrowani
Postów: 87
Pomógł: 2
Dołączył: 3.05.2009

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


Tez jest zle np. wpisalem liczbe 3 i mam tak:
b
bp
bpf
Go to the top of the page
+Quote Post
Spawnm
post
Post #11





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




daj echo za klamrą

Ten post edytował Spawnm 2.06.2009, 13:34:36
Go to the top of the page
+Quote Post
kurczak610
post
Post #12





Grupa: Zarejestrowani
Postów: 87
Pomógł: 2
Dołączył: 3.05.2009

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


Jest zle. Wpisuje np. 2 i jest:
6s

A ja chce ze jak wpisze 2 to bedzie tak:
675fg
ujn4f

I koniecznie kod musi mieć długość 5 cyfr/liczb.
Go to the top of the page
+Quote Post
Pilsener
post
Post #13





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

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


Ktoś go rozumie? Poza tym Kurczak, dostałeś już chyba n sposobów użycia rand + tablic, resztę masz w manualu:
http://pl2.php.net/manual/pl/function.array-rand.php

Nie będziemy na każde zawołanie spełniali Twoich fantazji, spróbuj sam coś zrobić.
Go to the top of the page
+Quote Post
Maveral
post
Post #14





Grupa: Zarejestrowani
Postów: 45
Pomógł: 8
Dołączył: 30.07.2005

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


Chodzi chyba o to, że wylosowane liczby muszą być pięciocyfrowe, czyli:

  1. <?php
  2.  
  3. $ile = $_POST['ilosc'];
  4.  
  5. for ($k=0; $k<$ile; $k++)
  6. {
  7. $i = mt_rand(10000, 99999);
  8. echo "$i <br />";
  9. }
  10.  
  11. ?>


A jakbyś chciał litery i liczby, to masz coś takiego:

  1. <?php
  2.  
  3. $ile = $_POST['ilosc'];
  4.  
  5. $chars = '1234567890abcdefghijklmnopqrstuvwxyz';
  6.  
  7.  for ($k=0; $k<$ile; $k++)
  8.    {
  9.        for ($z=0; $z<5; $z++)
  10.            {
  11.            $res = $chars[rand(0, strlen($chars))];
  12.            echo "$res";
  13.            }
  14.        echo "<BR />";
  15.    }
  16.  
  17. ?>


Nie wiem czy użycie dwóch pętli jest optymalne, ale działa (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował Maveral 2.06.2009, 15:44:00
Go to the top of the page
+Quote Post
kurczak610
post
Post #15





Grupa: Zarejestrowani
Postów: 87
Pomógł: 2
Dołączył: 3.05.2009

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


Maveral Jesteś wielki (IMG:http://forum.php.pl/style_emoticons/default/haha.gif) O to mi chodziło Dam pomógł (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

PS. Dało by te stworzone kody automatycznie dodać do bazy danych?

Ten post edytował kurczak610 2.06.2009, 18:20:09
Go to the top of the page
+Quote Post
Fifi209
post
Post #16





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(kurczak610 @ 2.06.2009, 19:18:38 ) *
PS. Dało by te stworzone kody automatycznie dodać do bazy danych?


Tak, jak najbardziej.

Zgadnę, nie wiesz jak się za to zabrać?

Nic nie szkodzi mam coś dla Ciebie:
http://www.google.pl/search?hl=pl&q=ku...mp;aq=f&oq=
Go to the top of the page
+Quote Post
kurczak610
post
Post #17





Grupa: Zarejestrowani
Postów: 87
Pomógł: 2
Dołączył: 3.05.2009

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


Cytat(fifi209 @ 2.06.2009, 19:23:27 ) *
Tak, jak najbardziej.

Zgadnę, nie wiesz jak się za to zabrać?

Nic nie szkodzi mam coś dla Ciebie:
http://www.google.pl/search?hl=pl&q=ku...mp;aq=f&oq=


Nie zgadłeś, dam to przez expolde i bedzie ok (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Napisałem zapisuje się ale tylko ostatnia liczba calego kody, wiecie dlaczego tak moze byc? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Więc mam cos takiego:
  1. <form action="" method="POST">
  2. <table>
  3. <tr><td>Liczba:</td><td><input type="text" name="ilosc"></td></tr>
  4. <tr><td></td><td><input type="submit" name="submit" value="Losuj!"></td></tr>
  5. </table>
  6. </form><br>
  7. <?php
  8. if(isset($_POST['submit']))
  9. {
  10.  
  11.  
  12. $ile = $_POST['ilosc'];
  13.  
  14. $chars = '1234567890abcdefghijklmnopqrstuvwxyz';
  15.  
  16. for ($k=0; $k<$ile; $k++)
  17.   {
  18.       for ($z=0; $z<5; $z++)
  19.           {
  20.           $res = $chars[rand(0, strlen($chars))];
  21.           echo "$res";
  22.           }
  23.       echo "<BR />";
  24.  
  25.  
  26.  
  27.        $explodecodes=explode("\n",$res);
  28.    $code=count($explodecodes);
  29.    for($i=0;$i<$code;$i++)
  30.        {
  31.        mysql_query("INSERT INTO kody VALUES ('NULL','$explodecodes[$i]','0','0')");
  32.        }
  33.  
  34. }
  35. }
  36. ?>


Losuje mi to ale zapisuje do bazy danych tylko ostatnią cyferkę (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Dlaczego? (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif) (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif)
Go to the top of the page
+Quote Post
phpion
post
Post #18





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




  1. <form action="" method="POST">
  2. <table>
  3. <tr><td>Liczba:</td><td><input type="text" name="ilosc"></td></tr>
  4. <tr><td></td><td><input type="submit" name="submit" value="Losuj!"></td></tr>
  5. </table>
  6. </form><br>
  7. <?php
  8. if(isset($_POST['submit'])) {
  9.    $ile = $_POST['ilosc'];
  10.  
  11.    $chars = '1234567890abcdefghijklmnopqrstuvwxyz';
  12.    $res = '';
  13.  
  14.    for ($k=0; $k<$ile; $k++) {
  15.                // tu cos powinno byc
  16.  
  17.                for ($z=0; $z<5; $z++) {
  18.                    $res .= $chars[rand(0, strlen($chars))];
  19.                }
  20.                
  21.                mysql_query("INSERT INTO kody VALUES ('NULL','$res','0','0')");
  22.                        
  23.                echo $res;
  24.                echo "<BR />"
  25.  
  26.    }
  27. }
  28. ?>

PS: zostawiłem ci w jednym miejscu niespodzianke - usuniętą jedną linijkę. Pomyśl samodzielnie co tam powinno być (bez tej linijki kod powinien również działać).

Ten post edytował phpion 3.06.2009, 17:38:02
Go to the top of the page
+Quote Post
kurczak610
post
Post #19





Grupa: Zarejestrowani
Postów: 87
Pomógł: 2
Dołączył: 3.05.2009

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


Ten skrypt tez nie dziala bo losuje kod tak:

9jlhq
9jlhqd5lh7

To jest ten sam kod tylko coraz dłuższy (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) a co do niespodzianki to nie powiedz mi co ona ma robić (IMG:http://forum.php.pl/style_emoticons/default/haha.gif) ;P
Go to the top of the page
+Quote Post
phpion
post
Post #20





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




No właśnie to jest tą niespodzianką. Pomyśl jak skrócić generowany kod w kolejnych iteracjach pętli.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 - 22:41