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 » 10/08/2012, 15:51

Micogian ha scritto:Si, va bene, anche se nel link manca il "title".
Il mio voleva solo essere un esempio e non mi ero interessato più di tanto delle variabili, mi interessava far presente il principio.
Tranqui.. ;)

Inviato dal mio Vodafone 858 con Tapatalk 2

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 » 12/08/2012, 17:07

Rieccomi qui... finchè il codice l'ho provato su un forum di prova andava tutto bene... quando lo provo sul sito http://pc-zone.it/ non funziona più e mi da errore.
Riposto il codice perchè l'ho modificato leggermente:

Codice: Seleziona tutto

$query = "SELECT pp.post_subject, pp.post_id, pp.topic_id,pp.forum_id, post_time, topic_title, pf.forum_name, pp.poster_id, pu.username, pf.forum_id
            FROM " . POSTS_TABLE . " pp, " . TOPICS_TABLE . " pt, " . FORUMS_TABLE . " pf, " . USERS_TABLE . " pu
         WHERE  pp.topic_id = pt.topic_id
         AND pu.user_id = pp.poster_id
         AND pf.forum_id = pp.forum_id
         AND pp.forum_id = pt.forum_id
         AND pp.post_id = pt.topic_last_post_id
         GROUP BY pp.topic_id
         ORDER BY post_time DESC LIMIT 0,15"; /*L'ultimo numero (il 10) va cambiato in base al numero di ultimi topic che si vuole estrarre*/         


    $risultato = mysql_query($query);

    if (!$risultato) {
        $lastmex = "Fallimento nell'esecuzione della query ($sql) dal DB: " . mysql_error();
    }

    if (mysql_num_rows($risultato) == 0) {
        $lastmex = "Nessuna riga trovata, niente da stampare quindi si esce";
    }

    while ($dati = mysql_fetch_assoc($risultato)) {
         $lastmex = $lastmex . "<li><span><a href='viewtopic.php?p=$dati[post_id]#p$dati[post_id]'>$dati[post_subject]</a></span><div>
      Inviato il " . date("j/n/y", $dati[post_time]) . " alle ore: " . date("H:m", $dati[post_time]) . "<br>Da <a href='memberlist.php?mode=viewprofile&u=" . $dati[poster_id] . "'>" . $dati[username] ."</a> su <a href='viewforum.php?f=" . $dati[forum_id] . "'> " . $dati[forum_name] ."</a></div></li>";

    }
    mysql_free_result($risultato);
  echo "$lastmex";
L'errore che mi da è proprio "Nessuna riga trovata, niente da stampare quindi si esce"... subito ho pensato che poteva essere per il fatto che cambiavano i nomi delle tabelle, quindi ho sostituito ed ho utilizzato le variabili POSTS_TABLE eccetera.
Però mi da comunque errore, sinceramente non so che farci, le ho provate tutte ma non funziona.


Potrebbe essere un problema di permessi dei file?

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 » 12/08/2012, 17:44

Quando assegni un codice alle tabelle (pp, pt, pf, ecc.) devi inserire questo codice nei campi inseriti nella query.
post_time e topic_title non ce l'hanno come non ce l'ha post_time in ORDER BY.

Se guardi il mio esempio c'erano: forum-di-supporto-f4/codice-php-ultimi- ... tml#p51337

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 » 12/08/2012, 19:09

non me ne ero accorto Immagine
Comunque mi sono accorto che l'errore principale non è questo:
"Nessuna riga trovata, niente da stampare quindi si esce"
Ma questo:
Fallimento nell'esecuzione della query () dal DB: Access denied for user '*******'@'localhost' (using password: NO)
Gli asterischi li ho messi io.
Cercando su google ho capito che using password: NO significa che non ho specificato la password... mala connessione al database non dovrebbe essere già attiva??

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 » 12/08/2012, 19:58

Anch'io non avevo guardato bene. La query contiene diversi errori, una query è così strutturata:

Codice: Seleziona tutto

"SELECT elenco_campi FROM elenco_tabelle ...."
nella lista "elenco campi, a parte l'errore del prefisso accennato in precedenza, non ci sono tutti i campi interessati dalla query,

Codice: Seleziona tutto

$query = "SELECT pp.post_id, pp.topic_id,pp.forum_id, pp.post_time, pp.topic_title, pf.forum_name, pp.poster_id, pu.username, pf.forum_id
            FROM   " . POSTS_TABLE . " pp, " . TOPICS_TABLE . " pt, " . FORUMS_TABLE . " pf, " . USERS_TABLE . " pu
         WHERE  pp.topic_id = pt.topic_id
         AND pu.user_id = pp.poster_id
         AND pf.forum_id = pp.forum_id
         AND pp.forum_id = pt.forum_id
         AND pp.post_id = pt.topic_last_post_id
         GROUP BY pp.topic_id
         ORDER BY pp.post_time DESC LIMIT 0,10"; 
mancano pt.topic_id, pu.user_id, pt.topic_last_post_id

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 » 12/08/2012, 20:36

Già vero, corretto anche quello, ma comunque non era quello il problema perchè il codice su un forum che utilizzo per provare i codici funzionava :shock:
Mentre sul forum del mio sito non funziona... gli errori stampati a schermo sono questi:
Fallimento nell'esecuzione della query () dal DB: Access denied for user '*****'@'localhost' (using password: NO)
Nessuna riga trovata, niente da stampare quindi si esce


(gli asterischi li ho messi io)

Ovviamente il secondo errore deriva dal primo... la mia domanda è: perchè mi dice che l'accesso al database è negato? la connessione non dovrebbe essere già effettuata??

Ah si, è il caso di specificare che ora come ora il codice è direttamente nel template perchè mi è più comodo editarlo, anche perchè prima non veniva visualizzato proprio niente e ho provato a spostarlo nel template per risolvere... diciamo che almeno mi è servito per trovare l'errore.

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 » 13/08/2012, 20:09

Ho controlalto e mi sono accorto che i permessi della maggiorparte dei file sono 644 mentre sul sito che uso come prova sono 664, può essere legato a questo il problema evidenziato nel messaggio precedente?
Se si... potreste gentilmente dirmi di quali file dovrei modificare i permessi?

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 » 13/08/2012, 20:28

giova95 ha scritto: Ah si, è il caso di specificare che ora come ora il codice è direttamente nel template perchè mi è più comodo editarlo, anche perchè prima non veniva visualizzato proprio niente e ho provato a spostarlo nel template per risolvere... diciamo che almeno mi è servito per trovare l'errore.
Questo non l'ho capito. In phpbb c'è un file php che ha il compito di connettersi al Database e fornire le variabili da passare al template.
Se hai fatto diversamente è probabile che la connessione non ci sia.

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 » 13/08/2012, 20:54

No, ho detto che il codice l'ho inserito direttamente nel template index_body.html (lo so, dovrei fare un altro template, ma è solo provvisorio, per cercare di far funzionare il codice in qualche modo) tra i tag
<!-- PHP --> e <!-- ENDPHP -->
Siccome index_body.html viene richiamato da index.php la connessione al database dovrebbe essere già attiva... ragion per cui non capisco da dove spunti l'errore "USING
giova95 ha scritto:Access denied for user '*****'@'localhost' (using password: NO)
Riporto il codice inserito nel template:

Codice: Seleziona tutto

<!-- PHP -->
$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 . " pp, " . TOPICS_TABLE . " pt, " . FORUMS_TABLE . " pf, " . USERS_TABLE . " pu
			WHERE  pp.topic_id = pt.topic_id
			AND pu.user_id = pp.poster_id
			AND pf.forum_id = pp.forum_id
			AND pp.forum_id = pt.forum_id
			AND pp.post_id = pt.topic_last_post_id
			GROUP BY pp.topic_id
			ORDER BY pp.post_time DESC LIMIT 0,15"; 


    $risultato = mysql_query($query);

    if (!$risultato) {
        echo "Fallimento nell'esecuzione della query ($sql) dal DB: " . mysql_error();
        
    }

    if (mysql_num_rows($risultato) == 0) {
        echo "Nessuna riga trovata, niente da stampare quindi si esce";
    }

    while ($dati = mysql_fetch_assoc($risultato)) {
         $lastmex = $lastmex . "<li><span><a href='viewtopic.php?p=$dati[post_id]#p$dati[post_id]'>$dati[post_subject]</a></span><div>
      Inviato il " . date("j/n/y", $dati[post_time]) . " alle ore: " . date("H:m", $dati[post_time]) . "<br>Da <a href='memberlist.php?mode=viewprofile&u=" . $dati[poster_id] . "'>" . $dati[username] ."</a> su <a href='viewforum.php?f=" . $dati[forum_id] . "'> " . $dati[forum_name] ."</a></div></li>";

    }
    mysql_free_result($risultato);
  echo "$lastmex";
<!-- ENDPHP -->

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 » 13/08/2012, 21:37

E' sbagliato.
Se tu avessi seguito il consiglio di leggere le Guide a suo tempo indicate non saremmo ancora qui a parlarne.
La query la devi usare o nel file index.php o in una Custom Page, devi creare le variabili da passare al template e il template le visualizza.
Tutto il resto è arrampicarsi sugli specchi.
Tra l'altro è sconsigliato usare il PHP nel template.

La cosa migliore è creare un file php con la query (e le variabili) e inserirlo nell'index.php con un include.
l'index.php non viene stravolto e tutto funziona correttamente, la connessione c'è e il risultato anche, ma devi creare le variabili da passare al template.

Alla fine fai come credi ma ti consiglio vivamente di guardare com'è strutturata la Mod Topten Topics.

Rispondi

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

Chi c’è in linea

Visitano il forum: Nessuno e 54 ospiti