Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    372

    PHP upload dati da file excel, problemi con apostrofo

    Utilizzo questo script per caricare i dati da un file CVS sul mio DB.

    Codice PHP:
    <?php
    include ("../../data.inc.php");
    $db mysql_connect($mysqlhost,$mysqluser,$mysqlpassword);
    if (
    $db==FALSE)
    die (
    "ERRORE CONNESSIONE");
    mysql_select_db($mysqldb,$db);
    ini_set('auto_detect_line_endings'1); 
    $row 1;
    $handle fopen("file.csv","r");
    while ((
    $data fgetcsv($handle3000";")) !== FALSE) {
       
    $num count($data);
       echo 
    "<p> $num campi sulla linea $row: <br /></p>\n";
       
    $row++;
      
    $query="INSERT INTO miatabella (a, b, c, d, e, f, g, h, i, l ) VALUES  ('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]')";
    echo 
    $query;
    mysql_query($query);
    }
    fclose($handle);
    ?>
    Il primo problema è quando in una riga del file ci sono apostrofi e accenti, la riga non viene caricata nel DB.

    Il secondo problema è un campo data che nel file è 31-12-2021 e quindi dovrei trasformarlo in 2022-12-31 durante l'esecuzione dello script.

    Qualcuno può darmi una mano?

    Grazie.
    Mi chiedo, caro Alberto, se questo antifascismo rabbioso che viene sfogato nelle piazze oggi a fascismo finito, non sia in fondo un’arma di distrazione che la classe dominante usa su studenti e lavoratori per vincolare il dissenso.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    E' perché nella query i values sono inseriti tra singoli apici, quindi l'apice della stringa ti tronca la query rendendola non valida.

    Prima di eseguirla dovresti passarla alla funzione mysql_real_escape_string().

    Se il tutto gira su un server su cui non hai il controllo delle versioni di PHP, ti consiglio di convertire tutto almeno per mysqli_ (con la i finale), perché le funzioni mysql_ sono state abbandonate ed al prossimo eventuale aggiornamento del derver potrebbero non funzionare più.

  3. #3
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    372
    E' una funzione che posso inserire nel mio script?

    E per le date mi puoi dare una mano?

    Grazie.
    Mi chiedo, caro Alberto, se questo antifascismo rabbioso che viene sfogato nelle piazze oggi a fascismo finito, non sia in fondo un’arma di distrazione che la classe dominante usa su studenti e lavoratori per vincolare il dissenso.

  4. #4
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    372
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    E' perché nella query i values sono inseriti tra singoli apici, quindi l'apice della stringa ti tronca la query rendendola non valida.

    Prima di eseguirla dovresti passarla alla funzione mysql_real_escape_string().

    Se il tutto gira su un server su cui non hai il controllo delle versioni di PHP, ti consiglio di convertire tutto almeno per mysqli_ (con la i finale), perché le funzioni mysql_ sono state abbandonate ed al prossimo eventuale aggiornamento del derver potrebbero non funzionare più.
    Altri caratteri, tipo " è é à ò ù / () ? ! £ % & ^ eccetera potrebbero creare problemi con l'inserimento da file csv?
    Mi chiedo, caro Alberto, se questo antifascismo rabbioso che viene sfogato nelle piazze oggi a fascismo finito, non sia in fondo un’arma di distrazione che la classe dominante usa su studenti e lavoratori per vincolare il dissenso.

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    Quote Originariamente inviata da Max Della Pena Visualizza il messaggio
    Altri caratteri, tipo " è é à ò ù / () ? ! £ % & ^ eccetera potrebbero creare problemi con l'inserimento da file csv?
    Se la codifica dei caratteri è corretta non ci sono problemi.

    Per codifica corretta intendo che sia coerente in tutti gli elementi coinvolti (vedi il post in evidenza sui caratteri strani per maggiori informazioni), questo perché se ci sono in gioco codifiche diverse, qualcuno di quei caratteri potrebbe generare sequenze poco predicibili e non si sa mai che in qualcuna ci capiti di mezzo un apice.

  6. #6
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    372
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Se la codifica dei caratteri è corretta non ci sono problemi.

    Per codifica corretta intendo che sia coerente in tutti gli elementi coinvolti (vedi il post in evidenza sui caratteri strani per maggiori informazioni), questo perché se ci sono in gioco codifiche diverse, qualcuno di quei caratteri potrebbe generare sequenze poco predicibili e non si sa mai che in qualcuna ci capiti di mezzo un apice.
    Credo che dovrebbe corrispondere all'utilizzo di addslashes in fase di inserimento dati tramite un form.

    Codice PHP:
     <?php
    $miodato
    addslashes($miodato); 
    ?>
    Mi chiedo, caro Alberto, se questo antifascismo rabbioso che viene sfogato nelle piazze oggi a fascismo finito, non sia in fondo un’arma di distrazione che la classe dominante usa su studenti e lavoratori per vincolare il dissenso.

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    Sì, puoi inserirla, sulla pagina della documentazione trovi degli esempi su come usarla
    https://www.php.net/manual/en/functi...ape-string.php

    In pratica devi passargli i dati da inserire nella query e che potrebbero generarti problemi.
    Io la userei su tutte le stringhe per sicurezza, valori numerici non dovrebbero dare problemi.

  8. #8
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    372
    Non ne esco, ho modificato aggiungendo il controllo sui campi prima di passarli alla query, non mi carica i dati.


    Codice PHP:
     <?php
    include ("../../data.inc.php");
    $db mysql_connect($mysqlhost,$mysqluser,$mysqlpassword);
    if (
    $db==FALSE)
    die (
    "ERRORE CONNESSIONE");
    mysql_select_db($mysqldb,$db);
    ini_set('auto_detect_line_endings'1); 
    $row 1;
    $handle fopen("file.csv","r");
    while ((
    $data1 fgetcsv($handle3000";")) !== FALSE) {
       
    $num count($data1);
       echo 
    "<p> $num campi sulla linea $row: <br /></p>\n";
       
    $row++;
       
    $data mysql_real_escape_string($data1);
      
    $query="INSERT INTO miatabella (a, b, c, d, e, f, g, h, i, l ) VALUES  ('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]')";
    echo 
    $query;
    mysql_query($query);
    }
    fclose($handle);
    ?>
    Mi chiedo, caro Alberto, se questo antifascismo rabbioso che viene sfogato nelle piazze oggi a fascismo finito, non sia in fondo un’arma di distrazione che la classe dominante usa su studenti e lavoratori per vincolare il dissenso.

  9. #9
    vedo che ti fai stampare $query prima di eseguirla: puoi farne partecipi anche noi?

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    $data1 è un array, non puoi passare un array alla funzione mysql_real_escape_string(), come dice il nome fa l'escape delle stringhe, non degli array.
    Si può capire anche leggendo la firma della funzione:

    mysql_real_escape_string(string $unescaped_string, resource $link_identifier = NULL): string

    il parametro da passare deve essere una stringa.
    Quindi:
    Codice PHP:
    while (($data fgetcsv($handle3000";")) !== FALSE)
    {
        
    $num count($data);
        echo 
    "<p> $num campi sulla linea $row: <br /></p>\n";
        
    $row++;

        
    $query "INSERT INTO miatabella (a, b, c, d, e, f, g, h, i, l ) VALUES  
                 ('" 
    mysql_real_escape_string($data[0]) . "',
                  '" 
    mysql_real_escape_string($data[1]) . "',
                  '" 
    mysql_real_escape_string($data[2]) . "',
                  '" 
    mysql_real_escape_string($data[3]) . "',
                  '" 
    mysql_real_escape_string($data[4]) . "',
                  '" 
    mysql_real_escape_string($data[5]) . "',
                  '" 
    mysql_real_escape_string($data[6]) . "',
                  '" 
    mysql_real_escape_string($data[7]) . "',
                  '" 
    mysql_real_escape_string($data[8]) . "',
                  '" 
    mysql_real_escape_string($data[9]) . "')";
        
        
    mysql_query($query);


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.