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

Visualizzare elementi phpbb su pagine esterne. Come?

Supporto MODs generale.
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: Come posso visualizzare gli ultimi topic su pagine ester

Messaggio da Micogian » 21/10/2011, 20:11

Avrei dovuto capirlo da come avevi creato il file php, comunque ecco cosa devi fare:
1) creare un file lista_topics.php di questo tipo:

Codice: Seleziona tutto

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

    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup('viewtopic');
    // Lista degli ultimi Topics by Micogian / Bingo
    $sql = "SELECT topic_id, forum_id, topic_title, topic_time, topic_moved_id, topic_first_poster_name
            FROM " . TOPICS_TABLE . "
            WHERE topic_type = 0
            AND topic_moved_id = 0
            ORDER BY topic_time DESC LIMIT 0,30";
        $result = $db->sql_query($sql);
        $n = 0;
        while ($row = $db->sql_fetchrow($result))
        {
           if ($auth->acl_get('f_read', $row['forum_id']) == 1) 
           {
               if ($n < 20)
               {
                    // accorcia il titolo del topic
                    if (strlen($row['topic_title'] > '28'))
                    {
                    $title_short[$n] = substr($row['topic_title'],0,27) . "...";
                    }else{
                    $title_short[$n] = $row['topic_title'];
                    }
           $topic_id[$n] = $row['topic_id'];                    
           $topic_link[$n] = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row['forum_id'] . "&t=" . $row['topic_id']);
           $topic_title[$n] = $row['topic_title'];
           $topic_author[$n] =  $row['topic_first_poster_name'];
           ++$n ;
              }
           }
        }
    // FINE query Ultimi Topics
 
Questo serve a recuperare la Lista degli "ultimi topics"
Nel file HTML (che chiamerai index.php) fai così:

Codice: Seleziona tutto

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=windows-1250">
      <meta name="generator" content="PSPad editor, www.pspad.com">
      <title>oltrecomics.com &bull; Indice</title>
      <link href=oltredemo.css rel="stylesheet" type="text/css">
<?php
include ("lista_topic.php");
?>
      </head>
      <body>
<!-- qui il resto della pagina -->
      </body>
    </html>
Per la Lista devi inserire nella relativa tabella (con <table> o <div>, meglio il <div>)

Codice: Seleziona tutto

<?php
// Lista degli ultimi topics
for ($y = '0';$y < $n;++$y) 
{
echo "<img src='images/ico_05.png'>&nbsp;<a href=http://tuo_dominio/forum/viewtopic.php?t=" . $topic_id[$y] . " title='" . $topic_title[$y] . "'>" . $title_short[$y] . "...</a> (" . $topic_author[$y] . ")<br>" ;
}
?>
Questo è tutto. Per il resto nella pagina ci metti quello che vuoi.

Avatar utente
oltrecomics
Utente
Utente
Messaggi: 73
Iscritto il: 08/10/2011, 16:24
Versione: 3.0.9
Server: UNIX/Linux

Re: Come posso visualizzare gli ultimi topic su pagine ester

Messaggio da oltrecomics » 21/10/2011, 22:25

Grazie infinite. Sei stato di grande aiuto! :D :D :D
La demo la trovi qui:
http://www.oltrecomics.com/zero.php

Ultime tre cose:
1) Se volessi creare 2 riquadri (uno a sx e uno a dx) dove ognuno ha una categoria diversa, cosa devo fare?
es:
Riq. 1: Ultimi 10 comics
Riq. 2: Ultime 10 notizie

2) Per inserire "I numeri", come il riquadro che hai in http://www.actaplantarum.org/ cosa devo mettere?

3) Il login va bene come l'ho messo io o devo aggiungere qualche codice particolare?
Ultima modifica di oltrecomics il 21/10/2011, 22:34, modificato 1 volta in totale.

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: Come posso visualizzare gli ultimi topic su pagine ester

Messaggio da Micogian » 21/10/2011, 22:32

Attento, devi avere inserito un file php con degli spazi davanti al tag <?php
Questo di solito capita quando si copia il codice da una casella

Codice: Seleziona tutto

. Ci sono degli spazi o dei tab che precedono il codice, il tag <?php non prevede spazi davanti.

Per un secondo riquadro devi fare la relativa query e inserire la Lista con lo stesso sistema.

[quote]
2) Per inserire "I numeri", come il riquadro che hai in http://www.actaplantarum.org/ cosa devo mettere?[/quote]
Sono sempre interrrogazioni (query) del database.

Avatar utente
oltrecomics
Utente
Utente
Messaggi: 73
Iscritto il: 08/10/2011, 16:24
Versione: 3.0.9
Server: UNIX/Linux

Re: Come posso visualizzare gli ultimi topic su pagine ester

Messaggio da oltrecomics » 22/10/2011, 2:36

Grazie.
Per un secondo riquadro devi fare la relativa query e inserire la Lista con lo stesso sistema.
Ci ho provato ma da un errore
in pratica ho creato un duplicato come lista_topics.php (rinominandolo lista_comics.php)
in:

Codice: Seleziona tutto

FROM " . TOPICS_TABLE . "
                WHERE topic_type = 0
                AND topic_moved_id = 0
ho aggiunto
"AND forum_id = 7" per lista_comics e "AND forum_id = 7" per lista_topics

Poi sono andato su zero.php e ho sostituito:

Codice: Seleziona tutto

<?php include ("lista_topics.php");?>
con:

Codice: Seleziona tutto

<?php 
include ("lista_topics.php");
include ("lista_comics.php");
?>
nel body, in un div diverso, ho inserito lo stesso codice che mi hai fornito:

Codice: Seleziona tutto

<?php
// Lista degli ultimi topics
for ($y = '0';$y < $n;++$y)
{
echo "<div id='lista'><div id='topic'><img src='zetacart/it.image_name.gif'>&nbsp;<a href=http://www.oltrecomics.com/forum/viewtopic.php?t=" . $topic_id[$y] . " title='" . $topic_title[$y] . "'>" . $title_short[$y] . "...</a></div><div id='autore'>Autore: (" . $topic_author[$y] . ")</div></div>" ;
}
?>
Purtroppo ma dà il seguente errore:

Codice: Seleziona tutto

phpBB Debug] PHP Warning: in file /includes/session.php on line 1035: Cannot modify header information - headers already sent by (output started at /home/oltrecom/public_html/zero.php:9)
[phpBB Debug] PHP Warning: in file /includes/session.php on line 1035: Cannot modify header information - headers already sent by (output started at /home/oltrecom/public_html/zero.php:9)
[phpBB Debug] PHP Warning: in file /includes/session.php on line 1035: Cannot modify header information - headers already sent by (output started at /home/oltrecom/public_html/zero.php:9)

Fatal error: Cannot redeclare deregister_globals() (previously declared in /home/oltrecom/public_html/forum/includes/startup.php:31) in /home/oltrecom/public_html/forum/includes/startup.php on line 9
Chiaramente ho ripristinato tutto.
Sono un disastro :(
2) Per inserire "I numeri", come il riquadro che hai in http://www.actaplantarum.org/ cosa devo mettere?
Sono sempre interrrogazioni (query) del database.[/quote]
Potre avere il codice?

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: Come posso visualizzare gli ultimi topic su pagine ester

Messaggio da Micogian » 22/10/2011, 7:15

Prima di tutto non ha senso creare un altro file per fare un'altra query. Tra l'altro l'errore nasce proprio dal fatto che non puoi ridichiarare la connessione a phpbb costituita dal codice:

Codice: Seleziona tutto

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

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('viewtopic');
Quel codice va dichiarato una volta sola, quindi nello stesso file fai due o più interrogazioni.
Ovviamente devi fare in modo che i risultati siano chiaramente distinguibili, vanno pertanto cambiate le variabili.
Se fai la richiesta dei Topics di un Sezione (es. forum_id=7) devi fare:

Codice: Seleziona tutto

    // Lista degli ultimi Topics by Micogian / Bingo
    $sql1 = "SELECT topic_id, forum_id, topic_title, topic_time, topic_moved_id, topic_first_poster_name
            FROM " . TOPICS_TABLE . "
            WHERE forum_id = '7'
            AND topic_type = 0
            AND topic_moved_id = 0
            ORDER BY topic_time DESC LIMIT 0,20";
        $result1 = $db->sql_query($sql1);
        $n1 = 0;
        while ($row1 = $db->sql_fetchrow($result1))
        {
           if ($auth->acl_get('f_read', $row1['forum_id']) == 1) 
           {
               if ($n1 < 10)
               {
                    // accorcia il titolo del topic
                    if (strlen($row1['topic_title'] > '28'))
                    {
                    $title_short_1[$n] = substr($row1['topic_title'],0,27) . "...";
                    }else{
                    $title_short_1[$n] = $row1['topic_title'];
                    }
           $topic_id_1[$n] = $row1['topic_id'];                    
           $topic_link_1[$n] = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row1['forum_id'] . "&t=" . $row1['topic_id']);
           $topic_title_1[$n] = $row1['topic_title'];
           $topic_author_1[$n] =  $row1['topic_first_poster_name'];
           ++$n1 ;
              }
           }
        }
Come vedi sono state assegnate variabili associate al numero '1' ($sql1, $result1, $row1, $n1, $topic_d_1, ecc.) e queste andrai a visualizzare in un primo ciclo "for"

Codice: Seleziona tutto

for ($a = 0; $a < $n1; ++$a)
{
echo "<img src='images/ico_05.png'>&nbsp;<a href=http://tuo_dominio/forum/viewtopic.php?t=" . $topic_id_1[$a] . " title='" . $topic_title_1[$a] . "'>" . $title_short_1[$a] . "...</a> (" . $topic_author_1[$a] . ")<br>" ;
}
A questo punto fai una query identica ma usando il numero '2' ($sql2, $result2, $row2, $n2, $topic_d_2, ecc.) associandola a un altro forum_id.
Le variabili ottenute non vanno in conflitto con le precedenti e un altro ciclo for ti consente di visualizzare questi dati.

Codice: Seleziona tutto

for ($b = 0; $b < $n2; ++$b)
{
echo "<img src='images/ico_05.png'>&nbsp;<a href=http://tuo_dominio/forum/viewtopic.php?t=" . $topic_id_2[$b] . " title='" . $topic_title_2[$b] . "'>" . $title_short_2[$b] . "...</a> (" . $topic_author_2[$b] . ")<br>" ;
}
Capita la differenza ?

Per i numeri ci vogliono query di questo tipo:

Codice: Seleziona tutto

// conteggio degli Utenti dalla tabella phpbb_users (esclude gli users che non hanno IP, quindi i Bot)
$utenti=mysql_query("SELECT COUNT(user_id) AS totale1 FROM " . USERS_TABLE . " WHERE user_ip != '' ") or die(mysql_error());
$riga1=mysql_fetch_assoc($utenti);
$tot_utenti =  $riga1['totale1'];
// conteggio dei Topics di un Forum (dalla tabella phpbb_topics)
$schede=mysql_query("SELECT COUNT(topic_id) AS totale2 FROM " . TOPICS_TABLE . " WHERE forum_id = '95' AND topic_moved_id = '0'") or die(mysql_error());
$riga2=mysql_fetch_assoc($topics);
$tot_topics =  $riga2['totale2'] - 1;

// conteggio delle foto allegate dalla tabella phpbb_attachments
$allegati=mysql_query("SELECT COUNT(attach_id) AS totale3 FROM " . ATTACHMENTS_TABLE . " WHERE is_orphan = '0' ") or die(mysql_error());
$riga3=mysql_fetch_assoc($allegati);
$tot_allegati =  $riga3['totale3'];

// conteggio dei Topics
$topics=mysql_query("SELECT COUNT(topic_id) AS totale4 FROM " . TOPICS_TABLE . ") or die(mysql_error());
$riga4=mysql_fetch_assoc($topics);
$tot_topics =  $riga4['totale4'];

// conteggio dei Posts
$posts=mysql_query("SELECT COUNT(post_id) AS totale5 FROM " . POSTS_TABLE . ") or die(mysql_error());
$riga5=mysql_fetch_assoc($posts);
$tot_posts =  $riga5['totale5'];
Hai tutte le variabili che ti servono e che puoi inserire dove ti pare nella pagina.

Avatar utente
oltrecomics
Utente
Utente
Messaggi: 73
Iscritto il: 08/10/2011, 16:24
Versione: 3.0.9
Server: UNIX/Linux

Re: Come posso visualizzare gli ultimi topic su pagine ester

Messaggio da oltrecomics » 22/10/2011, 15:33

Grazie grazie grazie... ;)
All'inizio non capivo perchè la query (latest topics) che hai postato non funzionava, poi mi sono accorto che ad alcuni "$n" mancava la numerazione.
Comunque, grazie a te, ho risolto il primo problema.

Per quanto riguarda "i numeri" la query l'ho inserita sempre in "lista_topics.php", proma del tag di chiusura "?>", purtroppo mi da il seguente errore:

Codice: Seleziona tutto

[phpBB Debug] PHP Warning: in file /home/oltrecom/public_html/lista_topics.php on line 109: mysql_query() [function.mysql-query]: Access denied for user 'oltrecom'@'localhost' (using password: NO)
[phpBB Debug] PHP Warning: in file /home/oltrecom/public_html/lista_topics.php on line 109: mysql_query() [function.mysql-query]: A link to the server could not be established
Access denied for user 'oltrecom'@'localhost' (using password: NO)
Una volta sistemata la query, quale codice devo usare per visualizzare "i numeri" nella mia pagina?

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: Come posso visualizzare gli ultimi topic su pagine ester

Messaggio da Micogian » 22/10/2011, 15:57

Prova ad escludere una alla volta le query "numeri"
Usa /* all'inizio e */ alla fine

Codice: Seleziona tutto

/*
// conteggio degli Utenti dalla tabella phpbb_users (esclude gli users che non hanno IP, quindi i Bot)
$utenti=mysql_query("SELECT COUNT(user_id) AS totale1 FROM " . USERS_TABLE . " WHERE user_ip != '' ") or die(mysql_error());
$riga1=mysql_fetch_assoc($utenti);
$tot_utenti =  $riga1['totale1'];
*/
In pratica il codice racchiuso tra questi tag non viene considerato.
Ci sarà un errore nella query, io non le ho provate.

I valori da visualizzare sono dati dalla variabile finale di ciascuna query, ad esempio $tot_utenti e la visualizzazione in un file php si ottiene con il comando "echo"

Codice: Seleziona tutto

echo $tot_utenti . "<br />";
Le variabili non vanno tra virgolette, il testo e i tag html si. La riga echo deve terminare con ;
Il punto serve a unire la variabile con il resto del testo.

Avatar utente
oltrecomics
Utente
Utente
Messaggi: 73
Iscritto il: 08/10/2011, 16:24
Versione: 3.0.9
Server: UNIX/Linux

Re: Come posso visualizzare gli ultimi topic su pagine ester

Messaggio da oltrecomics » 22/10/2011, 17:42

Purtroppo non funziona nessuna delle query da te postate :(
Comunque ho risolto :D ho trovato la soluzione a questo indirizzo:
http://www.phpbb.com/community/viewtopi ... #p10212585

Grazie di tutto.

A molto presto :twisted:

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: Come posso visualizzare gli ultimi topic su pagine ester

Messaggio da Micogian » 22/10/2011, 18:02

Sul discorso dello spazio prima del tag <?php è la prima cosa che avevo detto di fare attenzione.
E' un errore classico di chi copia il codice dalla casella

Avatar utente
oltrecomics
Utente
Utente
Messaggi: 73
Iscritto il: 08/10/2011, 16:24
Versione: 3.0.9
Server: UNIX/Linux

Re: Come posso visualizzare gli ultimi topic su pagine ester

Messaggio da oltrecomics » 25/10/2011, 2:14

Ciao bingo,
pensavi fossi sparito, eh? :twisted:

Volevo sapere se è possibile aggiungere (nella lista dei topic), l'avatar dell'autore e il periodo di invio dei post.

Grazie a te il sito inizia a prendere forma:
http://www.oltrecomics.com/zero.php

Rispondi

Torna a “Supporto MODs”

Chi c’è in linea

Visitano il forum: Nessuno e 52 ospiti