Pagina 1 di 1

Estrazione elenco utenti/mail/n topic

Inviato: 21/07/2014, 17:28
da Jigen_Daisuke
Salve ragazzi,
ho attivato delle convenzioni/agevolazioni per gli utenti attivi del forum in modo tale anche da fidelizzarli e ricompensarli in qualche modo.
Avevo pensato di dare tali agevolazioni come per i ranghi in base al numero di interventi che hanno fatto.
Tipo a:
N° 100 post tot% di sconto da tizio
N° 500 post tot% di sconto da caio
N° 1000 post tot% di sconto da sempronio
ecc...
Ora le attività ed i negozi che ci agevolano vogliono un elenco con il nick e la mail in modo tale che possono verificare quando queste persone fanno richiesta di sconto, quindi esiste uno script che dal DB o in un altro modo possa estrarmi l'elenco con i dati indicati?

In alternativa esiste qualche mod o un sistema da poter applicare al forum?
Ovviamente il tutto sarà corredato da regolamento specifico con indicate le tipologie di agevolazioni e come fare per averne diritto...
Grazie...

Re: Estrazione elenco utenti/mail/n topic

Inviato: 22/07/2014, 4:15
da Barrnet
In pratica devi estrarre una tabella contenente i campi nickname, email e totale dei messaggi?

Re: R: Estrazione elenco utenti/mail/n topic

Inviato: 22/07/2014, 7:22
da Jigen_Daisuke
Si esatto, per avere un file in excel dal quale fare in pdf da dare ai negozi!

Inviato dal mio Android
"Meglio io mbriaco che tu sobrio"

Re: Estrazione elenco utenti/mail/n topic

Inviato: 22/07/2014, 10:42
da Barrnet
crea un file .php nella root del tuo forum ed incollaci questo:

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);
//Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

$query=mysql_query("SELECT user_id, username AS \"Utente\", user_email AS \"Email utente\", user_posts AS \"Messaggi Utente\" FROM ".USERS_TABLE." WHERE user_type != 2 ORDER BY ".USERS_TABLE.".`user_posts` DESC ") or die(mysql_error());
$fp = fopen('utenti.csv', 'w');

$row = mysql_fetch_assoc($query);
            if($row) {
                fputcsv($fp, array_keys($row));
             mysql_data_seek($query, 0);
			echo("File creato correttamente! Controlla il file \"utenti.csv\" nella directory corrente.");
            }else{
			echo("Errore!");
			}
fclose($fp);
?>
Eseguilo nel browser e ti creerà un file utenti.csv nella root del tuo forum.

Re: Estrazione elenco utenti/mail/n topic

Inviato: 22/07/2014, 12:33
da Jigen_Daisuke
Tnks...
Al momento mi esce l'elenco vuoto ma credo che devo sostituire il suffisso "phpbb" in "av_phpbb" in quanto mi porto dietro il suffisso di altervista giusto?

Re: Estrazione elenco utenti/mail/n topic

Inviato: 22/07/2014, 15:17
da Barrnet
Sorry, ho cannato qualcosina :P

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);
//Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

$query=mysql_query("SELECT username, user_email, user_posts FROM ".USERS_TABLE." WHERE user_type != 2 ORDER BY ".USERS_TABLE.".user_posts DESC") or die(mysql_error());
$fp = fopen('utenti.csv', 'w');
fputcsv($fp, array('Utente','Email','Messaggi'));
while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) {	
	fputcsv($fp, array($row["username"],$row["user_email"],$row["user_posts"]));
}
echo "Controlla il file 'utenti.csv' nella cartella di phpBB per l'elenco degli utenti.";
fclose($fp);
?>
Avevo copiato del codice di test che stavo usando per scrivere il .csv, considerando che per stampare solo 600 utenti mi manda in crisi l'hosting prove ripetute mi avrebbero causato problemi con l'hosting :D
In pratica il codice di sopra stampa una sola riga se va tutto con successo, questo dovrebbe essere corretto.

Occhio che con un semidedicato di netsons con la copia attiva mando la scrittura su disco ai limiti consentiti del contratto, a circa 1MB/s, copiando i dettagli di soli 600 utenti.
Se avessi qualche valore che limiti la ricerca a meno utenti potrei "alleggerire" lo script, per esempio nel caso ti interessassero solo gli utenti di alcuni gruppi o solo con una soglia di messaggi minima.

Re: Estrazione elenco utenti/mail/n topic

Inviato: 22/07/2014, 15:36
da Jigen_Daisuke
Teoricamente mi servirebbero gli utenti che hanno più di 300 messaggi...
Potrei fare 3 script differenti uno per i 300, uno per i 500 ed uno superiore ai 1000...
Cosa vorresti dire con :
Occhio che con un semidedicato di netsons con la copia attiva mando la scrittura su disco ai limiti consentiti del contratto, a circa 1MB/s, copiando i dettagli di soli 600 utenti.
Io al momento sto su Aruba...

Re: Estrazione elenco utenti/mail/n topic

Inviato: 22/07/2014, 15:42
da Barrnet
Come non detto, ho fatto una cavolata io, riprendi il codice dal post di sopra, avevo fatto un errore madornale >.<'
Avevo testato solo superficialmente lo script, verificando solo che stampasse qualcosa che pesava all'incirca quanto la tabella: in realtà stampava solo ennemila volte il titolo della tabella che avevo assegnato nella query.
Quello che ti ho messo è corretto, l'ho appena testato aprendolo. Se usi openoffice/libreoffice occhio che devi settare come separatore la virgola, non il punto e virgola.

In pratica lo script di prima stampava fino a sfinimento del server il titolo della tabella, ecco perché era cosi stressante, penso di essermi "autodossato" il server :lol:

EDIT: se vuoi solo gli utenti con più di X messaggi modifica la query in tale modo:

Codice: Seleziona tutto

SELECT username, user_email, user_posts FROM ".USERS_TABLE." 
WHERE user_type != 2 AND user_posts > X 
ORDER BY ".USERS_TABLE.".user_posts DESC
Ovviamente X è il minimo dei messaggi.

Re: Estrazione elenco utenti/mail/n topic

Inviato: 22/07/2014, 16:13
da Jigen_Daisuke
Tnks...
gentilissimo come sempre :-)