Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Skrypt losujący
Forum PHP.pl > Forum > Przedszkole
Michasko
Witam smile.gif
Więc zaczne od tego, że kolega chciał, abym napisał mu skrypt, który bedzie losował pary turniejowe.
Przedstawie to, co dotychczas zdziałałem, czyli formularz, w którym admin podaje nicki graczy, oraz skrypt, który wyświetla pary turniejowe:

gracze.html
  1. <form method="POST" action="losuj.php">
  2. Admin prowadzący: <input type="text" name="admin" size="20"><br><br>
  3.  
  4. 1. gracz: <input type="text" name="g1" size="20"><br>
  5. 2. gracz: <input type="text" name="g2" size="20"><br>
  6. 3. gracz: <input type="text" name="g3" size="20"><br>
  7. 4. gracz: <input type="text" name="g4" size="20"><br>
  8. 5. gracz: <input type="text" name="g5" size="20"><br>
  9. 6. gracz: <input type="text" name="g6" size="20"><br>
  10. 7. gracz: <input type="text" name="g7" size="20"><br>
  11. 8. gracz: <input type="text" name="g8" size="20"><br>
  12. <input type="submit" name="submit" value="Rozpocznij">


losuj.php
  1. <?php
  2.  
  3. $g1 = $_POST['g1'];
  4. $g2 = $_POST['g2'];
  5. $g3 = $_POST['g3'];
  6. $g4 = $_POST['g4'];
  7. $g5 = $_POST['g5'];
  8. $g6 = $_POST['g6'];
  9. $g7 = $_POST['g7'];
  10. $g8 = $_POST['g8'];
  11. $admin = $_POST['admin'];
  12.  
  13.     if ( ($g1 == "") || ($g2 == "") || ($g3 == "") || ($g4 == "") || ($g5 == "") || ($g6 == "") || ($g7 == "") || ($g8 == "") )
  14. {
  15.         echo ("Za mało graczy!");
  16. }
  17.     else
  18. {       echo "Turniej prowadzi $admin <br /><br />";
  19.         echo "$g1 VS $g2 <br />";
  20.         echo "$g3 VS $g4 <br />";
  21.         echo "$g5 VS $g6 <br />";
  22.         echo "$g7 VS $g8 <br />";
  23. }
  24.  
  25. ?>


Od razu mówie, że wiem o tym, iż mogą wystąpić problemy z warunkiem (tzn. jak bedzie np. 64 graczy to bedzie dużo pisania, ale to jest temat poboczny smile.gif).

Jak widzicie skrypt będzie wyświetlał taki o to napis:

Cytat
Turniej prowadzi ADMINEK

Gracz 1 VS Gracz 2
Gracz 3 VS Gracz 4
Gracz 5 VS Gracz 6
Gracz 7 VS Gracz 8


I tutaj pojawia sie mój problem dry.gif
Otóż chciałbym, aby skrypt wylosował pary (żeby nie było zawsze tak, że pierwszy zapisany gra z 2; trzeci z czwartym itd.).
Jakby ktoś mi jeszcze napisał skrypt (tzn. dopisał do tego istniejącego tongue.gif), dzięki któremu admin mógłby podawać wynik meczu, to byłbym wniebowzięty smile.gif
Pozdrawiam i czekam na pomoc.
babejsza
To powinno być pomocne smile.gif.

shuffle" title="Zobacz w manualu php" target="_manual
Michasko
Tak, pomaga w losowaniu winksmiley.jpg
Tylko co zrobić, aby wyświetlić to w takim formacie jak chce (wiem, że głupie pytanie sad.gif).
Jak robie tak (przedstawie to na krótszym przykładzie niż wcześniej):

  1. <?php
  2.  
  3. $wyg11 = $_POST['wyg11'];
  4. $wyg12 = $_POST['wyg12'];
  5. $wyg13 = $_POST['wyg13'];
  6. $wyg14 = $_POST['wyg14'];
  7.  
  8. if ( ($wyg11 == "") || ($wyg12 == "") || ($wyg13 == "") || ($wyg14 == "") )
  9. {
  10. echo ("Nie podałeś wszystkich wygranych!");
  11. }
  12. else
  13. {
  14. $pary = array($wyg11, $wyg12, $wyg13, $wyg14);
  15. srand((float)microtime()*1000000);
  16. shuffle($pary);
  17. while (list(, $para) = each($pary)) {
  18. echo "$para";
  19. }
  20. }
  21.  
  22. ?>


to wyświetla mi "pary" w formacie:
Cytat
3 2 4 1


no i co z tym zrobić? sad.gif
nospor
  1. <?php
  2. $count = count($pary);
  3. for ($i = 0; $i < $count; $i+=2) 
  4.    echo 'Gracz '.$pary[$i].' VS Gracz '.$pary[$i+1].'<br />';
  5.  
  6. ?>
I uzywaj znacznikow w tytulach (proszę grzecznie drugi raz). poprawiam
Michasko
Przepraszam za znaczniki.

@nospor - kod, który poleciłeś zwraca takie wartości:

Cytat
Gracz 3 VS Gracz 4
Gracz 2 VS Gracz 1
Gracz 3 VS Gracz 4
Gracz 2 VS Gracz 1
Gracz 3 VS Gracz 4
Gracz 2 VS Gracz 1
Gracz 3 VS Gracz 4
Gracz 2 VS Gracz 1


smile.gif
Chyba dam sobie spokój z losowaniem, po prostu w echo() pomieszam tak zmienne, że nikt nie zauważy różnicy miedzy losowaniem a normalnym ustawieniem tongue.gif
nospor
Ja ci podalem kod, ktory leci po tablicy. A ze ty ją źle budujesz, to juz nie moja wina smile.gif

edit: albo ty ten kod 4 razy wywolujesz. pokaz jak go wstawiles? Chyba nie dales go do tej petli co miales? miales go dac zamiast tej petli
Michasko
Ale ja jestem głupi :]
Wrzuciłem kod, który podałeś...do pętli laugh.gif laugh.gif mój błąd, zwracam honor smile.gif
No tak ;]
Ale teraz i tak nie losuje, tylko zwraca pary tak: 1 gracz z 2 graczem, 3 z czwartym itd... smile.gif
Chyba, że na serio jestem aż tak głupi... smile.gif:

  1. <?php
  2.  
  3. $wyg11 = $_POST['wyg11'];
  4. $wyg12 = $_POST['wyg12'];
  5. $wyg13 = $_POST['wyg13'];
  6. $wyg14 = $_POST['wyg14'];
  7.  
  8. if ( ($wyg11 == "") || ($wyg12 == "") || ($wyg13 == "") || ($wyg14 == "") )
  9. {
  10. echo ("Nie podałeś wszystkich wygranych!");
  11. }
  12. else
  13. {
  14. $pary = array($wyg11, $wyg12, $wyg13, $wyg14);
  15. $count = count($pary);
  16. for ($i = 0; $i < $count; $i+=2)
  17. echo 'Gracz '.$pary[$i].' VS Gracz '.$pary[$i+1].'<br />';
  18. }
  19.  
  20. ?>
nospor
oj.... ja ci podalem kawalek kodu. to co miales z losowaniem, mialo zostac...
Masz tu caly kod, zebys znowu sie nie zapultal winksmiley.jpg
  1. <?php
  2.  
  3. $wyg11 = $_POST['wyg11'];
  4. $wyg12 = $_POST['wyg12'];
  5. $wyg13 = $_POST['wyg13'];
  6. $wyg14 = $_POST['wyg14'];
  7.  
  8.     if ( ($wyg11 == "") || ($wyg12 == "") || ($wyg13 == "") || ($wyg14 == "") )
  9. {
  10.         echo ("Nie podałeś wszystkich wygranych!");
  11. }
  12.     else
  13. {
  14.         $pary = array($wyg11, $wyg12, $wyg13, $wyg14);
  15.   srand((float)microtime()*1000000);
  16. shuffle($pary);
  17. $count = count($pary);
  18. for ($i = 0; $i < $count; $i+=2) 
  19.    echo 'Gracz '.$pary[$i].' VS Gracz '.$pary[$i+1].'<br />';
  20. }
  21.  
  22. ?>


ps: na przyszlość będę patrzyl na jakim forum piszę i postatam sie podawac więcej informacji. sorki
Michasko
Noo!! Działa!!
Wielkie dzieki!! smile.gif
Kocham to forum! smile.gif)

@nospor - cierpliwy jesteś tongue.gif

Edit:
Cytat
ps: na przyszlość będę patrzyl na jakim forum piszę i postatam sie podawac więcej informacji. sorki


nie szkodzi - na błędach szybciej sie naucze ;] Jeszcze raz wielkie dzięki.
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.