Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] TOP 10
Forum PHP.pl > Forum > PHP
zaba12
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. ?>
mhs
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.
gam3r
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?
zaba12
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

bieniek
na mój gust znaczniki <table> powinny być poza pętlą while, a w jej wnętrzu generować powinieneś tylko rzędty tabeli !
zaba12
Niestety nic to nie dalo ;/ nie wiem jak to zrobic pomoze ktoś proszę.
piwoszeq
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
zaba12
Niestety nic to niepomogło
bela
Chodzi o naprzemienne kolorowanie wierszy? Było już 1000 razy. Wystarczy dzielenie modulo w pętli.
piwoszeq
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
Ociu
Można iść prostą drogą i zrobić dwa zapytania.
gam3r
ż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
zaba12
niestety to tez nic nie pomogło
gam3r
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? :/
zaba12
uzupełnilem swojimi danymi ale kupa niedziala ;/ sprawdzalem przed chwilą.
bieniek
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.
Ociu
Ja był daj zamiast $czy__nie_jest_to_pierwszy_tytul_na_liscie sprawdzianie czy id = 0
  1. <?php
  2. if($id == 0)
  3. ?>


pozdrawiam
gam3r
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.