Pagina 1 di 2

Contare numero di argomenti di un determinato forum

Inviato: 24/03/2012, 17:22
da slash
Ciao ragazzi, spero che micogian o qualche altro guru del php mi dia una mano.

Quello che ho bisogno di fare è di contare il numero totale di argomenti, di determinati forum. poniamo ad esempio i forum con ID 1 2 e 3 per capirci.

e riportare il tutto in una pagina esterna.

Sapete aiutarmi? Grazie!

Re: Contare numero di argomenti di un determinato forum

Inviato: 24/03/2012, 18:19
da Micogian
Bisogna vedere se la pagina di cui parli è una Custom Page o se è una pagina php.
Per ottenere i dati del database bisogna avere una connessione, la Custom Page ce l'ha, altrimenti bisogna crearla in altro modo.

Re: Contare numero di argomenti di un determinato forum

Inviato: 24/03/2012, 18:28
da slash
Ciao mico grazie per l interessamento. Si il tutto va fatto in una custom page

portal.php:

Codice: Seleziona tutto

<?php


define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();


page_header($config['sitename']);




$template->set_filenames(array(
    'body' => 'portal.html',
));

//avatar functions
$template->assign_vars(array(    
    'S_LOGIN_ACTION'    => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login'),
    'USER_AVATAR'       => get_user_avatar($user->data['user_avatar'], $user->data['user_avatar_type'], $user->data['user_avatar_width'], $user->data['user_avatar_height']),
    'USERNAME'          => get_username_string('full', $user->data['user_id'], $user->data['username'], $user->data['user_colour']),
)); 

make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
page_footer();
?>
credo la connessione sia presente altrimenti non mi mostrerebbe l avatr e il nome utente colorato.

dico bene?

Re: Contare numero di argomenti di un determinato forum

Inviato: 24/03/2012, 18:41
da Barrnet
Esatto.

Re: Contare numero di argomenti di un determinato forum

Inviato: 24/03/2012, 18:53
da Micogian
Si, la connessione c'è.
Cosa ti serve? Il totale dei topics di alcuni Forum ma con valori separati o complessivi ?

E' un dato che si può ricavare dalla tabella forums che contiene già il numero degli argomenti oppure facendo un calcolo dei topics di un Forum.
Quest'ultimo si può fare così:

Codice: Seleziona tutto

// Conteggio del numero dei Topics del forum_id=5
$topics=mysql_query("SELECT COUNT(topic_id) AS totale FROM " . TOPICS_TABLE WHERE forum_id = '5') or die(mysql_error());
$row=mysql_fetch_assoc($topics);
$tot_topics =  $row['totale'];

Re: Contare numero di argomenti di un determinato forum

Inviato: 24/03/2012, 21:10
da slash
in pratica, devo fare 5 div in cui in ognuno devo mettere il totale degli argomenti di un determinato forum.

quindi mi servono i valori separati del totale degli argomenti per ciascun forum.

come richiamo poi il tutto nell' html?

GRAZIE!

Re: Contare numero di argomenti di un determinato forum

Inviato: 24/03/2012, 22:52
da Micogian
Devi dirmi quali sono i forum_id che ti servono e quali dati vuoi visualizzare. Ti serve anche il nome del Forum ?

Re: Contare numero di argomenti di un determinato forum

Inviato: 24/03/2012, 22:57
da slash
gli id sono:

5 9 16 46 82 tombola!!! :D

no no mi serve solo il numero totale di argomenti per ciascuno di questi forum.

Grazie!

Re: Contare numero di argomenti di un determinato forum

Inviato: 24/03/2012, 23:00
da Tiger
Scusate se mi metto in mezzo ma voglio imparare ,tanto serve per una causa comune questo topic:
Io micogian ho fatto una query del genere ma non va mi puoi dire dove ho sbagliato?
Grazie:

Codice: Seleziona tutto

$sql = "SELECT COUNT(topic_id) AS totale FROM " . TOPICS_TABLE WHERE forum_id = '5') or die(mysql_error());
$row=mysql_fetch_assoc($topics);
$tot_topics =  $row['totale'];
WHERE forum_id = '5') or die(mysql_error());
$row=mysql_fetch_assoc($topics);
$tot_topics =  $row['totale'];

$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
	{
     $template->assign_block_vars('lista_topics',array(
    'TOT_TOPICS'      => $row['totale'], 
	
	 
	 
	 
	 
<!-- BEGIN Topic_totali -->
{topic_totali_TOT_TOPICS}
<!-- END Topic_totali -->

Re: Contare numero di argomenti di un determinato forum

Inviato: 24/03/2012, 23:56
da Micogian
Tiger, ci sono alcuni errori nel codice:
TOPICS_TABLE va scritta tra i punti . e spezzando la stringa,
Se la variabile è $sql non puoi richiamare $topics,
Se la query elabora un solo dato (il totale del Forum 5) non serve il ciclo while.
Per lo stesso motivo non serve un assign_block_vars se il risultato è uno solo e non serve il BEGIN.

Codice: Seleziona tutto

$sql = "SELECT COUNT(topic_id) AS totale FROM " . TOPICS_TABLE . " WHERE forum_id = '5') or die(mysql_error());
$row=mysql_fetch_assoc($sql);
$tot_topics =  $row['totale'];

     $template->assign_var('TOT_TOPICS'', $row['totale']);
  
   
{TOT_TOPICS}
>
La query corretta si può fare nella tabella forums che contiene già il totale dei topics.
Ammesso che i Forums da controllare siano 1,2,3,4 questo è il modo che crea una lista in ordine di numero dei Topics:

Codice: Seleziona tutto

$sql = "SELECT forum_id, forum_name, forum_topics
    FROM " . FORUMS_TABLE . "
    WHERE forum_id IN(1,2,3,4)
    ORDER BY forum_topics DESC";
$result = $db->sql_query($sql);
    $x = 0;
    while ($row = $db->sql_fetchrow($result))
    {
	$forum_id[$x] 		= $row['forum_id'] ; 
	$forum_name[$x] 	= $row['forum_name'] ; 
	$forum_topics[$x] 	= $row['forum_topics'] ; 
	++$x;
	}
	for ($i=0; $i < $x; ++$i)
	{
	$template->assign_block_vars('tot_topics',array(
		'FORUM_ID'		=> $forum_id[$i],
		'FORUM_NAME'	=> $forum_name[$i],
		'FORUM_TOPICS'	=> $forum_topics[$i]
	));
	}
Nel template si usa il BEGIN perchè le variabili sono più di una

Codice: Seleziona tutto

<!-- BEGIN tot_topics -->
	<div>{tot_topics.FORUM_TOPICS} topics nel Forum {tot_topics.FORUM_ID} = {tot_topics.FORUM_NAME}</div>
<!-- END tot_topics -->