Joomla.it Forum
Joomla! 3 => Joomla! 3 => : filippo 16 Apr 2016, 15:55:28
-
Buongiorno,
da un paio di giorni è impossibile registrare nuovi utenti e nuovi articoli poiché il sistema attribuisce loro un ID = 0.
La versione di Joomla è l'ultima disponibile.
Il problema non è sorto dopo alcuna installazione di moduli o componenti.
Ho solo provato uno script php per l'import degli utenti da file CSV.
Anche dopo il ripristino di un backup di files e cartelle di joomla + database salvato quando tutto funzionava correttamente, il problema non si è risolto.
Per cortesia, qualcuno può aiutarmi?
Grazie
Filippo
-
forse lo script ti ha corrotto il database:
prova ad andare in
estensioni>>gestione>>database>>correggi
-
Giuseppe grazie per la risposta.
Questo è quanto indicato:
La struttura delle tabelle del Database è aggiornata.
Altre informazioni
•Versione schema Database (in #__schemas): 3.5.1-2016-03-29.
•Versione aggiornamento (in #__extensions): 3.5.1.
•Database driver: mysqli.
•Sono state controllate correttamente 94 modifiche al database.
•146 modifiche al database non hanno alterato la struttura delle tabelle e sono state ignorate.
Ho digitato cmq il comando correggi ma senza risultato. Quando ho riprovato a creare un nuovo utente mi è ricomparso l'errore:
Salvataggio fallito con il seguente errore: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 2)' at line 3 SQL=INSERT INTO `#__user_usergroup_map` (`user_id`,`group_id`) VALUES (, 2)
Lo script che ho usato è il seguente:
<?php
class smCONNECTION {
// ----> parametri di connessione al database
var $dbHost = "localhost"; // host o indirizzo IP
var $dbNome = "*********"; //Nome utente database mysql
var $dbUser = "*********"; // user
var $dbPass = "*********"; // 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 = "*********_users";
$campi = "name,username,password,email";
// ----> 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]."','".md5($utente[2])."','".strtolower($utente[3])."');";
echo $query."[br /]";
$sqlUtenti->salva($query);
}
}
echo "[br /][br /]Fatto...[br /]";
?>
-
se hai un backup del database precedente all'operazione usalo per un ripristino.
Ripristinare i file non serve, il problema è sul database, per questo il tuo ripristino non è servito.
-
Ora sto provando a caricare un backup dell'8/4 sia di sito che di database in una sottocartella per verificare come si comporta.
Ho già provato a caricare un backup del 13/4 solo del database, ma il problema non si è risolto.
Il 13/4 fino all'orario del backup tutto funzionava correttamente. Le prova di importazione degli utenti le ho fatte successivamente al backup.
-
Problema risolto: la procedura di importazione del backup di phpmyadmin non importava correttamente il file. Infatti, talvolta mi avvisava che era scaduto il tempo a disposizione per l'import e mi invitata a ricaricare il file per terminare l'importazione.
Ho provato dalla tab SQL ad incollare le query presenti all'interno del file .sql del backup. Al termine dell'importazione tutto è funzionato correttamente.
Grazie cmq per la disponibilità ed i consigli ;)
Buona notte!