Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Losowanie bez powtorzen + nowe pytania, [PHP][MySQL]
saren_as
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 21.07.2008

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


Witam!
Chce osiagnac cos takiego:
Mam w bazie 8 osob. Kazda z tych osob musi wylosowac jedna osobe (pomijajac siebie), ale warunkiem jest to, iz jezeli osoba nr_1 wylosowala nr_5 bedzie on (nr_5) juz nie dostepny dla innych.
Opis:
Zblizaja sie swieta wiec...
Jest nas osiem osob i chcemy zrobic losowanie kto komu kupi prezent. Jedna osoba kupi cos tylko dla jednej osoby. Problem w tym, ze musimy zrobic losowanie, a jestesmy w tej chwili daleko od siebie. W ramach nauki php wymyslilem sobie, ze stworze stronke na ktorej to skrypt wylosuje za nas ta osobe.
Prosze o pomysly jak to moge rozwiazac. Moje rozwiazanie:
- tworze baze z tabelami losujacy i wylosowany
- kazdy z nas loguje sie i skrypt pobiera wszystkich z bazy (poza zalogowana osoba), a nastepnie losowo wybiera jedna osobe.
Problem w tym, ze nie wiem jak zrobic cos takiego, aby po wylosowaniu jednej osoby nie byla ona juz dostepna dla innych.
Zapraszam do pomocy:) Zaznaczam, ze chcial bym tego dokonac "sam" - nie chce gotowych skryptow ... chyba ze sie poddam.
Pozdrawiam!

Ten post edytował saren_as 3.11.2008, 15:25:23
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
saren_as
post
Post #2





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 21.07.2008

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


...EDIT...

Troche mi zeszlo, ale w koncu mam cos takiego i odziwo nawet mi dziala. Mam jednak jeszcze kilka niewiadomych:

  1. <?php
  2.  
  3. $connect = mysql_connect('localhost', 'root', 'saren')
  4.  or die ('Connecting failed');
  5. mysql_select_db('prezenty')
  6.  or die (mysql_error());
  7.  
  8. //pobranie zmiennej w celu okreslenia kim jest osoba aktualnie losujaca
  9. $name_losujacy = $_GET['$name_losujacy'];
  10.  
  11. // losowanie osoby z pominieciem tej, ktora wlasnie losuje oraz tych, ktrorzy zostali juz wylosowani
  12. $RANDOM = mysql_query ("SELECT `name`, `losowal` FROM `users` " .
  13.                       "WHERE `name` != '$name_losujacy' AND `available` = '0' " .
  14.                       "ORDER BY RAND() LIMIT 1")
  15.  or die (mysql_error());
  16.  
  17. while ($row = mysql_fetch_array($RANDOM)) {
  18.  
  19.  $name_wylosowany = $row['name'];
  20.  
  21. }
  22.  
  23. // pobranie zmiennej wskazujacej czy dana osoba wylosowala juz kogos wczesniej
  24. $LOSOWAL = mysql_query ("SELECT `name`, `losowal` FROM `users` " .
  25.                        "WHERE `name` = '$name_losujacy' ")
  26.  or die (mysql_error());
  27.  
  28. while ($row = mysql_fetch_array($LOSOWAL)) {
  29.  
  30.  $losowal = $row['losowal'];
  31. }  
  32.  
  33. // wyswietlenie wynikow w zaleznosci od spelnionych warunkow
  34. if ($losowal > 0) {
  35. echo "Juz brales udzial w losowaniu i wylosowales $name_wylosowany "; // TUTAJ MAM PROBLEM ! ! !
  36. } else {
  37.  
  38. $random =<<<EOD
  39.   <tr>
  40.     <td><center>$name_wylosowany</center></td>
  41.   </tr>
  42. EOD;
  43.  
  44. // table_start
  45. $table=<<<EOD
  46. <h2><center>Swiateczne prezenty</center></h2>
  47. <table width="70%" border="1" cellpadding="2" cellspacing="2" align="center">
  48.   <tr>
  49.     <th>$name_losujacy wylosowales...</th>
  50.   </tr>
  51. EOD;
  52.  
  53. // zamieniam wartosc available, aby nie moza bylo wylosowac jeszcze raz tej osoby
  54. $SET_1 = mysql_query ("UPDATE `users` SET `available` = '1' " .
  55.                      "WHERE `name` = '$name_wylosowany' ")
  56.  
  57. // zamieniam wartosc losowal, aby ta osoba nie mogla jeszcze raz kogos wylosowac  
  58. $SET_2 = mysql_query ("UPDATE `users` SET `losowal` = '1' " .
  59.                      "WHERE `name` = '$name_losujacy' ")
  60.  
  61. echo $table;
  62. echo $random;
  63. }
  64. ?>

W skrypcie zaznaczylem poprzez //TUTAJ MAM PROBLEM miejsce problemu (linia 36). Osoba, ktora juz wczesniej kogos wylosowala nie moze jeszcze raz tego uczynic. Tak tez sie dzieje przy pomocy uzytej instrukcji IF, ale chcial bym, aby poza informacja, ze juz brala udzial w losowaniu wyswietlilo sie kogo ta osoba wczesniej wylosowala (w ramach przypomnienia) Jak wiec przypisac na stale tej osobie swojego partnera?
Prosze takze o wskazanie mi bledow jakie popelnilem piszac moj pierwszy skrypt (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Pozdrawiam i dzieki za pomoc !

...EDIT...

OK widze, ze nikt nie wie jak mi pomoc wiec zadam inne pytanie.
W lini 34 mam
if ($losowal > 0) {
dziala to tak jak ma, ale dla czego, gdy wezme
if ($losowal = 1) {
juz nie dziala? Warunek ten zaklada to samo wiec powinno to dziala w ten sam sposob na obydwu przykladach. Moze mi to ktos wytlumaczyc?

PS. Ewentualnie prosze tez o pomoc ze wczesniejszym problemem (linia 36).

Pozdrawiam!

Ten post edytował saren_as 4.11.2008, 16:42:32
Go to the top of the page
+Quote Post

Posty w temacie


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: 9.10.2025 - 08:47