Pagina 1 van 1
Top 25 berichten (eerste mod van mij)
Geplaatst: 16 aug 2004, 15:28
door SennA
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.
Geplaatst: 16 aug 2004, 15:32
door WebSiteNet
En wat doet de mod? Heb je een pagina waar hij al op staat?
Geplaatst: 16 aug 2004, 15:57
door Mandrake Linux
http://www.forum.stophier.nl/viewtop25.php
i heb hem maar er eens gezet
maar dan krijg je een leuke fout melding

Geplaatst: 16 aug 2004, 16:00
door Coen
uhuh, omdat je die tabel niet hebt aangemaakt, staat ongeveer letterlijk in die error....

Geplaatst: 16 aug 2004, 16:04
door Mandrake Linux
der staat niks van tables
in die zip
dus...
Geplaatst: 16 aug 2004, 16:24
door SennA
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

.
Geplaatst: 16 aug 2004, 16:34
door Mandrake Linux
SennA schreef:
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

.
ok
w8ff
Geplaatst: 16 aug 2004, 16:35
door Mandrake Linux
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

Geplaatst: 16 aug 2004, 16:47
door SennA
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

Dat zou idd kunnen ja dat je nog ff 20 post moet maken

Geplaatst: 16 aug 2004, 16:52
door SennA
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;
Geplaatst: 16 aug 2004, 17:04
door Mandrake Linux
....
met wat
:S
Geplaatst: 16 aug 2004, 17:09
door SennA
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;
Geplaatst: 16 aug 2004, 17:20
door Mandrake Linux
super (y)
:thumb: :thumb:

Geplaatst: 16 aug 2004, 17:22
door WebSiteNet
Je hebt de standaard php mysql functies gebruikt.
Dit zal niet echt werken. Je moet met het $db object werken.
Geplaatst: 16 aug 2004, 17:28
door SennA
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?
Geplaatst: 17 aug 2004, 16:22
door mosymuis
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
in plaats van
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!
Geplaatst: 18 aug 2004, 11:36
door SennA
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
in plaats van
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