phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Codice php "Ultimi messaggi"

Supporto per phpBB 3.0.x.
Andrea RBR-W
Utente
Utente
Messaggi: 80
Iscritto il: 03/06/2012, 18:37
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux

Re: R: Codice php "Ultimi messaggi"

Messaggio da Andrea RBR-W » 23/08/2012, 0:40

L'assegnazione di nuovi nomi alle tabelle (detti alias) in mysql ke io sappia vanno fatti con AS..

Codice: Seleziona tutto

$query = "SELECT pp.post_subject, pp.post_id, pp.topic_id, pp.forum_id, pp.post_time, pt.topic_title, pf.forum_name, pp.poster_id, pu.username, pf.forum_id, pt.topic_id, pu.user_id, pt.topic_last_post_id
            FROM   " . POSTS_TABLE . " AS pp, " . TOPICS_TABLE . " AS pt, " . FORUMS_TABLE . " AS pf, " . USERS_TABLE . " AS pu...
Inviato dal mio Vodafone 858 con Tapatalk 2

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Codice php "Ultimi messaggi"

Messaggio da Micogian » 23/08/2012, 7:06

No, in phpbb è sufficiente usare una abbreviazione dopo la variabile TABLE.
Esempio tratto dalla Guida http://wiki.phpbbitalia.net/Interrogare_il_database

Codice: Seleziona tutto

    $sql = "SELECT tt.topic_poster, tt.topic_id, tt.forum_id, tt.topic_title,
         ft.forum_id, ft,forum_name,
         ut.user_id, ut.username
         FROM " . TOPICS_TABLE . " tt, " . FORUMS_TABLE . " ft, " . USERS_TABLE . " ut
         WHERE tt.topic_poster = 10
         AND tt.forum_id = 5
         AND tt.forum_id = ft.forum_id
         AND tt.topic_poster = ut.user_id
         ORDER BY tt.topic_id DESC LIMIT 0,10";

    $result = $db->sql_query($sql);
    while ($row = $db->sql_fetchrow($result))
         {
         $template->assign_block_vars('lista_topics',array(
         'USER_COR'      => $row['topic_poster'],
         'TOPIC_COR'   => $row['topic_id'],
         'FORUM_COR'   => $row['forum_id'],
         'TITLE_COR'   => $row['topic_title'],
         'USERNAME_COR'   => $row['username'],
         'FORUM_NAME_COR'   => $row['forum_name']
         ));
         }
E' mysql_query() che non si usa in phpbb.

Avatar utente
giova95
Utente
Utente
Messaggi: 81
Iscritto il: 28/07/2012, 14:38
Sesso: Maschio
Versione: 3.0.11
Server: UNIX/Linux
PHP: 5.3.3
Database: MySQL(i) 5.0.95-log
Località: Biella
Contatta:

Re: Codice php "Ultimi messaggi"

Messaggio da giova95 » 23/08/2012, 8:39

Micogian ha scritto:mysql_query($query) è una funzione php, in phpbb si usa $db->sql_query($query);
Prova a sostituire

Codice: Seleziona tutto

$risultato = mysql_query($query);
con questo

Codice: Seleziona tutto

$db->sql_query($query);
$risultato = $db->sql_query($query);
Grazie
Intanto ho risolto utilizzando il codicee della mod topten list opportunamente modificato, inserito in un file php e richiamato con un include nell'index:

Codice: Seleziona tutto

<?php
// MOD Topten Topics : Topics più recenti, Topics più visti e Posts più recenti 
// created by Micogian (Bingo)
if (!defined('IN_PHPBB'))
{
   exit;
}
// configurazione: numero dei recods da visualizzare nella Lista
$list_rec = 20 ;   // numero di records da estrarre dalla tabella (alcuni topics potrebbero non aver il permesso di lettura)
$list_view = 10 ;  // sostituire il numero della variabile $lista se si desidera diminuire/aumentare il numero dei Topics 

//---------- 10 Ultimi posts start -----------//
$sql4 = "SELECT tt.topic_id, tt.forum_id, tt.topic_moved_id, tt.topic_last_post_id, tt.topic_last_poster_id, tt.topic_last_poster_name, tt.topic_last_post_subject, tt.topic_last_post_time,
    ft.forum_id, ft.forum_name
    FROM " . TOPICS_TABLE . " tt, " . FORUMS_TABLE . " ft 
    WHERE tt.topic_type = 0
    AND tt.topic_moved_id = 0
    AND tt.forum_id = ft.forum_id
    ORDER BY tt.topic_last_post_time DESC LIMIT 0,$list_rec";
$result4 = $db->sql_query($sql4);
    $n4 = 0;
    while ($row4 = $db->sql_fetchrow($result4))
    {
          if ($auth->acl_get('f_read', $row4['forum_id']) == 1) 
        {
            if ($n4 < $list_view)
         {
            $post_subject = str_replace("Re: ", "", $row4['topic_last_post_subject']) ;
            if (strlen($post_subject) > 28)
            {
            $post_title = substr($post_subject,0,25) . "...";
            }else{
            $post_title = $post_subject ;
            }
         $last_post_link[$n4]      = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row4['forum_id'] . "&t=" . $row4['topic_id'] . "#p" . $row4['topic_last_post_id']);
         //$last_post_link[$n4]         = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row4['forum_id'] . "&t=" . $row4['topic_id'] . "p#" . $row4['topic_last_post_id']);
         $last_post_title[$n4]       = $row4['topic_last_post_subject'];
         $last_post_title_short[$n4] = $post_title;
         $last_post_forum[$n4]        = $row4['forum_name'];
         $last_post_author[$n4]       = $row4['topic_last_poster_name'];
         ++$n4 ;             
         }else{
         break ;
         }
        }
    }
//---------- 10 Ultimi posts end -----------//

// Crea l'array "topten_list" che contiene le Variabili per il Template
for ($x = 0; $x < $list_view; ++$x)
{
 $template->assign_block_vars('topten_list',array(
   'LAST_POST_LINK'         => $last_post_link[$x],
   'LAST_POST_TITLE'         => $last_post_title[$x],
   'LAST_POST_TITLE_SHORT'      => $last_post_title_short[$x],
   'LAST_POST_FORUM'         => $last_post_forum[$x],
   'LAST_POST_AUTHOR'         => $last_post_author[$x]
   ));
}
?>
Immagino di dover inserire dei crediti, visto che la mod è tua dimmi tu cosa devo scrivere e dove :D
(La modificherò ancora, spero che tu non ti arrabbi :lol: )

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Codice php "Ultimi messaggi"

Messaggio da Micogian » 23/08/2012, 9:13

Non ho mai badato ai crediti, mi basta che il codice comprenda le righe di commento

Codice: Seleziona tutto

// MOD Topten Topics : Topics più recenti, Topics più visti e Posts più recenti
// created by Micogian (Bingo)
Il credito non è visualizzato ma è presente nel codice sorgente.

Avatar utente
giova95
Utente
Utente
Messaggi: 81
Iscritto il: 28/07/2012, 14:38
Sesso: Maschio
Versione: 3.0.11
Server: UNIX/Linux
PHP: 5.3.3
Database: MySQL(i) 5.0.95-log
Località: Biella
Contatta:

Re: Codice php "Ultimi messaggi"

Messaggio da giova95 » 23/08/2012, 9:33

Ti ringrazio :) Io però inserisco i crediti almeno nel codice sorgente html... ;)
Ti ringrazio di tutto, soprattutto per la pazienza.

Avatar utente
giova95
Utente
Utente
Messaggi: 81
Iscritto il: 28/07/2012, 14:38
Sesso: Maschio
Versione: 3.0.11
Server: UNIX/Linux
PHP: 5.3.3
Database: MySQL(i) 5.0.95-log
Località: Biella
Contatta:

Re: Codice php "Ultimi messaggi"

Messaggio da giova95 » 24/08/2012, 21:22

Eccomi, ho finito di editare il codice e ora lo posto fatto, finito e funzionante:
Codice da inserire in index.php o richiamato in esso tramite include: (preferibile quest'ultima opzione)

Codice: Seleziona tutto

<?php
// MOD Topten Topics : Topics più recenti, Topics più visti e Posts più recenti 
// created by Micogian (Bingo)
if (!defined('IN_PHPBB'))
{
   exit;
}
// configurazione: numero dei recods da visualizzare nella Lista
$list_rec = 50 ;   // numero di records da estrarre dalla tabella (alcuni topics potrebbero non aver il permesso di lettura)
$list_view = 20 ;  // sostituire il numero della variabile $lista se si desidera diminuire/aumentare il numero dei Topics 

//---------- 10 Ultimi posts start -----------//
$sql4 = "SELECT tt.topic_id, tt.forum_id, tt.topic_moved_id, tt.topic_last_post_id, tt.topic_last_poster_id, tt.topic_last_poster_name, tt.topic_last_post_subject, tt.topic_last_post_time,
    ft.forum_id, ft.forum_name
    FROM " . TOPICS_TABLE . " tt, " . FORUMS_TABLE . " ft 
    WHERE tt.topic_type = 0
    AND tt.topic_moved_id = 0
    AND tt.forum_id = ft.forum_id
    ORDER BY tt.topic_last_post_time DESC LIMIT 0,$list_rec";
$result4 = $db->sql_query($sql4);
    $n4 = 0;
    while ($row4 = $db->sql_fetchrow($result4))
    {
       	if ($auth->acl_get('f_read', $row4['forum_id']) == 1) 
        {
            if ($n4 < $list_view)
			{
				$post_subject = str_replace("Re: ", "", $row4['topic_last_post_subject']) ;
				if (strlen($post_subject) > 28)
				{
				$post_title = substr($post_subject,0,25) . "...";
				}else{
				$post_title = $post_subject ;
				}
			$last_post_link[$n4]		= append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row4['forum_id'] . "&p=" . $row4['topic_last_post_id'] . "#p" . $row4['topic_last_post_id']);
			//$last_post_link[$n4]   		= append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row4['forum_id'] . "&t=" . $row4['topic_id'] . "p#" . $row4['topic_last_post_id']);
			$last_post_title[$n4] 		= $row4['topic_last_post_subject'];
			$last_post_title_short[$n4] = $post_title;
			$last_post_forum[$n4]  		= $row4['forum_name'];
			$last_post_author[$n4] 		= $row4['topic_last_poster_name'];
			$last_post_time[$n4]		= $row4['topic_last_post_time'];
			$last_post_author_link[$n4]	= append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=viewprofile&u=" . $row4['poster_id']);
			$last_post_forum_link[$n4]	= append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=" . $row4['forum_id']);
			++$n4 ;          	
			}else{
			break ;
			}
        }
    }
//---------- 10 Ultimi posts end -----------//

// Crea l'array "topten_list" che contiene le Variabili per il Template
for ($x = 0; $x < $list_view; ++$x)
{
 $template->assign_block_vars('topten_list',array(
	'LAST_POST_LINK'			=> $last_post_link[$x],
	'LAST_POST_TITLE'			=> $last_post_title[$x],
	'LAST_POST_TITLE_SHORT'			=> $last_post_title_short[$x],
	'LAST_POST_FORUM'			=> $last_post_forum[$x],
	'LAST_POST_AUTHOR'			=> $last_post_author[$x],
	'LAST_POST_DATE'			=> date("j/n/y", $last_post_time[$x]),
	'LAST_POST_TIME'			=> date("H:m", $last_post_time[$x]),
	'LAST_POST_AUTHOR_LINK'			=> $last_post_author_link[$x],
	'LAST_POST_FORUM_LINK'			=> $last_post_forum_link[$x]
	));
}
?>
Codice da inserire nel template index_body.html o richiamato in esso tramite include: (preferibile quest'ultima opzione)

Codice: Seleziona tutto

<ul id="lastmex" class="topiclist forums">
		<!-- BEGIN topten_list -->
			<li><span><a href="{topten_list.LAST_POST_LINK}">{topten_list.LAST_POST_TITLE}</a></span><div>
      Inviato il {topten_list.LAST_POST_DATE} alle ore: {topten_list.LAST_POST_TIME}<br>Da <a href="{topten_list.LAST_POST_AUTHOR_LINK}">{topten_list.LAST_POST_AUTHOR}</a> in <a href="{topten_list.LAST_POST_FORUM_LINK}">{topten_list.LAST_POST_FORUM}</a></div></li>
		<!-- END topten_list -->
		<!-- Il codice per gli ultimi messaggi è stato creato editando la MOD Topten Topics: http://www.phpbbitalia.net/titania/mod/topten_topics/ 
Creata da Micogian (Bingo) -->
</ul>

Ne approfitto per segnalare un piccolo bug della mod topten topics relativo agli "Ultimi 10 post", o almeno, sul mio forum non funzionava:
Se il topics a cui rimandava il link aveva più di 1 pagina, si veniva indirizzati all'ultimo post della prima pagina e quindi l'ultimo post effettivo bisognava raggiungerlo "Manualmente".
Io ho risolto modificando la seguente riga:

Codice: Seleziona tutto

$last_post_link[$n4]		= append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row4['forum_id'] . "&t=" . $row4['topic_id'] . "#p" . $row4['topic_last_post_id']);
in questa:

Codice: Seleziona tutto

$last_post_link[$n4]		= append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row4['forum_id'] . "&p=" . $row4['topic_last_post_id'] . "#p" . $row4['topic_last_post_id']);
Con l'occasione ringrazio tutti per avermi aiutato, mi farò risentire presto per altri piccoli problemi e consigli :roll:

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Codice php "Ultimi messaggi"

Messaggio da Micogian » 24/08/2012, 22:03

Il problema dell'ultimo post su multipagina lo conoscevo da tempo, è stato risolto in questo modo

Codice: Seleziona tutto

$last_post_link[$n4]		= append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row4['forum_id'] . "&t=" . $row4['topic_id'] . "&p=" . $row4['topic_last_post_id'] . "#p" . $row4['topic_last_post_id']);
Da qualche parte devo averlo segnalato.

Rispondi

Torna a “[3.0.x] Forum di Supporto”

Chi c’è in linea

Visitano il forum: Nessuno e 26 ospiti