![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 26.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Jestem w trakcie pisania lerningowego ze tak powiem skryptu i utknałem. Skrypt wykonuje troche instrukcji warunkowych, po czym natrafiajac na jedna z nich includuje plik którego zadaniem jest wyjąć z bazy usersp (id, username, pkt) losowo 4 userow, bez wzgledu czy po ID w bazie, czy po ich loginach, po czym ma im w zależności od wylosowanego miejsca przypisać odpowiednio 4,3,2,1 pkt, zapisujac wyniki (tj ktory nick otrzymal ile pkt) do bazy pointsl (id, name, username, pkt), a takze uzupełnia obecne karty danego usera. Tak to po krótce wygląda.. Lwią część mam już napisaną, tj update bazy usersp oraz dopisanie nowych rekordów w pointsl. Mój problem polega na tym iż nie wiem jak wyciągnąć losowo z bazy 4 nie powtarzajace sie loginy i przypisac je do 4 roznych zmiennych. Poszperalem jednak troszke w manualu (na forum nie znalazlo ani jednego wyniku), znalazlem funkcje rand() w mysql by wyjac losowe pozycje z tabeli i wyszło mi coś takiego:
Fajnie ale nie działa, a tzn ze cos zle wpisalem.. Tj zupełnie niczego nie zwraca.. Myślałem jeszcze nad array_rand() z początku, tylko tam już zupełnie nie wiem jak nią wyciągnąć cokolwiek z bazy. Patrzę na manuala i zamiast coraz więcej rozumieć, głupieję.. -------------------- zaburzony.pl
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Wywal średnik z zapytania.
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 26.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Moje przeoczenie, ";" wywalony.. nie działa nadal niestety..
-------------------- zaburzony.pl
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
zrób
Kod echo mysql_error(); jezeli nic nie bedzie to sprawdz jakie sa rekordy w bazie No i sprawdz czy masz polaczenie z baza. Ten post edytował wookieb 29.08.2008, 06:23:05 -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 26.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Do czego to brak snu prowadzi jednak..
Polecenie wrzucilem, wyplulo bleda, a jak..
Tylko z tego co wiem trzeba przepuscic w tym wypadku polecenie:
ale z poziomu shella, a do tego na tym serwerze nie mam dostepu. Trzeba dac cynka adminom znaczy..? -------------------- zaburzony.pl
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
A nie wiem czy czasem w phpmyadminie tego nie zrobisz. Może tabela jest zepsuta więc ją napraw.
-------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 26.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ok, admini już sobie naprawiają..
Teraz powróćmy jednak do tematu głównego.. czy tak sformuowane zapytanie, może zwrócić powtarzający się wynik, np powtorzy dwa takie same ID? A jesli tak to jak temu zapobiec..? Manual twierdzi ze jest to losowy wybor, ale nie ma tam slowa o powtarzalnosci wybranych rekordow, oraz jak do każdego z 4 rekordów przypisać unikalną zmienną, tak by można było je następnie dopisać do bazy
-------------------- zaburzony.pl
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Zwróci ci unikalne rekordy. -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 26.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dziekuje bardzo za pomoc..
![]() ![]() -------------------- zaburzony.pl
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 5 Dołączył: 28.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
stosowanie order by rand() przy dużych bazach i małej ilości rekordów do pobrania nie jest zbyt wydajnym rozwiązaniem. Może zrób tak jak opisałem tu: http://forum.php.pl/index.php?showtopic=10...mp;#entry511229 . Trzeba jedynie dodać sprawdzanie, czy dany ID nie został wcześniej wylosowany. Innymi słowy -- dodać primary key w tabelce numbers
![]() Dzięki temu możesz zmienić zapytanie kilku(nasto)sekundowe na działające poniżej sekundy. --- edit Proszę: http://forum.php.pl/index.php?s=&showt...st&p=511264 Ten post edytował szopen 31.08.2008, 15:53:30 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 2.05.2025 - 05:49 |