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
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
D problema php mysql PHP 1
D problema php mysql PHP 1
M Problema Wi-Fi Linux Linux e Software 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
Daniele_Carrara Problema Aperture Mailup Email Marketing 5
F PROBLEMA ACCESSO INSTAGRAM Discussioni Varie 2
R Problema connessione db PHP 7
M problema if PHP 2
G Problema con Get page PHP 4

Discussioni simili