Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Macie pomysły na zmianę kodu, żeby działał
Forum PHP.pl > Forum > PHP
miedzna
Po krótce, mam w bazie tabelę z ludźmi, każdy ma wpisane imię, nazwisko itd oraz każdy ma komórkę los domyślnie z wartością 0. Poniżej kod, który z założenia miał wylosować z tej bazy tyle osób, ile jest w zmienne $bilety_szt, ale oczywiście nie działa jak należy.
  1. <?php
  2.  
  3. include('config.php');
  4. $bilety_szt = 4; //ilosc dostepnych biletow
  5. $result = mysql_query('select id from centrum'); 
  6. $uczestnikow = mysql_num_rows($result); //sprawdzam ilosc zgloszonych
  7. for($i=1; $i<=$bilety_szt; $i++){
  8. $wylosowany = rand(1,$uczestnikow); //losuje numer id
  9. $los = "UPDATE centrum SET los = 1 WHERE id = $wylosowany AND los !=1"; //zmieniam w bazie zmienną los z 0 na 1, co oznacza, ze zostal wylosowany
  10. $wynik_losu = mysql_query($los);
  11. }
  12. $sql2 = "SELECT imie, nazwisko FROM centrum WHERE los = 1"; // a tu lukam kto został wylosowany
  13. $result = mysql_query($sql2);
  14. while ($row = mysql_fetch_array($result)) {
  15.     printf("Wylosowałem: %s %s<BR>", $row["imie"], $row["nazwisko"]);
  16. }
  17.  
  18. ?>


dziala to tak, że po każdym odświeżeniu strony losuje znowu i aż wszyscy w bazie mają w komórce los wpisaną 1 a chodzi o to, żeby wylosował tylko tyle, ile jest w zmiennej $bilety_szt i oczywiście, żeby nikt się 2 razy nie powtórzył. Kurka, siedzę nad tym i jakoś nie mam natchnienia...

Dzieki za pomoc.
mike
Hmm, strasznie zagmatfany ten kod, Nie lepiej tak:

  1. <?php
  2.  
  3. include('config.php');
  4.  
  5. $intTickets = 4;
  6.  
  7. $strSQL = 'UPDATE centrum SET los = 1 WHERE id IN (SELECT id FROM centrum ORDER BY RAND() LIMIT ' . $intTickets . ') AND los !=1';
  8. mysql_query( $strSQL );
  9.  
  10. $sqlSQL = "SELECT imie, nazwisko FROM centrum WHERE los = 1";
  11. $resSelect = mysql_query( $sqlSQL );
  12. while( $row = mysql_fetch_array( $resSelect ) )
  13. {
  14. printf("Wylosowałem: %s %s<BR>", $row["imie"], $row["nazwisko"]);
  15. }
  16.  
  17. ?>
miedzna
Twoje rozwiązanie jest lepsze, ale coś nie działa, nie zmienia w bazie losowe komórki LOS z 0 na 1 sad.gif, ale próbuje...
mike
A jakiego typu masz to pole los :?:
miedzna
VARCHAR(1)
mike
1. To już lepiej w ENUM( '0', '1' )
2. W zapytaniach ujmuj w apostrofy wartości związane z tym polem (w końcu to stringi): ... SET los = '1' ... WHERE los != '1' ...
miedzna
Nie działa sad.gif
sajborg
spropob tak

  1. <?php
  2.  
  3. $strSQL = "UPDATE centrum SET los = '1' WHERE id IN (SELECT id FROM centrum ORDER BY RAND() LIMIT ' . $intTickets . ') AND los !='1'";
  4. ?>
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.