update di migliaia di record dentro ciclo | PHP

Topic: Pubblico - Composto da 4 Posts di 2 Utenti.

20 Maggio, 2011 23:08 #1
geko66
Utente

geko66
Registrato: May, 2011
Posts: 8
Offline

salve, è la prima volta che scrivo in questo forum. ho un problema con una serie di istruzioni di update

ciao,
sto provando una serie di update dentro un ciclo while, ma non funziona, l'echo a video mostra tutte le istruzioni di update, eseguita singolarmente funzionano ma da script PHP non fa nulla, i campi restano a null. per ognuno dei record selezionati mi costruisco l'istruzione di update che viene eseguita e così ad ogni iterazione del ciclo fino a quando non ci sono più record nell'array:

 1$sql_gg_garanzia = 
 2"SELECT a.id_scheda AS id_scheda,  
 3        a.sistema AS sistema,  
 4        b.data_esercizio AS data_esercizio, 
 5        datediff(a.data_apertura,b.data_esercizio) AS gg_garanzia  
 6 FROM kpi_sm_calcolo a, kpi_kit b  
 7 WHERE a.KIT= b.kit AND a.ambiente='Esercizio';"; 
 8
 9if ($resGaranzia = mysqli_query($db, $sql_gg_garanzia)) { 
10    /* fetch associative array */ 
11    while ($a_row = mysqli_fetch_row($resGaranzia)) { 
12    $sqlUpdgaranzia = "UPDATE kpi_sm_calcolo  
13         SET data_esercizio = '$a_row[2]', garanzia = $a_row[3]
14         WHERE id_scheda='$a_row[0]' AND sistema='$a_row[1]';"; 
15    echo $sqlUpdgaranzia ."</br>"; 
16    mysqli_query($db,$sqlUpdgaranzia); 
17    } 
18    mysqli_commit($db);

HO fatto numerose prove, la singola istruzione presa singolarmente viene eseguita, escludo problemi di sintassi, può essere un problema di qualche parametro di configurazione di mysql o PHP, relativo alla memeoria, alla cache size etcc.. che vada settato in qualche maniera ? Grazie 1000 per l'auto che vorrette darmi, ciao

21 Maggio, 2011 09:42 #2
john_revelator
Moderatore

john_revelator
Registrato: Jun, 2009
Posts: 270
Offline

Ciao e benvenuto. Non capisco perchè usi degli alias identici ai nomi dei campi. Tanto vale farne a meno.

Detto questo posta un dump delle due tabelle (comprensivo di create e di qualche insert) e il risultato che vorresti ottenere.


No PVT tecnici. Non rispondo nemmeno. Usate il forum.
My SO profile

23 Maggio, 2011 10:47 #3
geko66
Utente

geko66
Registrato: May, 2011
Posts: 8
Offline

uso gli alias perchè una volta riscontrai un problema in mysql nell'identificare i nomi dei campi passati al motore mysql attraverso una stringa php e risolsi così con gli alias, da allora uso questa modalità. Penso che il problema non sia di natura sintattica perchè il pezzo di codice l'ho eseguito corretamente, forse il problema nasce dal fatto che questa istruzione di update è l'ultima di una serie di istruzioni INSERT/SELECT, ora da infatti un problema di sincronizzazione (Commands out of sync; you can't run this command now errno:2014 ), oso allegare l'intero script php, spero di non abusare della vostra pazienza ...

  1<?php 
  2//include("include/dbconnection.php");
  3
  4error_reporting(1);
  5
  6$db = mysqli_init();
  7mysqli_real_connect($db, "localhost","root","","KPI_DB_DBG");
  8
  9mysqli_select_db($db, "KPI_DB_DBG");
 10/* set autocommit to off */
 11mysqli_AUTOCOMMIT($db,FALSE); 
 12
 13print_r($_POST);
 14print_r($_FILES);
 15
 16if (isset($_POST['carica']) && $_POST['carica'] == 'Carica') 
 17{
 18
 19        /*        Da svuotare ad ogni caricamento:
 20        KPI_SM_ORIGINALE, KPI_SM_SISTEMI_PRIDE, KPI_SM_SCARTATE, KPI_SM_CALCOLO 
 21        */
 22
 23echo "Caricamento in corso ........";
 24        
 25        // Effettuare truncate tabelle
 26        /*****/
 27        $sqlTruncateKSO = "TRUNCATE TABLE `KPI_SM_ORIGINALE`;";
 28        $sqlTruncateKSSP= "TRUNCATE TABLE `KPI_SM_SISTEMI_PRIDE`;";
 29        $sqlTruncateKSS = "TRUNCATE TABLE `KPI_SM_SCARTATE`;";
 30        $sqlTruncateKSC = "TRUNCATE TABLE `KPI_SM_CALCOLO`;";
 31        
 32        $result = mysqli_query($db,$sqlTruncateKSSP) or die("<h3>Errore durante la truncate di KPI_SM_SISTEMI_PRIDE.<br><br>". mysql_error());
 33        $result = mysqli_query($db,$sqlTruncateKSS) or die("<h3>Errore durante la truncate di KPI_SM_SCARTATE.<br><br>". mysql_error());
 34        $result = mysqli_query($db,$sqlTruncateKSC) or die("<h3>Errore durante la truncate di KPI_SM_CALCOLO.<br><br>". mysql_error());
 35
 36        $result = mysqli_query($db,$sqlTruncateKSO) or die("<h3>Errore durante la truncate di KPI_SM_ORIGINALE.<br><br>". mysql_error());
 37        
 38        // libero il dataset
 39        // mysqli_free_result($result);
 40
 41        
 42        // controllo che non ci siano stati errori nell'upload (codice = 0)  
 43        if ($_FILES['uploadfile']['error'] == 0){ 
 44                // upload ok 
 45                // controllo che il file sia in formato csv
 46                if ($_FILES['uploadfile']['type'] != "application/vnd.ms-excel") die("Formato file non valido, è permesso solo il formato csv di Excel");
 47                 
 48                // copio il file dalla cartella temporanea a quella di destinazione mantenendo il nome originale  
 49                // copy($_FILES['uploadfile']['tmp_name'], "C:\\xampp\\htdocs\\kpi\\backup_files\\".$_FILES['uploadfile']['name']) or die("Impossibile caricare il file"); 
 50                
 51                // upload terminato, stampo alcune info sul file 
 52                echo "Upload terminato con successo:<br>"; 
 53                echo "Nome file: ".$_FILES['uploadfile']['name']."<br>"; 
 54                echo "Dimensione file: ".$_FILES['uploadfile']['size']."<br>"; 
 55                echo "Tipo MIME file: ".$_FILES['uploadfile']['type']."<br>"; ;
 56                echo "File temporaneo:".$_FILES['uploadfile']['tmp_name']."<br>"; 
 57
 58                // istruzioni di LOAD su DB
 59                $resCount = mysqli_query($db,"SELECT count(*) AS numrighe FROM KPI_SM_ORIGINALE;") or die("<h3>Errore durante la select count(*) di kpi_sm_originale.<br><br>". mysqli_error($db));
 60                $row=mysqli_fetch_object($resCount);
 61                echo "<br>Righe:".$row->numrighe."<br>";
 62                        
 63                $filename = "C:\\\\tmp\\\\kpi\\\\".$_FILES['uploadfile']['name'];
 64                echo "filename :".$filename;
 65                
 66                if ( $row->numrighe == 0){
 67                        // #############  CARICAMENTO KPI_SM_ORIGINALE #####################
 68                        echo "Attendere prego, caricamento in esecuzione ......";
 69                        $sqlImport = "LOAD DATA LOCAL INFILE '$filename' INTO TABLE `KPI_SM_ORIGINALE` FIELDS TERMINATED BY ';' ENCLOSED BY '\"' ESCAPED BY '\\\' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES";
 70                        
 71//$sqlImport="LOAD DATA LOCAL INFILE '$filename' INTO TABLE `KPI_SM_ORIGINALE` FIELDS TERMINATED BY ';' ENCLOSED BY '\"' ESCAPED BY '\\\' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES ";
 72//$sqlImport = "LOAD DATA LOCAL INFILE \'C:\\\\tmp\\\\kpi\\\\SM_NCI_1gen2010_3febb2011.csv\' INTO TABLE `KPI_SM_ORIGINALE` FIELDS TERMINATED BY \';\' ENCLOSED BY \'\"\' ESCAPED BY \'\\\\\' LINES TERMINATED BY \'\\r\\n\' IGNORE 1 LINES";
 73
 74                        echo "<br>sqlImport: ".$sqlImport."<br>";
 75                        //$resImport = mysqli_query($db,$sqlImport) or die("<h3>Errore durante la load in tabella<br><br>". mysqli_error($db)."error:".mysqli_errno($db));
 76                        $resImport = mysqli_query($db,$sqlImport);
 77                        
 78                
 79                        // ############# insert kit in KPI_KIT da kpi_sm_originale #####################
 80                        // Al termine del caricamento del file con successo è necessario inserire senza 
 81                        // duplicati il valore della colonna KIT della tabella KPI_SM_ORIGINALE nella medesima colonna della tabella KPI_KIT. 
 82                        // --> TODO: verificare che non iserisca KIT già esistenti <-- TOTO //
 83                        //$sqlInsKit= "insert into kpi_kit(KIT) select distinct KIT FROM kpi_sm_originale where kit !="";";
 84                        
 85                        $sqlInsKit="INSERT INTO kpi_kit(KIT) SELECT DISTINCT a.KIT FROM kpi_sm_originale a
 86                                                WHERE a.kit NOT IN (SELECT kit FROM kpi_kit) AND a.KIT IS NOT NULL AND a.KIT !=''";
 87                                                
 88                        $result = mysqli_query($db,$sqlInsKit) or die("<h3>Errore durante l'inserimento dei dati di kpi_kit in carico !<br><br>". mysqli_error($db));                        
 89
 90                        // ###########  PRIMO PUNTO DI COMMIT : DOPO IMPORT FILE .CSV e KPI_KIT ###################### //
 91                        // if (mysqli_affected_rows($db)) {
 92                                echo "PRIMO PUNTO DI COMMIT : DOPO IMPORT FILE .CSV e KPI_KIT.</br>";
 93                                mysqli_commit($db);
 94                        //} else {
 95                        //        echo "C'è stato un errore: Faccio rollback di ins kpi_kit.";
 96                        //        mysqli_rollback($db);
 97                        //}
 98                
 99                        // Libero il dataset
100                        // mysqli_free_result($result);
101                
102                
103                        // ##################### popolare la tabella kpi_sistemi_pride da kpi_sm_originale per sistemi in carico a Pride #####################
104                        $sqlInsKSPsi= "insert into kpi_sm_sistemi_pride select * from kpi_sm_originale where sistema in (select sistema from kpi_sistemi_pride where in_carico='SI');";
105                        $result = mysqli_query($db,$sqlInsKSPsi) or die("<h3>Errore durante l'aggiornamento dei dati di kpi_sm_sistemi_pride in carico !<br><br>". mysqli_error($db));
106                        
107                        echo "righe affected by insert in kpi_sm_sistemi_pride :".mysqli_affected_rows($db)."</br>";
108                                                
109                        // ##################### popolare la tabella kpi_sm_scartate da kpi_sm_originale per sistemi NON in carico a Pride #####################
110                        $sqlInsKSSno= "INSERT INTO KPI_SM_SCARTATE( ID_SCHEDA, TEST_FACTORY, AREA_TESTING, SISTEMA, KIT, AMBIENTE, DATA_APERTURA, STATO, SEVERITA, TIPO_SCHEDA, SM_DESIGN, FLAG_BONIFICA, FLAG_COLLAUDABILE, TIPO_ANNULLAMENTO, TEMPO_T1, TEMPO_T2, TEMPO_T3, TEMPO_T4, TEMPO_T5, TEMPO_T6, TIPO_SCARTO ) 
111                                                   SELECT ID_SCHEDA, TEST_FACTORY, AREA_TESTING, SISTEMA, KIT, AMBIENTE, DATA_APERTURA, STATO, SEVERITA, TIPO_SCHEDA, SM_DESIGN, FLAG_BONIFICA, FLAG_COLLAUDABILE, TIPO_ANNULLAMENTO, TEMPO_T1, TEMPO_T2, TEMPO_T3, TEMPO_T4, TEMPO_T5, TEMPO_T6, 1
112                                                   FROM kpi_sm_originale WHERE sistema IN ( SELECT sistema FROM kpi_sistemi_pride WHERE in_carico = 'NO' or in_carico='' )";
113                        
114                        $result = mysqli_query($db,$sqlInsKSSno) or die("<h3>Errore durante l'aggiornamento dei dati di kpi_sm_scartate non in carico !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
115                        echo "righe affected by insert in kpi_sm_scartate :".mysqli_affected_rows($db)."</br>";
116
117                        #### inserire in kpi_sm_calcolo da kpi_sm_sistemi_pride
118                        $sqlInsKSC="insert into `KPI_SM_CALCOLO` (`ID_SCHEDA`,`TEST_FACTORY`,`AREA_TESTING`,`SISTEMA`,`KIT`,`AMBIENTE`,`DATA_APERTURA`,`STATO`,`SEVERITA`,
119                                                `TIPO_SCHEDA`,`SM_DESIGN`,`FLAG_BONIFICA`,`FLAG_COLLAUDABILE`,`TIPO_ANNULLAMENTO`,`TEMPO_T1`,`TEMPO_T2`,`TEMPO_T3`,`TEMPO_T4`,`TEMPO_T5`,`TEMPO_T6`)
120                                                select `ID_SCHEDA`,`TEST_FACTORY`,`AREA_TESTING`,`SISTEMA`,`KIT`,`AMBIENTE`,`DATA_APERTURA`,`STATO`,`SEVERITA`,`TIPO_SCHEDA`,`SM_DESIGN`,`FLAG_BONIFICA`,`FLAG_COLLAUDABILE`,
121                                                `TIPO_ANNULLAMENTO`,`TEMPO_T1`,`TEMPO_T2`,`TEMPO_T3`,`TEMPO_T4`,`TEMPO_T5`,`TEMPO_T6` from `KPI_SM_SISTEMI_PRIDE`";
122                        
123                        $result = mysqli_query($db,$sqlInsKSC) or die("<h3>Errore durante l'inserimento dei dati in kpi_sm_calcolo da kpi_sm_sistemi_pride !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
124                        echo "righe affected by insert in kpi_sm_calcolo :".mysqli_affected_rows($db)."</br>";
125                                        
126                        // ###########  SECONDO PUNTO DI COMMIT: INSERIMENTO IN KPI_KIT nuovi KIT, kpi_sm_sistemi_pride, 
127                        // ###########  KPI_SM_SCARTATE, KPI_SM_CALCOLO ###################### //
128                        
129                        if (mysqli_affected_rows($db)) {
130                                echo "SECONDO PUNTO DI COMMIT.</br>";
131                                mysqli_commit($db);
132                        } else {
133                                echo "C'è stato un errore: Faccio rollback di sqlInsKSC. </br>";
134                                mysqli_rollback($db);
135                        }
136                        
137                        // Libero il dataset
138                        // mysqli_free_result($result);
139                        
140                        #####  POPOLAMENTO TABELLE KPI_SM_SCARTATE E KPI_SM_CALCOLO ##########################
141                        #### caso A: KIT non inerente al calcolo corrente
142                        $sqlInsKSSn ="insert into kpi_sm_scartate (ID_SCHEDA, TEST_FACTORY, AREA_TESTING,   SISTEMA,    KIT, AMBIENTE,    DATA_APERTURA,     STATO, SEVERITA,     TIPO_SCHEDA,   SM_DESIGN,   FLAG_BONIFICA, FLAG_COLLAUDABILE,     TIPO_ANNULLAMENTO,   TEMPO_T1,   TEMPO_T2,   TEMPO_T3,   TEMPO_T4,   TEMPO_T5,   TEMPO_T6, TIPO_SCARTO)
143                                                select b.ID_SCHEDA, b.TEST_FACTORY, b.AREA_TESTING, b.SISTEMA, b.KIT, b.AMBIENTE, b.DATA_APERTURA, b.STATO, b.SEVERITA, b.TIPO_SCHEDA, b.SM_DESIGN, b.FLAG_BONIFICA, b.FLAG_COLLAUDABILE, b.TIPO_ANNULLAMENTO, b.TEMPO_T1, b.TEMPO_T2, b.TEMPO_T3, b.TEMPO_T4, b.TEMPO_T5, b.TEMPO_T6, 2
144                                                from kpi_kit a, kpi_sm_calcolo b where a.kit= b.KIT and a.KPI='N'";
145                        
146                        $result = mysqli_query($db,$sqlInsKSSn) or die("<h3>Errore durante l'inserimento dei dati in kpi_sm_scartate per KPI=N !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
147                        echo "righe affected by insert in kpi_sm_scartate :".mysqli_affected_rows($db)."</br>";
148                        
149                        // Libero il dataset
150                        //mysqli_free_result($result);
151                        
152                        // poi le elimina dalla tabella di calcolo
153                        $sqlDelKSC = "delete from kpi_sm_calcolo where kit in (select kit from kpi_kit where kpi='N')";
154                        $result = mysqli_query($db,$sqlDelKSC) or die("<h3>Errore durante l'inserimento dei dati in kpi_sm_scartate per KPI=N !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
155                        echo "righe affected by insert in kpi_sm_scartate :".mysqli_affected_rows($db)."</br>";
156                                        
157                        #### caso B: AMBIENTE non inerente
158                        $sqlInsKSSamb="insert into kpi_sm_scartate (ID_SCHEDA, TEST_FACTORY, AREA_TESTING,   SISTEMA,    KIT, AMBIENTE,    DATA_APERTURA,     STATO, SEVERITA,     TIPO_SCHEDA,   SM_DESIGN,   FLAG_BONIFICA, FLAG_COLLAUDABILE,     TIPO_ANNULLAMENTO,   TEMPO_T1,   TEMPO_T2,   TEMPO_T3,   TEMPO_T4,   TEMPO_T5,   TEMPO_T6, TIPO_SCARTO)
159                                                   select b.ID_SCHEDA, b.TEST_FACTORY, b.AREA_TESTING, b.SISTEMA, b.KIT, b.AMBIENTE, b.DATA_APERTURA, b.STATO, b.SEVERITA, b.TIPO_SCHEDA, b.SM_DESIGN, b.FLAG_BONIFICA, b.FLAG_COLLAUDABILE, b.TIPO_ANNULLAMENTO, b.TEMPO_T1, b.TEMPO_T2, b.TEMPO_T3, b.TEMPO_T4, b.TEMPO_T5, b.TEMPO_T6, 3
160                                                   from kpi_sm_Calcolo b where b.`AMBIENTE` not in ('Collaudo','Esercizio','Collaudo Utente')";
161
162                        $result = mysqli_query($db,$sqlInsKSSamb) or die("<h3>Errore durante l'inserimento dei dati in kpi_sm_scartate per KPI=N !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
163                        echo "righe affected by insert in kpi_sm_scartate (AMBIENTE)  :".mysqli_affected_rows($db)."</br>";
164                
165                        // poi si eliminano dalla tabella di calcolo
166                        $sqlDelKSSamb="delete from kpi_sm_Calcolo where `AMBIENTE` not in ('Collaudo','Esercizio','Collaudo Utente')";
167                        $result = mysqli_query($db,$sqlDelKSSamb) or die("<h3>Errore durante la delete dei dati da kpi_sm_calcolo per Ambinete non inerente !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
168                        echo "righe affected by delete from kpi_sm_calcolo  (AMBIENTE):".mysqli_affected_rows($db)."</br>";
169
170                        // Libero il dataset
171                        // mysqli_free_result($result);
172                        
173                        #### caso C: TIPO_SCHEDA non inerente
174                        $sqlInsKSSsch="insert into kpi_sm_scartate (ID_SCHEDA, TEST_FACTORY, AREA_TESTING,   SISTEMA,    KIT, AMBIENTE,    DATA_APERTURA,     STATO, SEVERITA,     TIPO_SCHEDA,   SM_DESIGN,   FLAG_BONIFICA, FLAG_COLLAUDABILE,     TIPO_ANNULLAMENTO,   TEMPO_T1,   TEMPO_T2,   TEMPO_T3,   TEMPO_T4,   TEMPO_T5,   TEMPO_T6, TIPO_SCARTO)
175                                                   select b.ID_SCHEDA, b.TEST_FACTORY, b.AREA_TESTING, b.SISTEMA, b.KIT, b.AMBIENTE, b.DATA_APERTURA, b.STATO, b.SEVERITA, b.TIPO_SCHEDA, b.SM_DESIGN, b.FLAG_BONIFICA, b.FLAG_COLLAUDABILE, b.TIPO_ANNULLAMENTO, b.TEMPO_T1, b.TEMPO_T2, b.TEMPO_T3, b.TEMPO_T4, b.TEMPO_T5, b.TEMPO_T6, 4
176                                                   from kpi_sm_Calcolo b where b.`TIPO_SCHEDA` != ('Correttiva')";
177
178                        $result = mysqli_query($db,$sqlInsKSSsch) or die("<h3>Errore durante l'inserimento dei dati in kpi_sm_scartate per KPI=N !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
179                        echo "righe affected by insert in kpi_sm_scartate (tipo_scheda)  :".mysqli_affected_rows($db)."</br>";
180                        
181                        // poi si eliminano dalla tabella di calcolo
182                        $sqlDelKSSsch="DELETE from kpi_sm_Calcolo where `TIPO_SCHEDA` not in ('Correttiva')";
183                        $result = mysqli_query($db,$sqlDelKSSsch) or die("<h3>Errore durante la delete dei dati da kpi_sm_calcolo per Ambinete non inerente !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
184                        echo "righe affected by delete from kpi_sm_calcolo  (tipo_scheda):".mysqli_affected_rows($db)."</br>";
185
186                        // Libero il dataset
187                        // mysqli_free_result($result);
188                        
189                        #### caso D: SM NON COLLAUDABILE
190                        $sqlInsKSSflgco="insert into kpi_sm_scartate (ID_SCHEDA, TEST_FACTORY, AREA_TESTING,   SISTEMA,    KIT, AMBIENTE,    DATA_APERTURA,     STATO, SEVERITA,     TIPO_SCHEDA,   SM_DESIGN,   FLAG_BONIFICA, FLAG_COLLAUDABILE,     TIPO_ANNULLAMENTO,   TEMPO_T1,   TEMPO_T2,   TEMPO_T3,   TEMPO_T4,   TEMPO_T5,   TEMPO_T6, TIPO_SCARTO)
191                                                   select b.ID_SCHEDA, b.TEST_FACTORY, b.AREA_TESTING, b.SISTEMA, b.KIT, b.AMBIENTE, b.DATA_APERTURA, b.STATO, b.SEVERITA, b.TIPO_SCHEDA, b.SM_DESIGN, b.FLAG_BONIFICA, b.FLAG_COLLAUDABILE, b.TIPO_ANNULLAMENTO, b.TEMPO_T1, b.TEMPO_T2, b.TEMPO_T3, b.TEMPO_T4, b.TEMPO_T5, b.TEMPO_T6, 5
192                                                   from kpi_sm_Calcolo b where b.`FLAG_COLLAUDABILE` ='N'";
193
194                        $result = mysqli_query($db,$sqlInsKSSflgco) or die("<h3>Errore durante l'inserimento dei dati in kpi_sm_scartate per FLAG_COLLAUDABILE=N !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
195                        echo "righe affected by insert in kpi_sm_scartate (flag_colaudabile)  :".mysqli_affected_rows($db)."</br>";
196                        
197
198                        // poi si eliminano dalla tabella di calcolo
199                        $sqlDelKSSflgco="DELETE from kpi_sm_Calcolo where `FLAG_COLLAUDABILE` ='N'";
200                        $result = mysqli_query($db,$sqlDelKSSflgco) or die("<h3>Errore durante la delete dei dati da kpi_sm_calcolo per FLAG_COLLAUDABILE=N !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
201                        echo "righe affected by delete from kpi_sm_calcolo  (flag_colaudabile):".mysqli_affected_rows($db)."</br>";
202                                        
203                        // Libero il dataset
204                        // mysqli_free_result($result);
205
206                        #### caso E: SM CON SEVERITA' 5
207                        $sqlInsKSSsev="insert into kpi_sm_scartate (ID_SCHEDA, TEST_FACTORY, AREA_TESTING,   SISTEMA,    KIT, AMBIENTE,    DATA_APERTURA,     STATO, SEVERITA,     TIPO_SCHEDA,   SM_DESIGN,   FLAG_BONIFICA, FLAG_COLLAUDABILE,     TIPO_ANNULLAMENTO,   TEMPO_T1,   TEMPO_T2,   TEMPO_T3,   TEMPO_T4,   TEMPO_T5,   TEMPO_T6, TIPO_SCARTO)
208                                                   select b.ID_SCHEDA, b.TEST_FACTORY, b.AREA_TESTING, b.SISTEMA, b.KIT, b.AMBIENTE, b.DATA_APERTURA, b.STATO, b.SEVERITA, b.TIPO_SCHEDA, b.SM_DESIGN, b.FLAG_BONIFICA, b.FLAG_COLLAUDABILE, b.TIPO_ANNULLAMENTO, b.TEMPO_T1, b.TEMPO_T2, b.TEMPO_T3, b.TEMPO_T4, b.TEMPO_T5, b.TEMPO_T6, 5
209                                                   from kpi_sm_Calcolo b where b.`SEVERITA` ='5 N.A.'";
210
211                        $result = mysqli_query($db,$sqlInsKSSsev) or die("<h3>Errore durante l'inserimento dei dati in kpi_sm_scartate per FLAG_COLLAUDABILE=N !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
212                        echo "righe affected by insert in kpi_sm_scartate (sqlDelKSSsev)  :".mysqli_affected_rows($db)."</br>";
213                        
214                        // poi si eliminano dalla tabella di calcolo
215                        $sqlDelKSSsev="DELETE from kpi_sm_Calcolo where `SEVERITA` ='5 N.A.'";
216                        $result = mysqli_query($db,$sqlDelKSSsev) or die("<h3>Errore durante la delete dei dati da kpi_sm_calcolo per FLAG_COLLAUDABILE=N !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
217                        echo "righe affected by delete from kpi_sm_calcolo  (severita):".mysqli_affected_rows($db)."</br>";
218
219                        // Libero il dataset
220                        // mysqli_free_result($result);
221                        
222                        #### caso F: SM BONIFICHE
223                        $sqlInsKSSbon="insert into kpi_sm_scartate (ID_SCHEDA, TEST_FACTORY, AREA_TESTING,   SISTEMA,    KIT, AMBIENTE,    DATA_APERTURA,     STATO, SEVERITA,     TIPO_SCHEDA,   SM_DESIGN,   FLAG_BONIFICA, FLAG_COLLAUDABILE,     TIPO_ANNULLAMENTO,   TEMPO_T1,   TEMPO_T2,   TEMPO_T3,   TEMPO_T4,   TEMPO_T5,   TEMPO_T6, TIPO_SCARTO)
224                                                   select b.ID_SCHEDA, b.TEST_FACTORY, b.AREA_TESTING, b.SISTEMA, b.KIT, b.AMBIENTE, b.DATA_APERTURA, b.STATO, b.SEVERITA, b.TIPO_SCHEDA, b.SM_DESIGN, b.FLAG_BONIFICA, b.FLAG_COLLAUDABILE, b.TIPO_ANNULLAMENTO, b.TEMPO_T1, b.TEMPO_T2, b.TEMPO_T3, b.TEMPO_T4, b.TEMPO_T5, b.TEMPO_T6, 7
225                                                   from kpi_sm_Calcolo b where b.`FLAG_BONIFICA` ='Y'";
226
227                        $result = mysqli_query($db,$sqlInsKSSbon) or die("<h3>Errore durante l'inserimento dei dati in kpi_sm_scartate per FLAG_COLLAUDABILE=Y !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
228                        echo "righe affected by insert in kpi_sm_scartate (FLAG_COLLAUDABILE=Y)  :".mysqli_affected_rows($db)."</br>";
229
230                        // Libero il dataset
231                        // mysqli_free_result($result);
232                        
233                        // poi si eliminano dalla tabella di calcolo
234                        $sqlDelKSSbon="delete from kpi_sm_calcolo where `FLAG_BONIFICA` ='Y'";
235                        $result = mysqli_query($db,$sqlDelKSSbon) or die("<h3>Errore durante la delete dei dati da kpi_sm_calcolo per FLAG_BONIFICA=Y !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
236                        echo "righe affected by delete from kpi_sm_calcolo(FLAG_BONIFICA):".mysqli_affected_rows($db)."erno:".mysqli_errno($db)."</br>";
237                        
238                        // Libero il dataset
239                        // mysqli_free_result($result);
240                        
241                        ############ Caso G: SM esercizio, calcolo gg di garanzia ##########
242                        // $sql_p_garanzia = "CALL p_garanzia()";
243                        // $result = mysqli_query($db,$sql_p_garanzia) or die ("<h3>Errore durante il calcolo dei giorni di garanzia <br><br>". mysqli_error($db)."erno:".mysqli_errno($db));
244                        
245                        // Check esistenza data_esercizio di KPI_KIT
246                        $sqlDtEser = "SELECT count(*) AS numDtEser 
247                                                  FROM kpi_sm_calcolo a, kpi_kit b 
248                                                  WHERE a.KIT = b.kit 
249                                                  AND a.ambiente='Esercizio'
250                                                  AND b.data_esercizio is null";
251                        
252                        $resDtEser = mysqli_query($db,$sqlDtEser) or die("<h3>Errore durante la select count(*) di kpi_sm_originale.<br><br>". mysqli_error($db));
253                        $rowDtEser=mysqli_fetch_object($resDtEser);
254                        echo "<br>data_esercizio vuote kpi_kit/kpi_sm_calcolo :".$rowDtEser->numDtEser."<br>";
255                        
256                        if ($rowDtEser->numDtEser==0) {
257                        
258                                $sql_gg_garanzia = "SELECT a.id_scheda AS id_scheda, 
259                                                                                   a.sistema AS sistema, 
260                                                                                   b.data_esercizio AS data_esercizio,
261                                                                                   datediff(a.data_apertura,b.data_esercizio) AS gg_garanzia 
262                                                                        FROM kpi_sm_calcolo a, kpi_kit b 
263                                                                        WHERE a.KIT= b.kit AND a.ambiente='Esercizio';";
264
265                                if ($resGaranzia = mysqli_multi_query($db, $sql_gg_garanzia)) {
266                                        /* fetch associative array */
267                                        while ($a_row = mysqli_fetch_row($resGaranzia)) {
268                                                //echo $a_row[0] . " - " . $a_row[1] . " - " .$a_row[2] . " - " .$a_row[3] . "<br>\n";
269                                                $sqlUpdgaranzia = "UPDATE kpi_sm_calcolo SET data_esercizio = \"$a_row[2]\", garanzia = \"$a_row[3]\" WHERE id_scheda=\"$a_row[0]\" AND sistema=\"$a_row[1]\";";
270                                                
271$sqlUpdgaranzia = "UPDATE kpi_sm_calcolo SET data_esercizio = '{$a_row[2]}', garanzia = {$a_row[3]} WHERE id_scheda='{$a_row[0]}' AND sistema='{$a_row[1]}';";
272                                                
273                                                $resUpd=mysqli_query($db,$sqlUpdgaranzia) or die("<h3>Errore durante l'UPDATE !<br><br>". mysqli_error($db)."errno:".mysqli_errno($db));
274                                                //mysqli_commit($db);
275                                                //print_r($resUpd)."</br>";
276                                                //var_dump($resUpd)."</br>";
277                                                echo $sqlUpdgaranzia ."</br>";
278                                        }
279                                        /* commit */
280                                        mysqli_commit($db);
281                                }
282                                // stampa di debug dell'array
283                                echo "</br>";
284                                //print_r($argggaranzia);
285
286                                // Libero il dataset
287                                //mysqli_free_result($result);
288                                
289                                // Scarto e cancellazione delle Sm <0
290                                $sqlInsKSSgg0="insert into kpi_sm_scartate (ID_SCHEDA, TEST_FACTORY, AREA_TESTING,   SISTEMA,    KIT, AMBIENTE,    DATA_APERTURA,     STATO, SEVERITA,     TIPO_SCHEDA,   SM_DESIGN,   FLAG_BONIFICA, FLAG_COLLAUDABILE,     TIPO_ANNULLAMENTO,   TEMPO_T1,   TEMPO_T2,   TEMPO_T3,   TEMPO_T4,   TEMPO_T5,   TEMPO_T6, TIPO_SCARTO)
291                                select b.ID_SCHEDA, b.TEST_FACTORY, b.AREA_TESTING, b.SISTEMA, b.KIT, b.AMBIENTE, b.DATA_APERTURA, b.STATO, b.SEVERITA, b.TIPO_SCHEDA, b.SM_DESIGN, b.FLAG_BONIFICA, b.FLAG_COLLAUDABILE, b.TIPO_ANNULLAMENTO, b.TEMPO_T1, b.TEMPO_T2, b.TEMPO_T3, b.TEMPO_T4, b.TEMPO_T5, b.TEMPO_T6, 8
292                                from kpi_sm_Calcolo b where b.ambiente ='Esercizio' AND b.garanzia < 0";
293
294                                $result = mysqli_query($db,$sqlInsKSSgg0) or die("<h3>Errore durante l'inserimento dei dati in kpi_sm_scartate per garanzia <0 !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
295                                echo "righe affected by insert in kpi_sm_scartate (garanzia <0)  :".mysqli_affected_rows($db)."</br>";
296                                
297                                $sqlDelKSSgg0="delete from kpi_sm_calcolo where ambiente='Esercizio' AND garanzia <0";
298                                $result = mysqli_query($db,$sqlDelKSSgg0) or die("<h3>Errore durante la delete dei dati da kpi_sm_calcolo per garanzia <0 !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
299                                echo "righe affected by delete from kpi_sm_calcolo (garanzia <0):".mysqli_affected_rows($db)."</br>";
300
301                                // Scarto e cancellazione delle Sm >20
302                                $sqlInsKSSgg20="insert into kpi_sm_scartate (ID_SCHEDA, TEST_FACTORY, AREA_TESTING,   SISTEMA,    KIT, AMBIENTE,    DATA_APERTURA,     STATO, SEVERITA,     TIPO_SCHEDA,   SM_DESIGN,   FLAG_BONIFICA, FLAG_COLLAUDABILE,     TIPO_ANNULLAMENTO,   TEMPO_T1,   TEMPO_T2,   TEMPO_T3,   TEMPO_T4,   TEMPO_T5,   TEMPO_T6, TIPO_SCARTO)
303                                select b.ID_SCHEDA, b.TEST_FACTORY, b.AREA_TESTING, b.SISTEMA, b.KIT, b.AMBIENTE, b.DATA_APERTURA, b.STATO, b.SEVERITA, b.TIPO_SCHEDA, b.SM_DESIGN, b.FLAG_BONIFICA, b.FLAG_COLLAUDABILE, b.TIPO_ANNULLAMENTO, b.TEMPO_T1, b.TEMPO_T2, b.TEMPO_T3, b.TEMPO_T4, b.TEMPO_T5, b.TEMPO_T6, 8
304                                from kpi_sm_Calcolo b where b.ambiente ='Esercizio' AND b.garanzia > 20";
305
306                                $result = mysqli_query($db,$sqlInsKSSgg20) or die("<h3>Errore durante l'inserimento dei dati in kpi_sm_scartate per garanzia > 20 !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
307                                echo "righe affected by insert in kpi_sm_scartate (garanzia > 20)  :".mysqli_affected_rows($db);
308
309                                $sqlDelKSSgg20="delete from kpi_sm_calcolo where ambiente='Esercizio' AND garanzia > 20";
310                                $result = mysqli_query($db,$sqlDelKSSgg20) or die("<h3>Errore durante la delete dei dati da kpi_sm_calcolo per garanzia >20 !<br><br>". mysqli_error($db)."erno:".mysqli_errno($db));                
311                                echo "righe affected by delete from kpi_sm_calcolo garanzia > 20):".mysqli_affected_rows($db)."</br>";
312
313                                // ###########  TERZO PUNTO DI COMMIT: caricamento finale in kpi_sm_calcolo ####
314
315                                //if (mysqli_affected_rows($db)) {
316                                        echo "TERZO PUNTO DI COMMIT.</br>";
317                                        mysqli_commit($db);
318                                //} else {
319                                //        echo "C'è stato un errore: Faccio rollback di sqlDelKSSbon";
320                                //        mysqli_rollback($db);
321                                //}
322
323                                // Libero il dataset
324                                //mysqli_free_result($result);
325                                
326                                echo "####  CARICAMENTO TERMINATO CONSUCCESSO . ";
327                        } else         {
328                                echo "Ci sono date di esercizio vuote in KPI_KIT: Faccio rollback di sqlDelKSSbon.</br>";
329                                mysqli_rollback($db);                                
330                        }
331                } else {
332                        echo "la tabella non è vuota contiene un precedente caricamento.</br>";
333                }
334        } else { 
335                // controllo il tipo di errore 
336                if ($_FILES['uploadfile']['error'] == 2) { 
337                        // errore, file troppo grande (> 1MB) 
338                        die("Errore, file troppo grande: il massimo consentito è 128MB"); 
339                } else {
340                        // errore generico 
341                        die("Errore, impossibile caricare il file"); 
342                }
343        }
344        
345} else {
346        // errore nei parametri di input da caricamento.html 
347                die("Errore nei parametri in POST."); 
348}
349mysqli_close($db);
350//mysql_close($connessione);
351
352?>

05 Giugno, 2011 20:50 #4
geko66
Utente

geko66
Registrato: May, 2011
Posts: 8
Offline

ho risolto installando il mysql workbench suggeritomi da questo forum.
in fase di debug della parte di codice in esame il mysql worknbench mi suggerisce di disabilitare il flag ["safe updates". forbid UPDATEs and DELETEs with no key in WHERE clause or no limit clause. requires a reconenction] dal menu EDIT -> Preferences -> SQL Editor. Una volta disabilitato la procedura è andata senza problemi.
grazie a tutti
ciao
geko66

Condividi su:

Loggati o Registrati per replicare