- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Importazione dati da file xml in db mysql con php
-
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
-
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]
-
@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...xx
preciso che se modifica la query inserendo direttamente i valori al posto delle variabili questa funzione e scrive nel db
-
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.
-
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
-
Ok,
a questo punto per aiutarti avrei bisogno di un paio d'informazioni:- l'errore generato da MySQL
- 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.