Autore Topic: Importare utenti da lista CSV - Script funzionante  (Letto 3758 volte)

Offline brutal78

  • Nuovo arrivato
  • *
  • Post: 47
    • Mostra profilo
Importare utenti da lista CSV - Script funzionante
« il: 04 Apr 2014, 12:00:33 »
Ciao ragazzi.
Dato che nel JED non ho trovato estensioni utili mi sono messo di buona lena e ho creato questo script PHP per l'inserimento nel db degli utenti provenienti da una lista CSV in un sito JOOMLA 3.X


Funziona così:


1. CREAZIONE DELLA LISTA UTENTI
prima si crea la lista degli utenti con i dati fondamentali:


nome1,cognome1,username1,email1
nome2,cognome2,username2,email2

NB: ho sviluppato questo script avendo necessità di più utenti ma con la stessa password poichè ognuno poi andrà a modificarla (mi serviva per i colleghi dell'azienda). Tuttavia aggiungendo un semplice campo password alle variabile potrete personalizzare a seconda delle vostre esigenze.


Ora salvate la lista in CSV.


2. CREAZIONE DELLO SCRIPT
ora creiamo un semplice script PHP che gestirà l'inserimento di quella lista sul db. Quello che dovrete fare voi è cambiare i parametri che ho indicato con XXXXXX (connessione al vostro db mysql, prefissi tabelle e password)


Codice: [Seleziona]

<?php
class smCONNECTION {
       
// ----> parametri di connessione al database
       
var $dbHost "XXXXXX";            // host o indirizzo IP
       
var $dbNome "XXXXXX";          //Nome utente database mysql
       
var $dbUser "XXXXXX";            // user
       
var $dbPass "XXXXXX";            // pass
       
var $connessione NULL;
       var 
$output "";
       
// ----> metodo per attivare la
       // ----> connessione al database
       
public function connetti() {
             
$this->connessione mysql_connect($this->dbHost,
                                               
$this->dbUser,
                                               
$this->dbPass);
             
mysql_select_db($this->dbNome,$this->connessione);
             return 
$this->connessione;
       }
       
// ----> metodo per recuperare
       // ----> ultimo record inserito
       
public function selectRow($tabella,$campi,$where) {
             
$html "";
             
$sql "SELECT * FROM $tabella $where ORDER BY id ASC LIMIT 1";
             
$result = @mysql_query($sql,$this->connetti());
             
$num = @mysql_num_rows($result);
             
$records = @mysql_fetch_object($result);
             if (!
$num) {
                    
$this->output NULL;
             }
             else {
                    
$array = array();
                    foreach (
$campi as $k=>$v) {
                           
array_push($array,$records->$v);
                    }
                    @
mysql_free_result($result);
                    
$this->output $array;
             }
             return 
$this->output;
       }
       
// ----> metodo per recuperare una
       // ----> lista di record; usando questo metodo 
       // ----> vengono recuperati i record che rispettano determinate clausole
       
public function selectRows($tabella,$campi,$where,$order) {
             
$html "";
             
$sql "SELECT * FROM $tabella $where $order";
             
$result = @mysql_query($sql,$this->connetti());
             
$num = @mysql_num_rows($result);
             
$records = @mysql_fetch_object($result);
             if (!
$num) {
                    
$this->output NULL;
             }
             else {
                    
$array = array();
                    
$i 1;
                    while (
$records) {
                           
$lista = array();
                           foreach (
$campi as $k=>$v) {
                                  
array_push($lista,$records->$v);
                           }
                           
array_push($array,$lista); 
                           
$i++;
                           
$records = @mysql_fetch_object($result);
                    }
                    @
mysql_free_result($result);
                    
$this->output $array;
             }
             return 
$this->output;
       }
       
// ----> metodo per il salvataggio dei dati 
       // ----> su database; metodo generico,
       // ----> potrebbe essere usato per INSERT, UPDATE, DELETE
       
public function salva($sql) {
             @
mysql_query($sql,$this->connetti());
             
$this->output TRUE;
             return 
$this->output;     
       }
}
// ----> ----------------------------------
// ----> utilizzo della classe smCONNECTION
// ----> ----------------------------------
$sqlUtenti = new smCONNECTION;
// ----> parametri
$tabella "XXXXXX_users";
$campi "name,username,email,password";
// ----> lettura file CSV
$record explode("\r",file_get_contents('lista.csv'));
for (
$a=0$a<count($record); $a++) {
       
$utente explode(";",trim($record[$a]));
       if (
$utente[0] != '') {
             
$query "INSERT INTO $tabella ($campi) VALUES ('".$utente[0]." ".$utente[1]."','".strtolower($utente[2])."','".strtolower($utente[3])."','".md5('XXXXXX')."');";
             echo 
$query."[br /]";      
             
$sqlUtenti->salva($query);
       }
}
echo 
"[br /][br /]Fatto...[br /]";
?>



3. ULTIMO PASSO
Non vi resta che salvare questo file come importautenti.php e copiarlo assieme alla lista csv nella root del vostro sito via FTP. Per far funzionare il tutto andate su www.nomevostrosito.it/importautenti.php e premete invio. Gli utenti verranno scritti nella tabella "_users".


4.PERMESSI
Ovviamente questi utenti non appertengono a nessun gruppo. Potete usare la funzione "Azioni multiple" della menù utenti del pannello amministrativo di Joomla per dare a tutti un ruolo (registered, author, ecc..)




Spero di essere di aiuto a qualcuno e sono contento per aver dato il mio contributo alla community!
« Ultima modifica: 07 Apr 2014, 11:35:36 da brutal78 »

Offline giusebos

  • Fuori controllo
  • *
  • Post: 20400
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
Re:Importare utenti da lista CSV - Script funzionante
« Risposta #1 il: 04 Apr 2014, 12:36:57 »
Non ho provato lo script, ma pensavo che con qualche modifica potrebbe essere adattato per inserimenti massivi di articoli per virtuemart e quant'altro
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline brutal78

  • Nuovo arrivato
  • *
  • Post: 47
    • Mostra profilo
Re:Importare utenti da lista CSV - Script funzionante
« Risposta #2 il: 07 Apr 2014, 11:37:19 »
Si sicuramente. in pratica e solo un inserimento massiva di un contenuto di testo in una tabella del database. Basta semplicemente cambiare le variabili e le tabelle di inserimento e il gioco è fatto.

Offline giusebos

  • Fuori controllo
  • *
  • Post: 20400
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
Re:Importare utenti da lista CSV - Script funzionante
« Risposta #3 il: 07 Apr 2014, 13:07:53 »
Anche se quello che ho scritto potrebbe sembrare una ovvietà,  lo fatto per i tanti che spesso fanno richieste in tal senso  è non trovano niente  :-\
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline gaetano118

  • Nuovo arrivato
  • *
  • Post: 13
    • Mostra profilo
Re:Importare utenti da lista CSV - Script funzionante
« Risposta #4 il: 17 Lug 2016, 14:23:17 »
Ciao brutal78
Devo dire che il tuo script è l'unico che ho trovato funzionante,
peccato che per me è incompleto,
sarebbe stato più bello se potevi mettere ad ognuno una password e
assegnare un gruppo specifico,

Comunque utile Grazie.

Offline giusebos

  • Fuori controllo
  • *
  • Post: 20400
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
Re:Importare utenti da lista CSV - Script funzionante
« Risposta #5 il: 17 Lug 2016, 18:42:37 »
chi ti impedisce di farlo, devi solo aggiungere le informazioni necessarie.
P.S. per la password devi usarne una criptata, quindi nessuna password in chiaro potrà funzionare. ;)
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

 

Host

Torna su