• User Newbie

    Importazione dati da file xml in db mysql con php

    Salve sono nuovo del forum e spero che tra divoi ci sia chi potra aiutarmi...stavo porvando a fare quanto in oggeto seguendo le indicazioni trovate in questa discussiaone
    ..giorgiotave.it/forum/php-mysql/201693-importare-dati-da-xml-db-mysql.html
    ma nonostante molteplici prove modifiche aver letto un po di tutto sul web son sempre punto e accapo.

    il codic ewhe uso per eseguire l'importazione del file e in teoria la query di sinerimento è il seguente:

    <?php
    // Richiamo il file di configurazione
    require 'config.php';
    
    
    // Richiamo lo script responsabile della connessione a MySQL
    require 'connect.php';
    
    
    // Recupero il file
    $file = $_FILES['filexml'];
    
    
    // Controllo che il file sia stato inserito
    if ( $file['tmp_name'] != '' ) {
        // Carica il file in una variabile $xml
        $xml = simplexml_load_file( $file['tmp_name'] );
        
        // Controllo tutti i tag "utenti"
        foreach( $xml->utenti as $value ) {
            
            // Recupero tutti i campi da ogni tag "utenti"
            $nome = $value->NOME;
            $cognome = $value->COGNOME;
            $indirizzo = $value->INDIRIZZO;
            $mail = $value->MAIL;
            $telefono = $value->TELEFONO;
            
            // Creo una query di inserimento e la eseguo
        $sql = "INSERT INTO Utenti (nome, cognome, indirizzo, mail, telefono) VALUES ('$nome', '$cognome', '$indirizzo', '$mail', '$telefono')";
        $rssql = mysql_query( $sql );
            
            // Controllo che l'importazione sia avvenuta con successo
            echo ( $rssql ) ? "Importazione avvenuta con successo" : "Errore nella query o connessione al DB mancante";
        }
    }
    else
        echo "Nessun file inserito";
    

    il rusiltato che ho una volat provato a eseguire il tuuto e il mio messaggio di errore "Errore nella query o connessione al DB mancante" ripetuto tante volte quante sono i record del file xml che provo a importare.
    all'inizio pensavo fosse proprio l'upload del file e il parsing dell'xml in php ma poi provandoa sostituire le variabili della query ...VALUES ('$nome', '$cognome', '$indirizzo', '$mail', '$telefono')...con VALUES ('1', '2', '3', '4', '5')...questi valori vengono scritti sul db tante volte quanti sono i record del file xml di prova.
    Leggendo su svariati forum e discussioni sembra che la sintassi della query sia corretta quindi non so cosa altro andare a vedere.
    per dovere di cronaca ho provato a far stampare a video il risultato dell'upload con questo codice :

    <?php
    // Recupero il file
    $file = $_FILES['filexml'];
    
    
    // Controllo che il file sia stato inserito
    if ( $file['tmp_name'] != '' ) {
    // $xml = simplexml_load_file('dati.xml');
    $xml = simplexml_load_file( $file['tmp_name'] );
    echo "<h2>Dati presenti nel file: (".count($xml->utenti).")</h2>";
    echo "<ul>";
    $n = 0;
    foreach ($xml->utenti as $utenti){
    
    
    $nome =$utenti->NOME;
    $cognome =$utenti->COGNOME;
    $indirizzo =$utenti->INDIRIZZO;
    $mail =$utenti->MAIL;
    $telefono =$utenti->TELEFONO;
    echo "<li>Utente $n / Nome: $nome / Cognome: / $cognome / Indirizzo: $indirizzo / Mail: / $mail / Telefono: / $telefono</li>";
    }
    }
    echo "</ul>";
    
    

    e viene eseguito correttamente
    spero che qualcuno risponda al mio appello ...grazie mille fin d'ora


  • User Attivo

    Ciao,
    forse dico una sciocchezza ma prova in questo modo:

    [PHP]
    $sql = "INSERT INTO Utenti ('nome', 'cognome', 'indirizzo', 'mail', 'telefono') VALUES ('" . $nome . "', '" . $cognome . "', '" . $indirizzo. "', '" . $mail . "', '" . $telefono . "');";
    [/PHP]


  • User Newbie

    @altraSoluzione said:

    Ciao,
    forse dico una sciocchezza ma prova in questo modo:

    [PHP]
    $sql = "INSERT INTO Utenti ('nome', 'cognome', 'indirizzo', 'mail', 'telefono') VALUES ('" . $nome . "', '" . $cognome . "', '" . $indirizzo. "', '" . $mail . "', '" . $telefono . "');";
    [/PHP]
    provato niente da fare....ora ho modificato il codice per vedere come viene esegutia la query a video e questo è il risultato:

    INSERT INTO Utenti ('nome', 'cognome', 'indirizzo', 'mail', 'telefono') VALUES ('1', '2', '3', '4', '5');Errore nella query o connessione al DB mancanteINSERT INTO Utenti ('nome', 'cognome', 'indirizzo', 'mail', 'telefono') VALUES ('6', '7', '8', '9', '10');Errore nella query o connessione al DB mancanteINSERT INTO Utenti ('nome', 'cognome', 'indirizzo', 'mail', 'telefono') VALUES ('11', '12', '13', '14', '15');Errore nella query o connessione al DB mancanteINSERT INTO Utenti ('nome', 'cognome', 'indirizzo', 'mail', 'telefono') VALUES ('16', '17', '18', '19', '20');Errore nella query o connessione al DB mancante

    quindi le variabili le richiama ma no scrive nulla nel db...❌x❌x

    preciso che se modifica la query inserendo direttamente i valori al posto delle variabili questa funzione e scrive nel db


  • User Attivo

    Scusami, ma l'errore che hai riportato in quest'ultimo tuo post È l'inserimento diretto dei valori ma, malgrado questo, sembra comunque generare un errore. Mi sbaglio?

    INSERT INTO Utenti ('nome', 'cognome', 'indirizzo', 'mail', 'telefono') VALUES ('1', '2', '3', '4', '5');
    

    Inoltre, sarebbe utile conoscere l'errore SQL vero.


  • User Newbie

    Non è l'inserimento diretto è il risultato della query

    
    $sql = "INSERT INTO Utenti (nome, cognome, indirizzo, mail, telefono) VALUES ('$nome', '$cognome', '$indirizzo', '$mail', '$telefono')";
    
    

    con l'inserimento diretto funziona


  • User Attivo

    Ok,
    a questo punto per aiutarti avrei bisogno di un paio d'informazioni:

    1. l'errore generato da MySQL
    2. dovrei sapere se la prova che hai fatto forzando i valori conteneva soltanto numeri o anche caratteri alfanumerici perché mi sta sorgendo il dubbio che i campi nel db siano numerici ma sicuramente è colpa mia che ho capito male.

    Poi, ti consiglio di fare una prova inserendo nel file xml soltanto uno o due record, con valori forzati da te.

    Infine, se riesci a postare il file xml (anche ridotto a un paio di record) non funzionante e la struttura del db in sql, provo a fare un test sul mio computer.