Problema caricamento tabelle MySql da PhP

Gian72Luca

Nuovo Utente
20 Mar 2019
4
0
1
Ciao a tutti, è da un po' di tempo che non visito più il forum, spero di non commettere errori nella compilazione della discussione.
Nel caso chiedo scusa in anticipo...

Da 2 giorni sto sbattendo la testa contro un muro per un problema che non riesco a risolvere.
Riducendo in modo banale il problema, dovrei caricare il contenuto di un file, realizzato da un altro programma e depositato in una directory, in una tabella in un database mysql.
Questo file potrebbe essere in formato testo con i seguenti separatori: tab, punto e virgola o virgola oppure in formato csv a seconda dall'operatore che effettua l'upload del file.
Il programma funziona correttamente fino a quando non tento di caricare dei record stringa contenenti lettere, se carico dei record stringa contenenti numeri funziona perfettamente.
Lo stesso problema lo riscontro se tento di caricare dei record null o contenenti solo uno spazio, anche se permessi.
Ho riportato tutta la sezione del codice in questione.
Inizialmente ho provato con fgetcsv che mi permetteva di scrivere qualche riga di codice in meno ma avevo lo stesso problema.
Ho provato a forzare la codifica con mb_convert_encoding, ma non è cambiato nulla

PHP:
switch ($TypeImport) {

        case "Site":

        
        break;

        case "NewLos":

            $tablename = "newlos".strtolower($cod);
            $result = mysqli_query($linkdb,"SHOW TABLES LIKE '".$tablename."'"); // verifico se la tabella esiste
            $row = mysqli_num_rows($result); //conto il numero di record presenti nella tabella
            if($row > 0) { //$row è maggiore di 0
                $sqlTable = "TRUNCATE ".$tablename; // cancello la tabella
echo "cancello tabella ".$tablename;
echo "<br>";
            } else {        // creo la tabella
                $sqlTable = "CREATE TABLE ".$tablename." (
                                Id varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
                                Geome varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
                                Site1 varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
                                Site2 varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
                                Frequency varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
                                Antenna1_h varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
                                Antenna2_h varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
                                LineOfSight1 varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
                                LineOfSight2 varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
                                Distance varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
                                Direction1 varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
                                Direction2 varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
                                CustonHeights varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
                                Priorita varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
                                PRIMARY KEY (Id))
                                ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci";
echo "creo tabella ".$tablename;
echo "<br>";
            }
            @$resultqueryTable = mysqli_query($linkdb, $sqlTable); // eseguo lo script sql           
            if ($Fr) { // verifico la corretta apertura
echo "file aperto cerrettamente";
echo "<br>";
                
                $lines[0] = fgets($Fr); // inserisco le righe del file in un array

echo "prima riga: ".$lines[0];
echo "<br>";

                $char = substr($lines[0], 2, 1);
echo "separatore: ".$char;
echo "<br>";
                if ($char == ";") {
                    $Sep = ";"; // separatore dei dati
echo "separatore tipo: pv";
echo "<br>";
                } elseif ($char == "    ") {
                    $Sep = "    "; // separatore dei dati
echo "separatore tipo: tab";
echo "<br>";
                } elseif ($char == ",") {
                    $Sep = ","; // separatore dei dati
echo "separatore tipo: v";
echo "<br>";
                } else {
                    $Sep = "no";
echo "separatore non riconosciuto";
echo "<br>";
                }
                if ($Sep != "no") {
                    $Rows = 0;
                    while (!feof($Fr)) {  // leggo il file fino alla fine
                        //$column = fgetcsv($Fr, 0, $Sep);
                        $ArrayRow = fgets($Fr);
                        $ArrayRow = mb_convert_encoding($ArrayRow, 'UTF-8', "auto"); // converto il formato del file in codifica carattere UTF-8
                        $column = explode($Sep,$ArrayRow); // converto la righa in array usando il separatore per definire i dati
                        if (($Rows >= 1) AND ($column[0] != null)) {
echo "(2)".$column[2]."--";
echo "(3)".$column[3]."--";
                            $column[5] = str_replace(',', '.', $column[5]);
                            $column[6] = str_replace(',', '.', $column[6]);
                            $column[9] = str_replace(',', '.', $column[9]);
                            $column[10] = str_replace(',', '.', $column[10]);
                            $column[11] = str_replace(',', '.', $column[11]);
echo "<br>";
                            $Priorita = "0";
                            $sqlInsert = "INSERT into ".$tablename." (Id, Site1, Site2, Antenna1_h, Antenna2_h, Distance, Direction1, Direction2, Priorita)
                                                values           (".$column[0].",".$column[2].",".$column[3].",".$column[5].",".$column[6].",".$column[9].",".$column[10].",".$column[11].",".$Priorita.")";
                            $result = mysqli_query($linkdb, $sqlInsert);

                        }
                        $Rows ++;
                    }
                } else {
                    $Error = "Text file ".$FileName." with unsuitable separator";
                }
            } else {
                $Error = "Read file ".$FileName." impossible!"; // messaggio di errore
            }

        break;
}

Di seguito riporto output video creato con gli echo..

cancello tabella newlosadmin
file aperto cerrettamente
prima riga: Id;GEOMETRY;Site1;Site2;Frequency (MHz);Antenna 1 Height/Ground (m);Antenna 2 Height/Ground (m);Line of Sight (k1) (%);Line of Sight (k2) (%);Distance (km);Direction 1 (�);Direction 2 (�);Custom heights;
separatore: ;
separatore tipo: pv
(2)BS25030_008_01--(3)BG24054_001_01--
(2)BS25030_008_01--(3)BG24056_001_02--
(2)BS25030_008_01--(3)BS25030_003_03--
(2)BS25030_008_01--(3)BS25030_019_01--
(2)BS25030_008_01--(3)BS25030_020_01--
(2)BS25030_008_01--(3)BS25032_001_02--
(2)BS25030_008_01--(3)BS25032_002_02--
(2)BS25030_008_01--(3)CR26029_001_01--

I campi (2) e (3) sono i record che non riesco a caricare e che a video vengono visualizzati correttamente.
se nel codice forzo il caricamento di una stringa tipo

PHP:
 // import nella tabella funziona
 $prova = "1";
 $prova = 1;
 
 // import nella tabella non funziona
 $prova = "A";
 
 $sqlInsert = "INSERT into ".$tablename." (Id, Site1, Site2, Antenna1_h, Antenna2_h, Distance, Direction1, Direction2, Priorita)
                               values  (".$column[0].",".$prova.",".$prova.",".$column[5].",".$column[6].",".$column[9].",".$column[10].",".$column[11].",".$Priorita.")";
 $result = mysqli_query($linkdb, $sqlInsert);

Dove sbaglio ?
Avete qualche idea?

Grazie
 
Discussioni simili
Autore Titolo Forum Risposte Data
giuseppe_123 [WordPress] problema installazione temi, plugin e caricamento immagini WordPress 5
A problema caricamento codice <iframe video youtube PHP 3
S Problema con il caricamento di un'immagine su aruba Hosting 11
B Problema caricamento files con FTP Hosting 5
P Problema: visualizzare a schermo una nuova pagina durante l'attesa di caricamento PHP 1
G problema caricamento condizionale slideshow FlexSlider Javascript 0
P Problema caricamento/sostituzione immagini galleria php-jquery jQuery 2
F Problema caricamento social plugin Javascript 0
A galleria jquery: problema nel caricamento di una immagine da un'anteprima HTML e CSS 10
Z Problema di caricamento Ajax su IE Ajax 11
G problema caricamento 2 js nella stessa pagina Javascript 0
M Problema caricamento immagini - refresh pagina PHP 7
G problema caricamento effetti jquery jQuery 0
B Problema caricamento dati .NET Framework 1
LaKanka Problema caricamento immagini PHP 6
M Problema caricamento Flash 1
Dragon Problema di caricamento swf e img nella stessa pagina Flash 8
L ProgressBar - problema caricamento Flash 3
mythar Problema caricamento pagina ASP.NET 1
O Problema caricamento rete Reti LAN e Wireless 0
O Problema caricamento rete Reti LAN e Wireless 0
D Problema cache: forzare caricamento swf Classic ASP 1
M Problema programmi FTP e caricamento dati Discussioni Varie 3
K Problema form update PHP 2
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
S Problema nel ciclare un json Javascript 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
K Problema Inner join PHP 1
F firefox problema http Linux e Software 0
N Problema con position absolute e overflow HTML e CSS 4
E Problema jquery Success jQuery 2
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
E problema selezione sfumata Photoshop 2
K [PHP] Problema con variabili concatenate. PHP 1
A Problema filtro fluidifica Photoshop Photoshop 1
H Problema Bordi Scontorno Photoshop 1
O problema con query PHP 4
R Problema installazione Realtek WiFi USB rtl8821 Reti LAN e Wireless 0
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
Y Problema percorso file in rete PHP 1
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
P Problema acquisizione clienti Webdesign e Grafica 1
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 11

Discussioni simili