Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] skomplikowane zapytanie
fredzio90
post 13.06.2007, 19:22:48
Post #1





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 19.02.2007

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


otóż mam ranking, na stronie głównej jest tabelka, w niej jest pole Punkty, punkty są liczone przez pomnożenie średniej oceny przez ilość głosów na daną rzecz.... i chodzi mi o to że jak na innych stornach odczytywać pozycję danej rzeczy, chodzi mi tutaj :

pozycja/ilość wszystkich wpisów.. niewiem czy wytłumaczyłem, ale ktoś na innym forum zaproponował mi tkaie zapytanie:

  1. <?php
  2. $zap_poz = mysql_query("SELECT COUNT(*)+1 FROM (SELECT il_glosow*srednia_ocena FROM $rank_club_tbl WHERE il_glosow*srednia_
    ocena > (SELECT il_glosow*srednia_ocena FROM $rank_club_tbl WHERE nazwa='$id'))"
    );
  3. ?>


lecz niestey nie działa...

w skrócie, odczytywanie z bazy, punktów (śr. głosów * ilość głosów) danego wpisu, segregowanie go od największej ilośći punktów do najmniejszej, i podać aktualną pozycję wpisu

np:

4/242

Ten post edytował fredzio90 13.06.2007, 19:25:01
Go to the top of the page
+Quote Post
sticker
post 13.06.2007, 21:12:39
Post #2





Grupa: Zarejestrowani
Postów: 611
Pomógł: 19
Dołączył: 28.02.2005
Skąd: Wrocław

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


zapomniałeś o schemacie bazki


--------------------
Go to the top of the page
+Quote Post
fredzio90
post 13.06.2007, 22:24:47
Post #3





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 19.02.2007

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


  1. CREATE TABLE `ranking_klubow` (
  2. `id` int(8) NOT NULL AUTO_INCREMENT ,
  3. `nazwa` varchar(64) NOT NULL ,
  4. `miejscowosc` varchar(32) NOT NULL DEFAULT '',
  5. `wojewodztwo` varchar(32) NOT NULL DEFAULT '',
  6. `adres` text NOT NULL DEFAULT '',
  7. `kod_pocztowy` varchar(6) NOT NULL DEFAULT '',
  8. `telefon` varchar(25) NOT NULL DEFAULT '',
  9. `fax` varchar(25) NOT NULL DEFAULT '',
  10. `mail` varchar(32) NOT NULL DEFAULT '',
  11. `www` text NOT NULL DEFAULT '',
  12. `opis` varchar(255) NOT NULL DEFAULT '',
  13. `polecamy` int(2) NOT NULL DEFAULT '0',
  14. `typ` varchar(2) NOT NULL DEFAULT '0',
  15. `odslon` int(8) NOT NULL DEFAULT '0',
  16. `srednia_ocena` double(5,2) NOT NULL DEFAULT '0.00',
  17. `il_glosow` int(6) NOT NULL DEFAULT '0',
  18. `ip` varchar(32) NOT NULL DEFAULT '',
  19. `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  20. PRIMARY KEY (`id`)
  21. ) ENGINE = MYISAM ;


proszę tongue.gif
Go to the top of the page
+Quote Post
uli
post 14.06.2007, 07:02:49
Post #4





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

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


Zapytanie wygląda ok (przynajmniej dla mnie, choć nie jestem aż tak zaawansowany), ale jedna rzecz mnie zastanawia:

  1. WHERE nazwa = '$id'


Co jest Twoim $id? Bo jeśli to naprawdę pole id to powinno być:
  1. WHERE id = '$id'


a jeśli po zmiennej ktora jest nazwą:
  1. WHERE nazwa = '$nazwa'


Ten post edytował uli 14.06.2007, 07:05:09


--------------------
Prawo Wylera:
Nie ma rzeczy niemożliwych dla kogoś, kto nie musi ich zrobić sam.
Go to the top of the page
+Quote Post
Darti
post 14.06.2007, 09:27:56
Post #5





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


  1. SELECT COUNT(*)+1 FROM ( (SELECT il_glosow*srednia_ocena FROM ranking_klubow WHERE il_glosow*srednia_ocena >
  2. (SELECT il_glosow*srednia_ocena FROM ranking_klubow WHERE nazwa='1'))) AS B


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
fredzio90
post 14.06.2007, 11:12:53
Post #6





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 19.02.2007

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


moij adres wygląda tak:

costamcostam.php?cmd=pokaz&id=NAZWA

nie numerek tylko nazwa danego wpisu, lepiej indexowane przez google ;P

PS. te zapytanie co podałęś dałem tak:

  1. <?php
  2. $zap_poz = mysql_query("SELECT COUNT(*)+1 FROM ( (SELECT il_glosow*srednia_ocena FROM ranking_klubow WHERE il_glosow*srednia_
    ocena > (SELECT il_glosow*srednia_ocena FROM ranking_klubow WHERE nazwa='$id'))) AS B"
    );
  3. ?>

i dałem to w echo... iu pokazazuje: Resource id #30 a id jest woogule inny
Go to the top of the page
+Quote Post
Darti
post 14.06.2007, 11:20:46
Post #7





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


Cytat(fredzio90 @ 14.06.2007, 10:12:53 ) *
w echo... iu pokazazuje: Resource id #30 a id jest woogule inny


bo masz dac:
  1. <?php
  2. $ilosc = mysql_fetch_array($zap_poz);
  3. echo $ilosc[0];
  4. ?>


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
fredzio90
post 14.06.2007, 13:29:03
Post #8





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 19.02.2007

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


dziękuje bardzo, oczywiście działa guitar.gif biggrin.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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 14:18