Top 25 berichten (eerste mod van mij)

Hulp nodig bij een modificaties of op zoek naar een MOD? Bekijk ons archief. Support wordt helaas niet meer verleend.
Forumregels

Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
phpBB2.0.x
Gesloten
SennA
Berichten: 14
Lid geworden op: 06 mar 2004, 22:47
Locatie: Veenendaal

Top 25 berichten (eerste mod van mij)

Bericht door SennA » 16 aug 2004, 15:28

Hallo iedereen.

Ben vandaag ff bezig geweest en heb voor het eerst een stuk voor phpbb gemaakt met behulp van een tamplate. Hopelijk vinden jullie het wat.

http://www.reev.nl/top25mod.zip

Als jullie hulp nodig hebben moet je het even zeggen, maar ik denk dat het wel duidelijk is.

Gebruikersavatar
WebSiteNet
Berichten: 6524
Lid geworden op: 20 okt 2003, 16:56
Locatie: Wieringerwerf
Contacteer:

Bericht door WebSiteNet » 16 aug 2004, 15:32

En wat doet de mod? Heb je een pagina waar hij al op staat?

Mandrake Linux
Berichten: 521
Lid geworden op: 29 jan 2004, 22:41
Contacteer:

Bericht door Mandrake Linux » 16 aug 2004, 15:57

http://www.forum.stophier.nl/viewtop25.php
i heb hem maar er eens gezet
maar dan krijg je een leuke fout melding :D

Coen
Berichten: 5387
Lid geworden op: 03 aug 2004, 10:25

Bericht door Coen » 16 aug 2004, 16:00

uhuh, omdat je die tabel niet hebt aangemaakt, staat ongeveer letterlijk in die error.... :wink:

Mandrake Linux
Berichten: 521
Lid geworden op: 29 jan 2004, 22:41
Contacteer:

Bericht door Mandrake Linux » 16 aug 2004, 16:04

der staat niks van tables
in die zip
dus...

SennA
Berichten: 14
Lid geworden op: 06 mar 2004, 22:47
Locatie: Veenendaal

Bericht door SennA » 16 aug 2004, 16:24

Mandrake Linux schreef:http://www.forum.stophier.nl/viewtop25.php
i heb hem maar er eens gezet
maar dan krijg je een leuke fout melding :D
Owh das waar ook

Bij mij staat de table prefix op forum_ :$, en niet op phpbb_. Moet je de query's ff veranderen.

PS: Nu snap ik ook wat "constants.php" doet onderaan met al die tabellen :P.

Mandrake Linux
Berichten: 521
Lid geworden op: 29 jan 2004, 22:41
Contacteer:

Bericht door Mandrake Linux » 16 aug 2004, 16:34

SennA schreef:
Mandrake Linux schreef:http://www.forum.stophier.nl/viewtop25.php
i heb hem maar er eens gezet
maar dan krijg je een leuke fout melding :D
Owh das waar ook

Bij mij staat de table prefix op forum_ :$, en niet op phpbb_. Moet je de query's ff veranderen.

PS: Nu snap ik ook wat "constants.php" doet onderaan met al die tabellen :P.
ok
w8ff

Mandrake Linux
Berichten: 521
Lid geworden op: 29 jan 2004, 22:41
Contacteer:

Bericht door Mandrake Linux » 16 aug 2004, 16:35

ok dat is goed
maar nu krijg ik weer een hele boel fouten
en ik denk dat ik weet wat
ik moet 25 topic openen
maar dit moet jecht veranderen hoor :D

SennA
Berichten: 14
Lid geworden op: 06 mar 2004, 22:47
Locatie: Veenendaal

Bericht door SennA » 16 aug 2004, 16:47

Mandrake Linux schreef:ok dat is goed
maar nu krijg ik weer een hele boel fouten
en ik denk dat ik weet wat
ik moet 25 topic openen
maar dit moet jecht veranderen hoor :D
Dat zou idd kunnen ja dat je nog ff 20 post moet maken :)

SennA
Berichten: 14
Lid geworden op: 06 mar 2004, 22:47
Locatie: Veenendaal

Bericht door SennA » 16 aug 2004, 16:52

Misschien als je dit in viewtop25.php vervangt:

Code: Selecteer alles

        $sql2 = "SELECT * FROM ".$table_prefix."posts_text ORDER BY CHAR_LENGTH(post_text) DESC LIMIT 26";
        if( !$result = $db->sql_query($sql2) )
        {
                message_die(GENERAL_ERROR, "Kon top25 data niet verkrijgen", "", __LINE__, __FILE__, $sql2);
        }
        $top_count = $db->sql_numrows($result);

        $top_rows = $db->sql_fetchrowset($result);

	for($i = 1; $i < $top_count; $i++)
	{
			$lengtebericht = strlen($top_rows[$i]['post_text']);
			$post_id = $top_rows[$i]['post_id'];
		$sql =  mysql_query("SELECT * FROM ".$table_prefix."posts WHERE post_id='".$post_id."'");
		$list = mysql_fetch_object($sql);
		$sql3 = mysql_query("SELECT * FROM ".$table_prefix."topics WHERE topic_id='".$list->topic_id."'");
		$show = mysql_fetch_object($sql3);
			$topic = $show->topic_title;
		$sql4 = mysql_query("SELECT * FROM ".$table_prefix."users WHERE user_id='".$list->poster_id."'");
		$record = mysql_fetch_object($sql4);
			$auteur = $record->username;

Mandrake Linux
Berichten: 521
Lid geworden op: 29 jan 2004, 22:41
Contacteer:

Bericht door Mandrake Linux » 16 aug 2004, 17:04

....
met wat
:S

SennA
Berichten: 14
Lid geworden op: 06 mar 2004, 22:47
Locatie: Veenendaal

Bericht door SennA » 16 aug 2004, 17:09

Mandrake Linux schreef:....
met wat
:S
Dit:

Code: Selecteer alles

        $sql2 = "SELECT * FROM forum_posts_text ORDER BY CHAR_LENGTH(post_text) DESC LIMIT 26";
        if( !$result = $db->sql_query($sql2) )
        {
                message_die(GENERAL_ERROR, "Kon top25 data niet verkrijgen", "", __LINE__, __FILE__, $sql2);
        }
        $top_count = $db->sql_numrows($result);

        $top_rows = $db->sql_fetchrowset($result);

	for($i = 1; $i < $top_count; $i++)
	{
			$lengtebericht = strlen($top_rows[$i]['post_text']);
			$post_id = $top_rows[$i]['post_id'];
		$sql =  mysql_query("SELECT * FROM forum_posts WHERE post_id='".$top_rows[$i]['post_id']."'");
		$list = mysql_fetch_object($sql);
		$sql3 = mysql_query("SELECT * FROM forum_topics WHERE topic_id='".$list->topic_id."'");
		$show = mysql_fetch_object($sql3);
			$topic = $show->topic_title;
		$sql4 = mysql_query("SELECT * FROM forum_users WHERE user_id='".$list->poster_id."'");
		while($record = mysql_fetch_object($sql4))
			$auteur = $record->username;
Vervangen voor dit:

Code: Selecteer alles

        $sql2 = "SELECT * FROM ".$table_prefix."posts_text ORDER BY CHAR_LENGTH(post_text) DESC LIMIT 26";
        if( !$result = $db->sql_query($sql2) )
        {
                message_die(GENERAL_ERROR, "Kon top25 data niet verkrijgen", "", __LINE__, __FILE__, $sql2);
        }
        $top_count = $db->sql_numrows($result);

        $top_rows = $db->sql_fetchrowset($result);

	for($i = 1; $i < $top_count; $i++)
	{
			$lengtebericht = strlen($top_rows[$i]['post_text']);
			$post_id = $top_rows[$i]['post_id'];
		$sql =  mysql_query("SELECT * FROM ".$table_prefix."posts WHERE post_id='".$post_id."'");
		$list = mysql_fetch_object($sql);
		$sql3 = mysql_query("SELECT * FROM ".$table_prefix."topics WHERE topic_id='".$list->topic_id."'");
		$show = mysql_fetch_object($sql3);
			$topic = $show->topic_title;
		$sql4 = mysql_query("SELECT * FROM ".$table_prefix."users WHERE user_id='".$list->poster_id."'");
		$record = mysql_fetch_object($sql4);
			$auteur = $record->username;
Grootste verschil is dat er nu onderin dit niet meer staat:

Code: Selecteer alles

$sql4 = mysql_query("SELECT * FROM forum_users WHERE user_id='".$list->poster_id."'"); 
      while($record = mysql_fetch_object($sql4)) 
         $auteur = $record->username;

Mandrake Linux
Berichten: 521
Lid geworden op: 29 jan 2004, 22:41
Contacteer:

Bericht door Mandrake Linux » 16 aug 2004, 17:20

super (y)
:thumb: :thumb: :idea: :idea:

Gebruikersavatar
WebSiteNet
Berichten: 6524
Lid geworden op: 20 okt 2003, 16:56
Locatie: Wieringerwerf
Contacteer:

Bericht door WebSiteNet » 16 aug 2004, 17:22

Je hebt de standaard php mysql functies gebruikt.

Dit zal niet echt werken. Je moet met het $db object werken.

SennA
Berichten: 14
Lid geworden op: 06 mar 2004, 22:47
Locatie: Veenendaal

Bericht door SennA » 16 aug 2004, 17:28

WebSiteNet schreef:Je hebt de standaard php mysql functies gebruikt.

Dit zal niet echt werken. Je moet met het $db object werken.
Dat moet ik dan nog even gaan uit zoeken! Misschien kan je beetje helpen?

Gebruikersavatar
mosymuis
Berichten: 6940
Lid geworden op: 05 feb 2003, 14:00
Locatie: Amsterdam
Contacteer:

Bericht door mosymuis » 17 aug 2004, 16:22

Allereerst raad ik je aan de officiële MOD template te gebruiken, net als een kloppend versie nummer. Neem voor dat en andere handige tutorials eens een kijkje in de phpbb.com knowledge database:
http://www.phpbb.com/kb/list_articles.php?category_id=7

Verder nog wat tips voor je mod:
  • Geef een $page_title op voor je de header include, dan krijgt je pagina een titel
  • Gebruik de constanten voor je tabelnamen, dus

    Code: Selecteer alles

    "SELECT * FROM " . POSTS_TEXT_TABLE . "
    in plaats van

    Code: Selecteer alles

    "SELECT * FROM forum_posts_text
    je bent dan ook van het prefix probleem af
  • Je begint je for() loop met 1, en geeft daarom een SQL limit aan van 26, ipv 25. Als je de het middelste stuk van je loop nu met een <= vergelijking schrijft kan de limit wel 25 blijven.
  • Waarom heb je een compleet deel van de pagina er dubbel in staan, de tweede keer tussen comments? Je zal het vast nodig gehad hebben bij het testen, maar let hier wel op als je de mod online zet voor het publiek.
  • Je gebruikt 4 query's waar je met ééntje genoeg hebt.

    Code: Selecteer alles

    SELECT u.user_id, u.username, t.topic_title, pt.post_text
    FROM " . USERS_TABLE . " u, " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p, " . POSTS_TEXT_TABLE . " pt
    WHERE pt.post_id = p.post_id
    AND p.topic_id = t.topic_id
    AND t.topic_poster = u.user_id
    ORDER BY CHAR_LENGTH(post_text) DESC
    LIMIT 26;
  • Voor query 3 vraag je de gegevens opeens op met mysql_fetch_object(), waarom? Ook moet je consequent met het $db object werken, dus zoals je dat bij query 2 hebt gedaan.
  • Je begint en eindigt 3 keer een <? .. ?> PHP gedeelte, dit is onnodig omdat het allemaal PHP is en het veroorzaakt onnodige spaties en returns in je source. Als je zou werken met cookie functies zou het je zelfs fatale errors opleveren.
  • In het onderste stuk schrijf je een HTML tabel in je PHP bestand, doe dit met je template.
  • Maak links van de usernames, aan de hand van het user_id uit de query.
  • Schrijf je links, zoals die naar viewtopic, in je PHP bestand en haal ze eerst door append_sid(). Maak ook gebruik van $phpEx en de constante POST_POST_URL voor p=.
  • Ik zie in een van de onderste comments een http://www.reev.nl/forum/ url. Slordig!

SennA
Berichten: 14
Lid geworden op: 06 mar 2004, 22:47
Locatie: Veenendaal

Bericht door SennA » 18 aug 2004, 11:36

mosymuis schreef:Allereerst raad ik je aan de officiële MOD template te gebruiken, net als een kloppend versie nummer. Neem voor dat en andere handige tutorials eens een kijkje in de phpbb.com knowledge database:
http://www.phpbb.com/kb/list_articles.php?category_id=7
Heb er even gekeken en heb er voor mijn mod wat van af gehaald, zul je wel zien.
mosymuis schreef: Verder nog wat tips voor je mod:
  • Geef een $page_title op voor je de header include, dan krijgt je pagina een titel
  • Gebruik de constanten voor je tabelnamen, dus

    Code: Selecteer alles

    "SELECT * FROM " . POSTS_TEXT_TABLE . "
    in plaats van

    Code: Selecteer alles

    "SELECT * FROM forum_posts_text
    je bent dan ook van het prefix probleem af
Heb ik gedaan zoals je kan zien.
mosymuis schreef: [*] Je begint je for() loop met 1, en geeft daarom een SQL limit aan van 26, ipv 25. Als je de het middelste stuk van je loop nu met een <= vergelijking schrijft kan de limit wel 25 blijven.
Heb ik niet gedaan want dan klopt het niet meer.
mosymuis schreef: [*] Waarom heb je een compleet deel van de pagina er dubbel in staan, de tweede keer tussen comments? Je zal het vast nodig gehad hebben bij het testen, maar let hier wel op als je de mod online zet voor het publiek.
Had ik er idd in gezet om te testen. Was ik even vergeten maar is nu weg gehaald.
mosymuis schreef: [*] Je gebruikt 4 query's waar je met ééntje genoeg hebt.

Code: Selecteer alles

SELECT u.user_id, u.username, t.topic_title, pt.post_text
FROM " . USERS_TABLE . " u, " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p, " . POSTS_TEXT_TABLE . " pt
WHERE pt.post_id = p.post_id
AND p.topic_id = t.topic_id
AND t.topic_poster = u.user_id
ORDER BY CHAR_LENGTH(post_text) DESC
LIMIT 26;
[*] Voor query 3 vraag je de gegevens opeens op met mysql_fetch_object(), waarom? Ook moet je consequent met het $db object werken, dus zoals je dat bij query 2 hebt gedaan.
[*] Je begint en eindigt 3 keer een <? .. ?> PHP gedeelte, dit is onnodig omdat het allemaal PHP is en het veroorzaakt onnodige spaties en returns in je source. Als je zou werken met cookie functies zou het je zelfs fatale errors opleveren.
[*] In het onderste stuk schrijf je een HTML tabel in je PHP bestand, doe dit met je template.
[*] Maak links van de usernames, aan de hand van het user_id uit de query.
[*] Schrijf je links, zoals die naar viewtopic, in je PHP bestand en haal ze eerst door append_sid(). Maak ook gebruik van $phpEx en de constante POST_POST_URL voor p=.
[*] Ik zie in een van de onderste comments een http://www.reev.nl/forum/ url. Slordig![/list]
Voor de rest heb ik al je tips gebruikt, en code werkt nu idd goed. TNX
Honger, das het ergste wat er is.

Gesloten