Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php/mysql] TOP 10
zaba12
post
Post #1





Grupa: Zarejestrowani
Postów: 223
Pomógł: 0
Dołączył: 29.08.2003
Skąd: Gliwice

Ostrzeżenie: (10%)
X----


Witam mam problem chciałbym zrobic top 10 oto chodzi ze chce zrobic by pierwszy rekord co ma najwiecej glosow byl na poczatku i byly wyswietlane jego wszystkie dane a reszta pod nim w tym problem ze nie wiem jak to zrobic a to kod jaki udalo mi sie narazie napisac.

  1. <?
  2.  
  3. function top10()
  4. {   global $id,$glosy;
  5. $query = "SELECT * FROM top10 ORDER BY glosy DESC";
  6. $result = mysql_query ($query);
  7. while ($row = mysql_fetch_array($result)) {
  8. $id = $row['id'];
  9. $tytul_gry = $row['gra'];
  10. $producent = $row['producent'];
  11. $dystrybutor = $row['dystrybutor'];
  12. $gatunek = $row['gatunek'];
  13. $ocena = $row['ocena'];
  14. $glosy = $row['glosy'];
  15. $premiera = $row['premiera'];
  16. $opis = $row['opis'];
  17.  
  18. echo '<table> <tr><td>'.$id.' '.$tytul_gry.' '.$producent.
  19. '.$dystrybutor.' '.$gatunek.' '.$ocena.' Głosy: 
  20. '.$glosy.' <a href="index.php?mode=top10&act=up&id2='.$id.'">UP</a>  '.$premiera.' </td></tr></table>';
  21.  }
  22. if (!$glosy) {echo' Pierwsze miejsce '.$id.' ';}
  23. }
  24.  
  25. ?>


Ten post edytował zaba12 23.10.2005, 20:12:25
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
mhs
post
Post #2





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


Trudno mi powiedzieć jak miałoby wyglądać zapytanie z racji tego, że nie znam struktury bazy danych (a z tego co mi się wydaje możesz mieć tutaj jakiś błąd).

Ok, napisałeś jakiś kawałek kodu? I co się dzieje? Działa prawidłowo, nie działa? Może jakieś błędy Ci się pojawiają? Napisz coś więcej bym mógł udzielić Ci precyzyjniejszej odpowiedzi (pokaż kod tworzący bazę danych).

Pozdrawiam.
Go to the top of the page
+Quote Post
gam3r
post
Post #3





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 8.06.2005

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


pomógłbym ci stary, ale nie bardzo wiem w czym problem, na pierwszy rzut oka to jest ok, powiedz co ci nie działa, co chcesz (dokładnie) mieć za rezultat na ekranie, jaka struktura bazy danych, i co w zmiennej $glosy przechowujesz?

Ten post edytował gam3r 23.10.2005, 20:34:33
Go to the top of the page
+Quote Post
zaba12
post
Post #4





Grupa: Zarejestrowani
Postów: 223
Pomógł: 0
Dołączył: 29.08.2003
Skąd: Gliwice

Ostrzeżenie: (10%)
X----


oto jest baza danych.
  1. CREATE TABLE `top10` (
  2. `id` int(8) NOT NULL AUTO_INCREMENT,
  3. `tytul_gry` varchar(255) NOT NULL DEFAULT '',
  4. `producent` varchar(255) NOT NULL DEFAULT '',
  5. `opis` text NOT NULL,
  6. `gatunek` varchar(255) NOT NULL DEFAULT '',
  7. `ocena` int(8) NOT NULL DEFAULT '0',
  8. `glosy` int(8) NOT NULL DEFAULT '0',
  9. `premiera` varchar(255) NOT NULL DEFAULT '',
  10. KEY `id` (`id`)
  11. );

i chodzi mi oto zeby zrobic cos takiego

Go to the top of the page
+Quote Post
bieniek
post
Post #5





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 6.07.2005

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


na mój gust znaczniki <table> powinny być poza pętlą while, a w jej wnętrzu generować powinieneś tylko rzędty tabeli !


--------------------
Go to the top of the page
+Quote Post
zaba12
post
Post #6





Grupa: Zarejestrowani
Postów: 223
Pomógł: 0
Dołączył: 29.08.2003
Skąd: Gliwice

Ostrzeżenie: (10%)
X----


Niestety nic to nie dalo ;/ nie wiem jak to zrobic pomoze ktoś proszę.

Ten post edytował zaba12 24.10.2005, 14:43:07
Go to the top of the page
+Quote Post
piwoszeq
post
Post #7





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 13.01.2005
Skąd: warszawa

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


malo sie znam na php ale mozna to zrobic ze jesli pierwszy wynik to wyswietla "to" a jestli nie to "tamto" biggrin.gif

  1. <?php
  2.  
  3. if ($result[0])
  4. {
  5. #to wyswitla cos tam biggrin.gif
  6. }
  7. else
  8. {
  9. #dla innych biggrin.gif
  10. }
  11.  
  12. ?>


Nie chlostajcie mnie jak zle poradzilem tongue.gif
Go to the top of the page
+Quote Post
zaba12
post
Post #8





Grupa: Zarejestrowani
Postów: 223
Pomógł: 0
Dołączył: 29.08.2003
Skąd: Gliwice

Ostrzeżenie: (10%)
X----


Niestety nic to niepomogło
Go to the top of the page
+Quote Post
bela
post
Post #9


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


Chodzi o naprzemienne kolorowanie wierszy? Było już 1000 razy. Wystarczy dzielenie modulo w pętli.


--------------------
Go to the top of the page
+Quote Post
piwoszeq
post
Post #10





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 13.01.2005
Skąd: warszawa

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


Cytat(bela_666 @ 2005-10-24 15:38:55)
Chodzi o naprzemienne kolorowanie wierszy? Było już 1000 razy. Wystarczy dzielenie modulo w pętli.

czytaj uwaznie smile.gif
Go to the top of the page
+Quote Post
Ociu
post
Post #11





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Można iść prostą drogą i zrobić dwa zapytania.
Go to the top of the page
+Quote Post
gam3r
post
Post #12





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 8.06.2005

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


żeby to wyglądało mniej wiecej tak jak na rysunku, powinieneś zrobić tak:
-najpierw utworzyc zapytanie ktore wybierze z bazy gry według największe liczby głosów (limit:10 gier),
-następnie dla pierwszego tytułu na liście wyświetlasz większą ilość informacji
- a dla kolejnych tytułów tylko linki do gier i króciutkie opisy
  1. <?php
  2.  
  3. function top10()
  4. {
  5.  $query = "SELECT * FROM top10 ORDER BY glosy DESC limit 10"; 
  6.  $result = mysql_query ($query);
  7.  
  8.  echo"<table>";//otwieram tabele
  9.  while ($row = mysql_fetch_array($result))
  10.  {
  11.  $id = $row['id'];
  12.  $tytul_gry = $row['gra'];
  13.  $producent = $row['producent'];
  14.  $dystrybutor = $row['dystrybutor'];
  15.  $gatunek = $row['gatunek'];
  16.  $ocena = $row['ocena'];
  17.  $glosy = $row['glosy'];
  18.  $premiera = $row['premiera'];
  19.  $opis = $row['opis'];
  20.  
  21.  if(!isset($czy__nie_jest_to_pierwszy_tytul_na_liscie))
  22.  {
  23.  //jeżeli jest to pierwszy tytuł na liście to wyświetlamy więcej informacji
  24.  echo"<tr><td>";//otwieram wiersz tabelki
  25.  // teraz wyświetlasz jakieś tam rozszerzone informacje na temat tytułu
  26.  echo"</td></tr>";//zamykam wiersz tabelki
  27.  }
  28.  else
  29.  {
  30.  //jeżeli nie jest to pierwszy tytuł to wyświetlamy tylko nagłówki i troche info
  31.  echo"<tr><td>";//otwieram wiersz tabeli
  32.  //jakieś skrócone informacje na temat gry
  33.  echo"</td></tr>";//zamykam wiersz tabeli
  34.  }
  35.  
  36.  $czy_nie_jest_to_pierwszy_tytul_na_liscie=true;
  37.  }
  38.  
  39.  echo"</table>";//zamykam tabele
  40. }
  41.  
  42. ?>

Krótki opis działania:
pobierane jest 10 tytułów które uzyskały najwięcej głosów, następnie jest pętla while , jeżeli aktualny tytuł gry jest pierwszym i powinien być wyświetlony w rozszerzonej formie to wtedy mamy pierwszą instrukcję if, jeżeli jest to kolejny tytuł do wyświetlenia to wtedy otrzymujemy skrócone informacje na temat gry. Mam nadzieję że wszystko w miarę jasno opisałem, jeśli nie to pisz tongue.gif
Go to the top of the page
+Quote Post
zaba12
post
Post #13





Grupa: Zarejestrowani
Postów: 223
Pomógł: 0
Dołączył: 29.08.2003
Skąd: Gliwice

Ostrzeżenie: (10%)
X----


niestety to tez nic nie pomogło
Go to the top of the page
+Quote Post
gam3r
post
Post #14





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 8.06.2005

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


ja wiem że to nic nie pomogło, bo powinieneś to jeszcze uzupełnić swoimi danymi:/ sory ale ja za ciebie skryptu nie napisze, właściwie to o co ci chodzi? bo jak dla mnie to mniej wiecej wszystko jest ok, ale co ci nie działa? :/
Go to the top of the page
+Quote Post
zaba12
post
Post #15





Grupa: Zarejestrowani
Postów: 223
Pomógł: 0
Dołączył: 29.08.2003
Skąd: Gliwice

Ostrzeżenie: (10%)
X----


uzupełnilem swojimi danymi ale kupa niedziala ;/ sprawdzalem przed chwilą.
Go to the top of the page
+Quote Post
bieniek
post
Post #16





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 6.07.2005

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


No ale napisz w końcu co nie działa, bo jak dla mnie to masz bardziej problem z HTML niż z php bo rozwiązanie pokazane na górze (gam3r) jest jak najbardziej poprawne.


--------------------
Go to the top of the page
+Quote Post
Ociu
post
Post #17





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Ja był daj zamiast $czy__nie_jest_to_pierwszy_tytul_na_liscie sprawdzianie czy id = 0
  1. <?php
  2. if($id == 0)
  3. ?>


pozdrawiam
Go to the top of the page
+Quote Post
gam3r
post
Post #18





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 8.06.2005

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


Cytat
Ja był daj zamiast $czy__nie_jest_to_pierwszy_tytul_na_liscie sprawdzianie czy id = 0
moze też i tak być bo tam sprawdza czy zmienna ta istnieje więc obojętnie jaka tam jest wartość, a ty zaba masz w ogóle połączenie z bazą danych otware? czy masz uruchomioną baze danych(serwer bazy danych)? masz w ogóle php zainstalowane i serwer? smile.gif
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: 22.08.2025 - 01:50