Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Odszukiwanie int, liczenie, sumowanie i porównywanie w jednym
Morfi777
post
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 1
Dołączył: 5.09.2007

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


Witam,

Kompletnie nie mam pomysłu jak to rozegrać. Postaram się to przedstawić jak najlepiej.

Baza wygląda tak:

---user_id--------points---
-----1-------- 2, 4, 5, 1, 1
-----2-------- 1, 1, 1, 1, 1
-----3-------- 4, 5, 7, 2, 1
-----4-------- 1, 1, 1, 9, 9

Czyli jest 4(lub więcej) użytkowników i każdy ma jakieś tam punkty.


Co chcę uzyskać to: żeby skrypt wyciągnął z bazy wszystkich użytkowników i policzył im ile każdy ma punktów "1".
Czyli:
user 1 ma 2 x 1 -> 2
user 2 ma 5 x 1 -> 5
user 3 ma 1 x 1 -> 1
user 4 ma 3 x 1 -> 3


Dodatkowo ! Każdy user ma swój login. I chcę by po zalogowaniu widział on wszystkie punkty, ale żeby nie było zdradzone czyje to są punkty (oprócz niego samego).
Czyli: user 3 po zalogowaniu widzi
5
3
2
1 <- To są twoje punkty

a user 4 widzi:
5
3 <- To są twoje punkty
2
1


To tyle, bardzo proszę o podsuwanie pomysłów (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Teraz zauważyłem, że to nie konkatenacja tylko zwykle dodawanie (IMG:style_emoticons/default/smile.gif) Zauważ, że to tak naprawdę pętla gdzie sprawdza ile razy wystąpiła w rundzie jedynka ( $wydziel ) i dodaje to wciąż do zmiennej $policz. Musisz więc sie do niej odwołać po zakończeniu pętli. Jako że jest ona zmienną lokalną dla while, to po zakończeniu pętli jest ona niszczona. Dlatego musisz minimalnie zmienić poprzednią część do postaci:
  1. $sql="SELECT * from gracze WHERE nr=29";
  2. $wynik=mysql_query($sql)or die("zle pytanie2".$sql);
  3. $policz = 0; //dzięki temu będzie to "zmienna globalna" dla pętli
  4. while ($rekord=mysql_fetch_row($wynik)){
  5. $ones = $rekord[4]." ".$rekord[5];
  6. $wydziel = substr_count($ones, "1");
  7. $policz += $wydziel;
  8. }
  9. echo $policz; //dzieki wywaleniu przed pętlę tej zmiennej mamy do niej dostęp tutaj

Dzięki deklaracji i inicjalizacji $policz jeszcze przed pętlą, możemy się po zakończeniu pętli do niej odwołać.
Sprawdź sobie zresztą na kod a sam dojdziesz do wniosku, że to nie array, nie string, a poczciwy int, ale wielokrotnie wypisany na ekran (IMG:style_emoticons/default/smile.gif)
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 - 03:10