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

Top Mods,bbcode,guide

Cerchi una MOD? Chiedi in questo forum.
Questa sezione è supportata dagli utenti del forum, pertanto lo Staff potrebbe non eseguire tali richieste.
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: Top Mods,bbcode,guide

Messaggio da Micogian » 17/01/2012, 13:51

Non serve creare una function personale, ti basta creare un file php che contiene la query e questo file lo inserisci nella Custom page nella riga "include".
Un include è un modo per inserire del codice senza stravolgere il file principale, in sostanza è come se tu inserissi la query direttamente nella Custom Page.
La query crea un array di variabili che vengono passate al template.
La stessa cosa puoi fare con il template, creare una pagina html che andrai a inserire con
<!-- include page_body.html --> nella pagina principale.
La pagina "page_body.html" conterrà il codice che crea la tabella con le variabili passate dal PHP.

Se guardi la mia Mod "Topten Topics" vedrai che è fatta a questo modo.
Un file "topten_topics.php" inserito in "index.php" con un "include".
Un file "topten_topics_body.html" che viene inserito sempre con "INCLUDE" nel file "index_body.html"

I due file originali, index.php e index_body.html hanno solamente una riga in più e se vuoi togliere la Mod togli la riga e tutto torna come in origine.

Avatar utente
Tiger
phpBB Expert
phpBB Expert
Messaggi: 1998
Iscritto il: 24/05/2011, 12:37
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.28
Database: MySQL(i) 5.5.35-cll
Località: Roma
Contatta:

Re: Top Mods,bbcode,guide

Messaggio da Tiger » 17/01/2012, 13:57

Perfetto.
Ancora Grazie Micogian,sto imparando anche un pochino di php. :-)

Avatar utente
Tiger
phpBB Expert
phpBB Expert
Messaggi: 1998
Iscritto il: 24/05/2011, 12:37
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.28
Database: MySQL(i) 5.5.35-cll
Località: Roma
Contatta:

Re: Top Mods,bbcode,guide

Messaggio da Tiger » 17/01/2012, 19:44

Avendo pochissimo tempo in questi periodi,ho provato soltanto ora a focalizzare tutto quello che mi hai dettato.
Ho creato questa query ,seguendo la tua guida ,su come interrogare un database tramite query.
Secondo il progetto che vorrei attuare per le mie esigenze l'ho fatta cosi'(mi sono buttato :? )
Nel file functions_personali.php gli metto questa query qui:
E' sbagliata?Manca sicuramente qualcosa vero?
Calcolando che il risultato che vorrei ottenere e' quello di visualizzare una lista di topics(30) di un determinato forum:

Codice: Seleziona tutto

<?php
// MOD Elenco Ultime 30 Mods Inserite //
if (!defined('IN_PHPBB'))
{
   exit;
}

//----- start Ultime 30 Mods Inserite -----//
$sql = "SELECT ft.forum_id, ft.forum_name
	FROM " . TOPICS_TABLE . "
	WHERE forum_id = 66
	ORDER BY topic_id DESC LIMIT 0,30";

$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
     {
     $template->assign_block_vars('lista_modinserite',array(
	 'TOPIC_COR'   => $row['topic_id'],
     'FORUM_COR'   => $row['forum_id'],
	 ));
     }
//----- end Ultime 30 Mods Inserite -----//
?>	 

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: Top Mods,bbcode,guide

Messaggio da Micogian » 17/01/2012, 22:01

Avevo detto che non serve mettere questo codice in un file function, non è una function, è una query.
Un semplicissimo file php che andrai a inserire nel file principale con "include".
La query è semplice ma fornisce solamente topic_id e forum_id che si tradurrà in un elenco di numeri.
Manca il titolo del topic (topic_title), l'eventuale username, la data, quante risposte ha avuto, quante volte è stato visto il topic, ecc.
Per alcuni dati dovresti cercare su più tabelle, non solo si TOPICS_TABLE.

Avatar utente
Tiger
phpBB Expert
phpBB Expert
Messaggi: 1998
Iscritto il: 24/05/2011, 12:37
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.28
Database: MySQL(i) 5.5.35-cll
Località: Roma
Contatta:

Re: Top Mods,bbcode,guide

Messaggio da Tiger » 18/01/2012, 7:41

Avevo detto che non serve mettere questo codice in un file function, non è una function, è una query.
Si,l'avevo capito,mi sono espresso male io,volevo dire che creando un file di nome ad esempio funtions_funzioni.php,gli piazzavo quella query.
La query è semplice ma fornisce solamente topic_id e forum_id che si tradurrà in un elenco di numeri.
Manca il titolo del topic (topic_title), l'eventuale username, la data, quante risposte ha avuto, quante volte è stato visto il topic, ecc.
Per alcuni dati dovresti cercare su più tabelle, non solo si TOPICS_TABLE.
Ok.
Riprovero',come sempre Grazie Mille Micogian.

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: Top Mods,bbcode,guide

Messaggio da Micogian » 18/01/2012, 8:02

Nella mia Guida c'è anche un esempio di query su tabelle multiple.
Devi considerare che un SELECT è così strutturato:

Codice: Seleziona tutto

"SELECT campi FROM tabelle WHERE condizioni";
Per prima cosa devi elencare i campi che ti interessano separati da una virgola, le variabili delle tabelle (TOPICS_TABLE, USERS-TABLE, ecc.) le trovi nel file "includes/constants.php"
il WHERE rappresenta le condizioni.
Quando usi più tabelle devi inserire nel WHERE i campi in comune tra due tabelle, esempio

Codice: Seleziona tutto

WHERE tt.poster_id = tu.user_id
in pratica il poster_id della tabella topics deve essere uguale al campo user_id della tabella users.
le abbreviazioni tt e tu vanno dichiarate nella query e sostituiscono il nome completo della tabella.

Avatar utente
Tiger
phpBB Expert
phpBB Expert
Messaggi: 1998
Iscritto il: 24/05/2011, 12:37
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.28
Database: MySQL(i) 5.5.35-cll
Località: Roma
Contatta:

Re: Top Mods,bbcode,guide

Messaggio da Tiger » 06/04/2012, 21:41

Allora Micogian sto pensando di utilizzare una porzione della tua Mods topten_topics per integrarla nel portale che mi sto progettando per il mio forum.
Praticamente vorrei visualizzare gli ultimi dieci topics di un determinato Forum:
DtabaseMods:
Per ricavarmi quindi il risultato solo per quello specifico dove devo intervenire?

Codice: Seleziona tutto

//---------- 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 -----------//
Chiaramente devo avere installato o nella root la tua mods ed in particolare il file mod_topten_topics.php ed includerlo poi nel portal.php che mi sto creando e' esatto?

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: Top Mods,bbcode,guide

Messaggio da Micogian » 06/04/2012, 22:10

Prima di elaborare la query devi pensare al risultato che vuoi ottenere.
Mi pare di capire che vuoi creare una Lista degli "ultimi x topics di un determinato forum", giusto ?
Allora devi porti queste domande:
quali sono i dati che mi servono ? il titolo, il nome dell'autore, il numero delle risposte ?, l'ultimo utente che ha risposto ?, mi sembra ovvio anche conoscere il topic_id per poter creare un link alla discussione, magari anche l'ultimo post_id, insomma fare un elenco di "tutto quello che ti serve"
Il secondo passo è: "dove trovo questi dati ?
in una unica tabella o in più tabelle ?.
Quando hai le idee chiare su quello che vuoi ottenere cominci a strutturare la query, se le tabelle che ti servono sono più di una devi trovare i campi in comune tra loro che possono servirti, ad esempio poster_id e user_id, oppure topic_first_poster_id con user_id per conoscere il nome utente, e così via.
Fatta la query si crea un array con le variabili da passare al template.
Per lo meno se quello che intendi fare è una Custom Page phpbb, cioè una pagina php che invia i dati al template.
Il template riceve le variabili e le visualizza.
Questo è quello che devi fare.

Avatar utente
Tiger
phpBB Expert
phpBB Expert
Messaggi: 1998
Iscritto il: 24/05/2011, 12:37
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.28
Database: MySQL(i) 5.5.35-cll
Località: Roma
Contatta:

Re: Top Mods,bbcode,guide

Messaggio da Tiger » 06/04/2012, 22:15

Allora vorrei nel portale che sto ultimando,a due colonne,visualizzare nella colonna di destra ad esempio ,racchiusa in una tabella(forabg) una semplice lista degli ultimi Argomenti della sezione DatabaseMods,soltanto gli ultimi 10 argomenti nient'altro.

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: Top Mods,bbcode,guide

Messaggio da Micogian » 06/04/2012, 22:19

Una cosa come quella degli "Ultimi topics" nel mio Forum ma di un unico Forum ? http://www.actafungorum.org/

Ti basta il titolo o vuoi anche l'autore?
Ovviamente il titolo deve essere un link ?

Rispondi

Torna a “Richiesta MOD”

Chi c’è in linea

Visitano il forum: Nessuno e 57 ospiti