Joomla.it Forum
Joomla! 3 => Installazione, migrazione e aggiornamento => : brutal78 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)
<?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 (http://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!
-
Non ho provato lo script, ma pensavo che con qualche modifica potrebbe essere adattato per inserimenti massivi di articoli per virtuemart e quant'altro
-
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.
-
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 :-\
-
Ciao brutal78 (http://forum.joomla.it/index.php?action=profile;u=45744)
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.
-
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. ;)