Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] skomplikowane zapytanie
Forum PHP.pl > Forum > Przedszkole
fredzio90
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
sticker
zapomniałeś o schemacie bazki
fredzio90
  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
uli
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'
Darti
  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
fredzio90
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
Darti
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. ?>
fredzio90
dziękuje bardzo, oczywiście działa guitar.gif biggrin.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.