![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 23.03.2004 Skąd: Mrągowo Ostrzeżenie: (0%) ![]() ![]() |
Witam!!
Mam problemik, mianowicie nie mam pomysłu jak pozbyć sie duplikatów losowanych za pomoca funkcji rand () z bazy. Chcem wybierac losowo pytania z bazy i nawet to robi ale pytania czasami sie powtarzaja (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) . Czy ma ktoś pomysł jak to wykonać. Znajomy mi doradził zeby wylosowane puytanei jakoś trzymac w tablicy tymczasowej ale nie zabardzo wiem jak to zrobić. [php:1:050845fe6a]<?php //funkcja zwracajaca ilosc pytan w tabeli function ile() { { $wynik = mysql_query ("SELECT id_pytanie FROM pytanie ;"); $ile = mysql_num_rows($wynik); } return $ile; } $max=ile(); $id_pytanie=rand(1,$max); // i tu sobie przedzial robie w ktorym losowane sa pytania i tu mam pytanie jak sie pozbyc duplikatów pytan $zapytanie = 'SELECT tresc FROM pytanie WHERE id_pytanie="'.$id_pytanie.'" '; $wynik = mysql_query($zapytanie); if (mysql_num_rows($wynik) == 1) { $wiersz = mysql_fetch_array($wynik); //formularz wyswietlajacy // a tu sa pobierane odpowiedzi w postaci radio buttonow $zapytanie = 'SELECT id_odpowiedz, tresc FROM odpowiedz WHERE id_pytanie="'.$id_pytanie.'"'; $wynik2 = mysql_query($zapytanie); for($i=0; $i<mysql_num_rows($wynik2); $i++) { $wiersz2 = mysql_fetch_array($wynik2); echo ' <tr>'; echo ' <td><input type="radio" name="odpowiedz" value="'.stripslashes($wiersz2['id_odpowiedz']).'"></td>'; echo ' <td>'.stripslashes($wiersz2['tresc']).'</td>'; echo ' </tr>'; } //itd........ ?>[/php:1:050845fe6a] Dzieki za pomoc :] |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 0 Dołączył: 19.02.2004 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
mozesz to zroibć np. za pomocą sesji(tak będzie najprościej i najszybciej:)
a wiec: :arrow: Poczytaj o sesjach [manual:529c937fef]session[/manual:529c937fef] :arrow: Zastosuj je do przekazania między kolejnymi stronami z pytaniami tablicy zawierjącej numery pytań już wylosowanych. Możesz to zrobić np tak: [php:1:529c937fef]<?php [php:529c937fef]<?php <?php //funkcja zwracajaca ilosc pytan w tabeli function ile() { { $wynik = mysql_query ("SELECT id_pytanie FROM pytanie ;"); $ile = mysql_num_rows($wynik); } return $ile; } $max=ile(); session_start();//rozpocznij sesje while(in_array ($id_pytanie=rand(1,$max),$_SESSION['used'])); //losuj tak dlugo az wylosujesz pytanie jeszcze nie uzywane $_SESSION['used'][] = $id_pytanie; //zapisz pytanie jako uzyte.. koniec:) $zapytanie = 'SELECT tresc FROM pytanie WHERE id_pytanie="'.$id_pytanie.'" '; $wynik = mysql_query($zapytanie); if (mysql_num_rows($wynik) == 1) { $wiersz = mysql_fetch_array($wynik); //formularz wyswietlajacy // a tu sa pobierane odpowiedzi w postaci radio buttonow $zapytanie = 'SELECT id_odpowiedz, tresc FROM odpowiedz WHERE id_pytanie="'.$id_pytanie.'"'; $wynik2 = mysql_query($zapytanie); for($i=0; $i<mysql_num_rows($wynik2); $i++) { $wiersz2 = mysql_fetch_array($wynik2); echo ' <tr>'; echo ' <td><input type="radio" name="odpowiedz" value="'.stripslashes($wiersz2['id_odpowiedz']).'"></td>'; echo ' <td>'.stripslashes($wiersz2['tresc']).'</td>'; echo ' </tr>'; } //itd........ ?> ?>[/php:529c937fef] ?>[/php:1:529c937fef] update musisz jeszcze dodac taka linie po session_start: [php:1:529c937fef]<?php if(!isset($_SESSION['used'])) $_SESSION['used'] = array(); ?>[/php:1:529c937fef] ta linia powoduje, że przy pierwszym pytaniu inicjowana jest tablica , która bedzie przechowywała info o użytych pytaniach. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 02:45 |