Skocz do zawartości


Zdjęcie

[php] toplista


  • Zaloguj się, aby dodać odpowiedź
21 odpowiedzi w tym temacie

#1 B3X!O

B3X!O

    Początkujący

  • 27 postów

Napisano 12 03 2011 - 00:03

Siemanko. Mam mały problem z forum: http://idiotic.boo.pl
Otóż, każdy temat ma opcję "zagłosuj", chciałbym zrobić tak, aby po prawej stronie (na stronie głównej) wyświetlały się najwyżej oceniane tematy z poszczególnych działów. Co należy zrobić/wpisać, aby takowa opcja działała? Czy jest ktoś w stanie napisać taki skrypt?

  • 0

#2 Saletra

Saletra

    Zaawansowany użytkownik

  • 937 postów

Napisano 12 03 2011 - 07:59

Nie ma większego problemu. Znajdź tabelkę z tematami, a w niej pole z oceną. Tworzysz potem właściwe zapytanie, np:

SELECT id, temat FORM tematy ORDER by ocena DESC LIMIT 0,3




#3 B3X!O

B3X!O

    Początkujący

  • 27 postów

Napisano 12 03 2011 - 12:16

Ale ja Ci powiem, że nie znam się kompletnie na PHP :)
  • 0

#4 makensis

makensis

    Naczelny

  • 5 036 postów

Napisano 12 03 2011 - 12:34

To nie jest PHP tylko mySQL. Do panelu mySQL możesz wejść bezpośrednio (z opisu podanego w mailu od boo.pl) lub wpanelu administracyjnym boo.pl pod hasłem: phpMyAdmin.
  • 0

#5 B3X!O

B3X!O

    Początkujący

  • 27 postów

Napisano 12 03 2011 - 14:19

Czyli ten kod Seletry jest poprawny, czy to tylko przykład?
  • 0

#6 Macsch15

Macsch15

    Profesjonalista

  • 3 705 postów

Napisano 12 03 2011 - 18:26

Przykład. :)
Widze że masz MyBB więc będzie wyglądać mniej więcej tak
SELECT `totalratings` FROM `mybb_threads` ORDER BY `totalratings` DESC LIMIT 0,3;


gdzie mybb_ tam Twój prefix bazy danych. Zwróci Tobie 3 wyniki najwyżej ocenianych wątków (jak chcesz więcej, zmień LIMIT 0,3 na np LIMIT 0,5)
  • 0

#7 B3X!O

B3X!O

    Początkujący

  • 27 postów

Napisano 12 03 2011 - 18:43

Maciek, dzięki za pomoc, ale to nic nie dało. Wkleiłem to w tabelkę i nic się nie wyświetliło, tylko ten goły kod. Poza tym, to nie chcę najwyżej ocenianych postów całego forum, tylko poszczególnych działów.
  • 0

#8 Macsch15

Macsch15

    Profesjonalista

  • 3 705 postów

Napisano 12 03 2011 - 19:02

Heh, nie doczytałem że z konkretnego forum, więc tak:
SELECT `totalratings` FROM `mybb_threads` WHERE `fid` = '3' ORDER BY `totalratings` DESC LIMIT 0,5


Gdzie:
WHERE `fid` = '3'

Tam ID konkretnego forum.

Wkleiłem to w tabelkę i nic się nie wyświetliło



Jak to w tabelkę ? Masz to zapytanie wywołać przez PHP a potem w templatkach MyBB dodać zmienną która wyniki wyświetli.
O własnym PHP w mybb:
http://wiki.mybboard.pl/kod-php-w-szablonach-jak-zaincludowac-php-w-mybb

Poczytaj też o wywoływaniu zapytań w php
http://php.net/manual/en/function.mysql-query.php

A tu jeszcze jeden pomocny link:
http://www.kess.snug.pl/?sid=10&pid=43
  • 0

#9 B3X!O

B3X!O

    Początkujący

  • 27 postów

Napisano 12 03 2011 - 20:04

Powiesz mi jak mam dodać "zmienną"?
  • 0

#10 Macsch15

Macsch15

    Profesjonalista

  • 3 705 postów

Napisano 12 03 2011 - 20:16

Samą zmienną ? Ależ prosze bardzo :>
$nazwa = zawartosc;

  • 0

#11 B3X!O

B3X!O

    Początkujący

  • 27 postów

Napisano 12 03 2011 - 20:41

Kiedy wkleiłem do functions.php:

ob_start();
SELECT `totalratings` FROM `mybb_threads` WHERE `fid` = '6' ORDER BY `totalratings` DESC LIMIT 0,5
$php = ob_get_contents();
ob_end_clean();

Wpierw linijkę nad, a potem przed (bo nad nie działało)
function output_page($contents)

To teraz zamiast forum wyświetla mi się białe pole z napisem:
Parse error: syntax error, unexpected '`' in /home/accounts_b/bexio/public_html/inc/functions.php on line 18

Poza tym, to na wiki mybboard jest napisane, iż mam gdzieś wkleić zmienną. Postanowiłem, że wkleję do szablonu strony głównej. Mianowicie gdzie mam ją dodać?

Użytkownik B3X!O edytował ten post 12 03 2011 - 20:46

  • 0

#12 Macsch15

Macsch15

    Profesjonalista

  • 3 705 postów

Napisano 12 03 2011 - 20:50

Jeśli już to tak:
mysql_query("SELECT `totalratings` FROM `mybb_threads` WHERE `fid` = '6' ORDER BY `totalratings` DESC LIMIT 0,5");

Ale takie coś Ci nic nie da, bo ne wyświetli wartości zwróconych, zajrzyj do ostatniego linku z mojego postu nr #8 a powinieneś połączyć to w jedną całość.

Poza tym, zamiast pchać się do "mysql_query" lepiej by było jakbyś wypatrzył w jakimś dodatku do mybb który wybiera jakieś wartości bazy danych, składnię tych zapytań i wykorzystanie do własnego, zalety tego takie że nie musiałbyś wpisywać ponownie danych dostępowych do SQL'a tylko skrypt by pobrał je z danych wpisanych przy instalacji skrypu.

  • 0

#13 B3X!O

B3X!O

    Początkujący

  • 27 postów

Napisano 12 03 2011 - 21:19

Spójrz teraz na ten błąd na forum. O co kaman?
  • 0

#14 Macsch15

Macsch15

    Profesjonalista

  • 3 705 postów

Napisano 12 03 2011 - 21:36

Dlaczego dalej nie robisz tego co pisałem?
Dobra... nie ważne...
Nie masz połączenia z bazą danych(co jest logiczne), mówi Ci to coś ? Jak nie to tu lektura: http://php.net/manual/en/function.mysql-connect.php
Jak już się połączysz z bazą, kolejna lektura, czyli wykonanie zapytania i wyświetlenie w tabelkach wyniku podałem w ostatnim linku posta #6 czyli: http://www.kess.snug.pl/?sid=10&pid=43
Gdy spełnisz kolejny punkt, wpisz w tempalach, tam gdzie tworzyłeś tą pustą tabele, zmienną która wyświetli tabele z wynikami. :)

Podałem Ci wszystko co jest potrzebne, na forum możemy Ci tylko pomóc, nie dostaniesz gotowca, dlatego czas abyś włączył myślenie.

PS: Nie pisz na PW bo od pomocy nie jest GG, tylko forum.
  • 0

#15 B3X!O

B3X!O

    Początkujący

  • 27 postów

Napisano 12 03 2011 - 21:45

Co do pierwszego linka. To co ja mam właściwie zrobić? Utworzyć plik o nazwie mysql_connect.php, wkleić zawartość podmieniając wymagane dane i wrzucić to gdzieś na serwer, czy jak?
  • 0

#16 Saletra

Saletra

    Zaawansowany użytkownik

  • 937 postów

Napisano 12 03 2011 - 21:47

ob_start();
SELECT `totalratings` FROM `mybb_threads` WHERE `fid` = '6' ORDER BY `totalratings` DESC LIMIT 0,5
$php = ob_get_contents();
ob_end_clean();

Połączenie z bazą tworzy Ci CMS. Musisz tylko znaleźć odpowiednie miejsce dla kodu - miejsce, w którym mają się pokazywać tematy i wstawić tam kod.

$pobierz = mysql_query("SELECT id,temat FROM mybb_threads WHERE ORDER BY totalratings DESC LIMIT 0,5");


Użytkownik Saletra edytował ten post 12 03 2011 - 21:48


#17 B3X!O

B3X!O

    Początkujący

  • 27 postów

Napisano 12 03 2011 - 21:51

x] Nic nie umiem, a teraz jeszcze mniej. Tak mi na gmatwaliście, że teraz nic nie rozumiem. :)
Wyświetliło mi błąd. Muszę zrobić połączenie - jak?

Użytkownik B3X!O edytował ten post 12 03 2011 - 23:11

  • 0

#18 B3X!O

B3X!O

    Początkujący

  • 27 postów

Napisano 15 03 2011 - 16:29

Bump! Pozwólcie, że podbiję, bo mój temat został chyba rzucony w niepamięć. :)
  • 0

#19 Macsch15

Macsch15

    Profesjonalista

  • 3 705 postów

Napisano 15 03 2011 - 16:49

Dalej czekasz na gotowca? Dlaczego nie użyłeś google chociaż po to, żeby sie dowiedzieć jak połączyć sie z mysql przez php?


mysql_connect(host, user, haslo) or die(mysql_error());

Potem wybierasz konkretną bazę

mysql_select_db("tabela_mybb");

Potem wykonujesz zapytanie

mysql_query("SELECT `totalratings` FROM `mybb_threads` WHERE `fid` = '6' ORDER BY `totalratings` DESC LIMIT 0,5");

A następnie wyświetlasz w tabeli: http://www.kess.snug.pl/?sid=10&pid=43
  • 0

#20 B3X!O

B3X!O

    Początkujący

  • 27 postów

Napisano 15 03 2011 - 19:40

Co mam napisać w tabela_mybb? :)

BTW: Potrzebuję gotowca, bo nie zależy mi na nauce języków, zajmuję się innymi rzeczami. :)

Użytkownik B3X!O edytował ten post 15 03 2011 - 19:41

  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych