HTML/PHP/AJAX/JS - Wyciągnięcie ilości pozycji z tabeli bazy danych
tymek - 12-05-2009, 13:06 Temat postu: Wyciągnięcie ilości pozycji z tabeli bazy danych Witam!
Jakim zapytaniem (czyli co musze w php dopisac ;p), aby, przykładowo z tabeli "phpbb_postacie" wyciągnąć ilość dodanych pozycji -> pole: "postac_id"
? ;>
Bucu - 12-05-2009, 13:09
Kod: | <?
$wynik = mysql_query("SELECT `postac_id` FROM `phpbb_postacie`");
$wynik = mysql_num_rows($wynik);
print $wynik;
?> |
tymek - 12-05-2009, 13:11
Thx
Czyli to wklejam do pliku php, a od czego mam zrobić
'ilosc' => xxx,
aby po dodaniu do tpl {ilsoc} pokazywało mi tę liczbę ;>
Bucu - 12-05-2009, 13:13
to tablicy dajesz
a w tpl
tymek - 12-05-2009, 13:27
Bucu napisał/a: | to tablicy dajesz
a w tpl
|
hmm tutaj chyba powinno byc
'WYNIK' => $wynik
? ;>
Ogolnie sprawdziłem, i działa z tego print wyswietla ilosc pozycji, ale go wywaliłem, bo ma byc odnosnik w tpl. ale kiedy kiedy włąsnie tak zrobiłem, dodałem
'WYNIK' => $wynik
+ {WYNIK}, do tpl
to nic się nie wyświetla ;>
Co robie zle?
Aha, czy to zapytanie z wyciągnieciem ilosci, moge jakos podpiąc pod gotowe zapytanie ktore juz mam?
Kod: | $sql = 'SELECT poster_id, postac_id, image, postac_name, serial, website, sum, ile
FROM phpbb_postacie
WHERE zaakceptowana=1
ORDER BY postac_name ASC LIMIT ' . ($site-1)*50 . ',50';
$result = $db->sql_query($sql);
$template->assign_vars(array(
'OCZEKUJACE' => $o,
'MSG_OCZEKUJACE' => $msg_o,
'ALL' => append_sid("postacie.$phpEx?action=all&site=1"),
[...] |
Bucu - 12-05-2009, 13:34
tymek napisał/a: |
'WYNIK' => $wynik
? ;>
|
tak
pokickalo mi sie po prostu, masz racje ;P
Cytat: | to nic się nie wyświetla ;> |
cache forum wyczysc
mysle ze tak powinno byc dobrze:
Kod: | $sql = 'SELECT poster_id, postac_id, image, postac_name, serial, website, sum, ile
FROM phpbb_postacie
WHERE zaakceptowana=1
ORDER BY postac_name ASC LIMIT ' . ($site-1)*50 . ',50';
$result = $db->sql_query($sql);
mysql_num_rows($result);
$template->assign_vars(array(
'OCZEKUJACE' => $o,
'MSG_OCZEKUJACE' => $msg_o,
'WYNIK' => $result,
'ALL' => append_sid("postacie.$phpEx?action=all&site=1"), |
tymek - 12-05-2009, 13:47
Hmm w php błędu nie wyswietla
Ale nadal mi nie wyswietla tej liczby ;>
Tak to dokładnie wygląda:
Kod: | $sql = 'SELECT poster_id, postac_id, image, postac_name, serial, website, sum, ile
FROM phpbb_postacie
WHERE zaakceptowana=1
ORDER BY postac_name ASC LIMIT ' . ($site-1)*50 . ',50';
$result = $db->sql_query($sql);
mysql_num_rows($result); |
+
Kod: | $lp++;
$image = explode('_', $row['image']);
$image_big = $image[0].'.jpg';
$template->assign_block_vars('postacie_block', array(
'WYNIK' => $result,
'GLOSUJ' => $glosuj,
|
i w tpl:
Kod: | {postacie_block.WYNIK} |
Bucu - 12-05-2009, 13:54
srpawdz takie cos
Kod: | $wynik = mysql_num_rows($sql); |
a w tablicy
warna - 12-05-2009, 14:50
tymek, jaki sens wrzucać jedną liczbę do bloku? Chyba, że chcesz to wyświetlać przy każdym wierszu z postacią, ale to bez sensu.
Masz tam taki kawałek:
Kod: | $template->assign_vars(array(
'OCZEKUJACE' => $o,
'MSG_OCZEKUJACE' => $msg_o,
'ALL' => append_sid("postacie.$phpEx?action=all&site=1"),
'ALLNEW' => append_sid("postacie.$phpEx?action=allnew&site=1"),
'DODAJ' => append_sid("postacie.$phpEx?action=new"),
'IMAGE' => $lang['image'],
'POSTAC' => $lang['postac'],
'SERIAL' => $lang['serial'],
'OCEN' => $lang['ocen'],
'OCENA' => $lang['ocena'],
'TOPLISTA' => $lang['toplista'],
'E'=> $e,
'X'=> $x,
));
$sql = 'SELECT poster_id, postac_id, image, postac_name, serial, website, sum, ile, sum/ile AS avg
FROM phpbb_postacie
WHERE ile>0 AND zaakceptowana=1
ORDER BY avg DESC LIMIT 100';
$result = $db->sql_query($sql); |
Zamień miejscami ("porządek musi być") i dopisz co potrzebujesz. Cały kod wygląda tak:
Kod: | $sql = 'SELECT poster_id, postac_id, image, postac_name, serial, website, sum, ile, sum/ile AS avg
FROM phpbb_postacie
WHERE ile>0 AND zaakceptowana=1
ORDER BY avg DESC LIMIT 100';
$result = $db->sql_query($sql);
$ile = $db->sql_numrows($result);
$template->assign_vars(array(
'OCZEKUJACE' => $o,
'MSG_OCZEKUJACE' => $msg_o,
'ALL' => append_sid("postacie.$phpEx?action=all&site=1"),
'ALLNEW' => append_sid("postacie.$phpEx?action=allnew&site=1"),
'DODAJ' => append_sid("postacie.$phpEx?action=new"),
'ILE' => $ile;
'IMAGE' => $lang['image'],
'POSTAC' => $lang['postac'],
'SERIAL' => $lang['serial'],
'OCEN' => $lang['ocen'],
'OCENA' => $lang['ocena'],
'TOPLISTA' => $lang['toplista'],
'E'=> $e,
'X'=> $x,
)); |
I w tpl gdzie chcesz (choć odradzałbym w środku bloku.
Bucu, naucz się korzystać z klasy db. W końcu po coś ona jest w skrypcie.
tymek - 12-05-2009, 15:23
Oki, ładnie sie wyswietla i działa
Thx Warna
Ale mam jeszcze z tym problemik, jak chce umiescic to na stronie "zobacz wszystkie" - tam jest zastosowana paginacja, po 50 pozycji na strone, wtedy wyswietla mi ilosc pozycji na danej stronie, a nie ilosc wszystkich pozycji ;>
Da rade zeobic, zeby wyswietlało ilsoc wszystkich pozycji z bazy?
warna - 12-05-2009, 19:04
To przez "LIMIT 100". Aktualnie widzę tylko rozwiązanie w dodatkowym zapytaniu, bo nie chce mi się myśleć
Kod: | $sql = "SELECT COUNT(postac_id) AS ilosc
FROM phpbb_postacie
WHERE ile>0 AND zaakceptowana=1";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result)
$template->assign_vars(array('ILE' => $row['ilosc'])); |
tymek - 13-05-2009, 10:28
Oki, zaraz sprawdzę
A czy zamiast poster_id, moze być postac_id ;>
[ Dodano: 13-05-2009, 13:04 ]
Oki wszystko działa
Tylko, jak dac tutaj:
Kod: | WHERE ile>0 AND zaakceptowana=1"; |
warunek, większe, równe, zero??
Dałem cos takiego:
Kod: | WHERE ile>-1 AND zaakceptowana=1"; |
moze tak byc?
warna - 13-05-2009, 16:32
tymek napisał/a: | A czy zamiast poster_id, moze być postac_id ;> |
postac_id, fakt. Pomyłka.
Fakt, nie wziąłem pod uwagę postaci z liczbą głosów równą zero. Nie prościej:
Kod: | WHERE zaakceptowana=1"; |
?
Jeśli koniecznie chciałbyś "większe lub równe" to jest to operator >=
tymek - 14-05-2009, 15:01
qrde nie pomyślałem o tym xD
Dzięki
A jak do tego kodu:
Kod: | $sql = "SELECT p.vote_rate, u.username, u.user_id
FROM (phpbb_postacie_rates AS p)
LEFT JOIN " . USERS_TABLE . " AS u
ON (p.vote_user_id = u.user_id)
WHERE vote_postac_id = " . intval($HTTP_GET_VARS['pid']);
$result = $db->sql_query($sql); |
Dodać porządkowanie wg oceny? (aktualnie jest, wg kolejnosci wystawienia oceny)? ;>
warna - 14-05-2009, 16:26
Kod: | $sql = "SELECT p.vote_rate, u.username, u.user_id
FROM (phpbb_postacie_rates AS p)
LEFT JOIN " . USERS_TABLE . " AS u
ON (p.vote_user_id = u.user_id)
WHERE vote_postac_id = " . intval($HTTP_GET_VARS['pid']) . "
"ORDER BY vote_rate DESC"; |
|
|
|