Ottimizzazzione Database

This commit is contained in:
Thomas Zilio 2018-07-03 15:05:27 +02:00
parent 8f11a2b264
commit bb47682f03
8 changed files with 33 additions and 30 deletions

View File

@ -31,11 +31,7 @@ $results['summable'] = [];
if (!empty($result_query) && $result_query != 'menu' && $result_query != 'custom') {
// Conteggio totale
$count_query = 'SELECT COUNT(*) as `tot` FROM ('.$result_query.') AS `count`';
$count = $dbo->fetchArray($count_query);
if (!empty($count)) {
$results['recordsTotal'] = $count[0]['tot'];
}
$results['recordsTotal'] = $dbo->fetchNum($result_query);
// Filtri di ricerica
$search_filters = [];

View File

@ -2,6 +2,11 @@
include_once __DIR__.'/../../core.php';
$id_azienda = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Azienda'")[0]['idtipoanagrafica'];
$id_cliente = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Cliente'")[0]['idtipoanagrafica'];
$id_fornitore = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Fornitore'")[0]['idtipoanagrafica'];
$id_tecnico = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Tecnico'")[0]['idtipoanagrafica'];
switch (post('op')) {
case 'update':
$post['piva'] = trim(strtoupper($post['piva']));
@ -183,8 +188,9 @@ switch (post('op')) {
// Inserisco il rapporto dell'anagrafica (cliente, tecnico, ecc)
$dbo->sync('an_tipianagrafiche_anagrafiche', ['idanagrafica' => $new_id], ['idtipoanagrafica' => (array) $idtipoanagrafica]);
if (in_array($id_azienda, $post['idtipoanagrafica'])) {
$dbo->query('UPDATE zz_settings SET valore='.prepare($new_id)." WHERE nome='Azienda predefinita'");
if (in_array($id_azienda, $idtipoanagrafica)) {
Settings::set('Azienda predefinita', $new_id);
$_SESSION['infos'][] = tr('Anagrafica Azienda impostata come predefinita. Per ulteriori informazionioni, visitare "Strumenti -> Impostazioni -> Generali".');
}
@ -266,19 +272,13 @@ switch (post('op')) {
// Operazioni aggiuntive per il logo
if (filter('op') == 'link_file') {
$nome = 'Logo stampe';
if (Settings::get('Azienda predefinita') == $id_record && filter('nome_allegato') == $nome) {
if (Settings::get('Azienda predefinita') == $id_record && filter('nome_allegato') == 'Logo stampe') {
$file = $dbo->selectOne('zz_files', ['filename'], [
'nome' => $nome,
'id_module' => $id_module,
'id_record' => $id_record,
]);
$dbo->update('zz_settings', [
'valore' => $file['filename'],
], [
'nome' => $nome,
]);
Settings::set('Logo stampe', $nome);
}
}

View File

@ -2,11 +2,6 @@
include_once __DIR__.'/../../core.php';
$id_azienda = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Azienda'")[0]['idtipoanagrafica'];
$id_cliente = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Cliente'")[0]['idtipoanagrafica'];
$id_fornitore = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Fornitore'")[0]['idtipoanagrafica'];
$id_tecnico = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Tecnico'")[0]['idtipoanagrafica'];
if (isset($id_record)) {
$records = $dbo->fetchArray('SELECT *, (SELECT GROUP_CONCAT(an_tipianagrafiche.idtipoanagrafica) FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica=an_anagrafiche.idanagrafica) AS idtipianagrafica, (SELECT GROUP_CONCAT(idagente) FROM an_anagrafiche_agenti WHERE idanagrafica=an_anagrafiche.idanagrafica) AS idagenti, (SELECT GROUP_CONCAT(descrizione) FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica=an_anagrafiche.idanagrafica) AS tipianagrafica FROM an_anagrafiche GROUP BY idanagrafica HAVING idanagrafica='.prepare($id_record).' '.Modules::getAdditionalsQuery($id_module));

View File

@ -111,7 +111,7 @@ class API extends \Util\Singleton
include $filename;
} elseif (
!in_array($resource, explode(',', Settings::get('Tabelle escluse per la sincronizzazione API automatica')))
&& $database->fetchNum('SHOW TABLES WHERE `Tables_in_'.$database->getDatabaseName().'` = '.prepare($resource))
&& $database->tableExists($resource)
) {
$table = $resource;

View File

@ -411,7 +411,7 @@ class Auth extends \Util\Singleton
{
$database = Database::getConnection();
if (!$database->isInstalled() || !$database->fetchNum("SHOW TABLES LIKE 'zz_logs'") || Update::isUpdateAvailable()) {
if (!$database->isInstalled() || !$database->tableExists('zz_logs') || Update::isUpdateAvailable()) {
return false;
}

View File

@ -174,7 +174,7 @@ class Database extends Util\Singleton
public function isInstalled()
{
if (empty($this->is_installed)) {
$this->is_installed = $this->isConnected() && $this->fetchNum("SHOW TABLES LIKE 'zz_modules'");
$this->is_installed = $this->tableExists('zz_modules');
}
return $this->is_installed;
@ -321,16 +321,28 @@ class Database extends Util\Singleton
*
* @param string $query Query da eseguire
*
* @return array
* @return int
*/
public function fetchNum($query)
{
$result = $this->fetchArray($query);
if (is_array($result)) {
return count($result);
$result = $this->fetchArray('SELECT COUNT(*) as `tot` FROM ('.$query.') AS `count`');
if (!empty($result)) {
return $result[0]['tot'];
}
return $result;
return 0;
}
public function tableExists($table)
{
$results = null;
if ($this->isConnected()) {
$results = $this->fetchArray("SHOW TABLES LIKE '".$table."'");
}
return !empty($results);
}
/**

View File

@ -17,7 +17,7 @@ class Update
{
$database = Database::getConnection();
$database_ready = $database->isConnected() && $database->fetchNum("SHOW TABLES LIKE 'updates'");
$database_ready = $database->isConnected() && $database->tableExists('updates');
// Individuazione di tutti gli aggiornamenti fisicamente presenti
// Aggiornamenti del gestionale

View File

@ -91,7 +91,7 @@ $tables = [
];
foreach ($tables as $table) {
if ($database->fetchNum('SHOW TABLES WHERE `Tables_in_'.$database->getDatabaseName().'` = '.prepare($table))) {
if ($database->tableExists($table)) {
$query = 'SHOW COLUMNS FROM `'.$table.'` IN `'.$database->getDatabaseName()."` WHERE Field='|field|'";
$created_at = $database->fetchArray(str_replace('|field|', 'created_at', $query));