Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyświetlenie miejsca w rankingu
Lethys
post
Post #1





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


Witam,

Posiadam na swojej stronie ranking userów, który działa na podstawie punktów.

Chciałbym w szybki, łatwy sposób wyświetlić aktualne moje miejsce w rankingu.

Obecnie to wygląda tak:

  1.  
  2. $liczba_userow = @mysql_num_rows(mysql_query("select * from uzytkownicy"));
  3.  
  4. $tsel = mysql_query("select * from uzytkownicy order by punkty desc limit $liczba_userow");
  5. while ($top = mysql_fetch_array($tsel)){
  6.  
  7. $miejsce = $miejsce+1;
  8. $twoja_pozycja = 0;
  9.  
  10. $stat = mysql_fetch_array(mysql_query("select * from uzytkownicy where email='$email' and pass='$haslo'"));
  11.  
  12.  
  13. if ($stat[nazwisko] == $top[nazwisko]){
  14.  
  15.  
  16. $twoja_pozycja = $miejsce;
  17.  
  18. }
  19.  
  20. //wyświetlenie pozycji
  21. print "$twoja_pozycja";
  22.  


Nie da się tego zrobić w jakiś prostszy sposób?




--------------------
filmy podobne do - wyszukiwarka podobnych filmów
motywacja do działania - Bądź Lepszy
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://nospor.pl/mysql-faq.html#faq-8


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
pmir13
post
Post #3





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

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


Skoro masz dane użytkownika, czyli również jego punkty to może po prostu wystarczyłoby:
  1. SELECT 1+count(*) FROM uzytkownicy WHERE punkty > $twoje_punkty
Go to the top of the page
+Quote Post
Lethys
post
Post #4





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


@pmir13

Zrobiłem wdł. Twojego sposobu ale nie działa.

Kod wygląda następująco:

  1.  
  2.  
  3. <?php
  4. // Dane
  5. include ("config.php");
  6. include ("sesja.php");
  7.  
  8. $moje_punkty = $stat[punkty];
  9.  
  10.  
  11. $moje_miejsce = mysql_num_rows(mysql_query("SELECT 1+count(*) FROM uzytkownicy WHERE punkty < $moje_punkty"));
  12.  
  13. print "$moje_miejsce";
  14. ?>
  15.  
  16.  


Kod powinien zliczyć osoby które mają mniej punktów niż ja, czyli powinno mi pokazać numer pozycji przed moją pozycją w rankingu a skrypt wyświetla 1 i tyle sad.gif


--------------------
filmy podobne do - wyszukiwarka podobnych filmów
motywacja do działania - Bądź Lepszy
Go to the top of the page
+Quote Post
pmir13
post
Post #5





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

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


Liczenie osób, które mają mniej punktów daje pozycję w rankingu od końca, trzeba liczyć tych, którzy mają więcej, dlaczego zmieniłeś znak? Skrypt wyświetla 1, bo jesteś ostatni.
Go to the top of the page
+Quote Post
Lethys
post
Post #6





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


Myślałem, że tak będzie dobrze smile.gif ale probowałem również z Twoim znakiem i wynik nadal jest ten sam czyli 1.

Z Twoim znakiem kod wygląda tak:

  1. include ("config.php");
  2. include ("sesja.php");
  3.  
  4. $stat = mysql_fetch_array(mysql_query("select * from uzytkownicy where email='$email' and pass='$haslo'"));
  5.  
  6.  
  7. $moje_punkty = $stat[punkty];
  8.  
  9.  
  10. $liczba_userow = mysql_num_rows(mysql_query("SELECT 1+count(*) FROM uzytkownicy WHERE punkty > $moje_punkty"));
  11.  
  12. print "$liczba_userow";


Wyświetla: 1

Ten post edytował Lethys 18.03.2012, 14:21:24


--------------------
filmy podobne do - wyszukiwarka podobnych filmów
motywacja do działania - Bądź Lepszy
Go to the top of the page
+Quote Post
prowseed
post
Post #7





Grupa: Zarejestrowani
Postów: 433
Pomógł: 64
Dołączył: 29.01.2011
Skąd: Warszawa

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


Jest 1, bo zwraca Ci tylko jeden wiersz.
Po co stosujesz mysql_num_rows?


--------------------
Go to the top of the page
+Quote Post
Uriziel01
post
Post #8





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


  1. $liczba_userow =mysql_query("SELECT 1+count(*) FROM uzytkownicy WHERE punkty > $moje_punkty");
Go to the top of the page
+Quote Post
Lethys
post
Post #9





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


Usunąłem mysql_num_rows i kod wygląda obecnie tak:

  1.  
  2. <?php
  3. ini_set('display_errors', 1);
  4.  
  5. // Dane do statystyk
  6. include ("sesja.php");
  7.  
  8. $moje_punkty = $stat['punkty'];
  9.  
  10.  
  11. $liczba_userow = mysql_query("SELECT 1+count(*) FROM uzytkownicy WHERE punkty > $moje_punkty") or die(mysql_error());
  12.  
  13. print "$liczba_userow";
  14. ?>
  15.  


a zwraca mi błędy:

Cytat
Deprecated: Function session_is_registered() is deprecated in /var/www/vhosts/badzlepszy.pl/httpdocs/test/sesja.php on line 7
Resource id #7


Plik sesja.php wygląda tak:

  1. <?php
  2.  
  3.  
  4. include("config.php");
  5.  
  6. if (!session_is_registered("email") || !session_is_registered("pass")) {
  7.  
  8. print "Sesja wygasła!";
  9. }
  10.  
  11. $email = $_SESSION['email'];
  12. $pass = $_SESSION['pass'];
  13.  
  14. $haslo = md5($pass);
  15. $stat = mysql_fetch_array(mysql_query("select * from uzytkownicy where email='$email' and pass='$haslo'"));
  16. if (empty ($stat['id'])) {
  17. print "Niepoprawny login";
  18. }
  19.  
  20. ?>


Ten post edytował Lethys 18.03.2012, 17:52:48


--------------------
filmy podobne do - wyszukiwarka podobnych filmów
motywacja do działania - Bądź Lepszy
Go to the top of the page
+Quote Post
prowseed
post
Post #10





Grupa: Zarejestrowani
Postów: 433
Pomógł: 64
Dołączył: 29.01.2011
Skąd: Warszawa

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


MANUAL się czyta!
Deprecated, to znaczy, ze funkcja jest przestarzala.
Sprawdz sobie email i pass za pomoca funkcji isset()


--------------------
Go to the top of the page
+Quote Post
Lethys
post
Post #11





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


Nie chodziło mi o przestarzałą metodę bo to nie było tematem tego topicu. Ale to też muszę poprawić swoją drogą smile.gif

Skrypt zrobiłem, trzeba było zastosować: mysql_fetch_array żeby wyciagnąć dane z zapytania.



--------------------
filmy podobne do - wyszukiwarka podobnych filmów
motywacja do działania - Bądź Lepszy
Go to the top of the page
+Quote Post
daniofantasy
post
Post #12





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 14.06.2007
Skąd: Chesterfield UK

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


bo masz odpowiedz z mysql w postaci resource i powinienes przypisac ja do tablicy zeby cos z tego powyciagac

wrzuc zapytanie w te sprytna funkcyjke (ale najpierw sie polacz z db biggrin.gif) :

  1. /**
  2.  * Returns db query as an assoc array
  3.  *
  4.  * @param String $query
  5.  * @return array
  6.  */
  7.  
  8. function dbSelectAssoc($sQuery) {
  9. $rResult = mysql_query($sQuery);
  10. if (sizeof($rResult) > 0 && !empty($rResult) && @mysql_num_rows($rResult) != 0)
  11. while($aResult = mysql_fetch_assoc($rResult))
  12. $aResults[] = $aResult;
  13. return $aResults;
  14. }


i zwroci Ci tablice asocjacyjna

potem odpal na niej foreach:

  1. $moje punkty = 10 # zmienna testowa - w nia pakujesz swoje punkty
  2. $x = 0;
  3.  
  4. if (sizeof($aResults) > 0)
  5. foreach ($aResults as $aCurrRes)
  6. if ($aCurrRes['punkty'] < $moje_punkty) $x++;


i pod zmienna $x masz ilosc osob z mniejsza iloscia punktow smile.gif

Ten post edytował daniofantasy 19.03.2012, 12:07:28
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@daniofantasy nie dość ze piszesz odpowiedź po tym, jak problem jest już rozwiązany, to na dodatek podajesz zdecydowanie gorsze rozwiązanie niż te, które użyto.
Czemu to ma służyć?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 06:12