Ciao,
io ho testato un sistema che ora ti riporto.
Il mio xml di partenza è fatto come segue
[HTML]
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated="2012-07-17T12:34:02">
<utenti>
<NOME>AAA</NOME>
<COGNOME>aaa</COGNOME>
<INDIRIZZO>Via di aaa, 11</INDIRIZZO>
<MAIL>[email protected]</MAIL>
<TELEFONO>0123456</TELEFONO>
</utenti>
<utenti>
<NOME>BBB</NOME>
<COGNOME>bbb</COGNOME>
<INDIRIZZO>Via bbb, 22</INDIRIZZO>
<MAIL>[email protected]</MAIL>
<TELEFONO>6543210</TELEFONO>
</utenti>
<utenti>
<NOME>CCC</NOME>
<COGNOME>ccc</COGNOME>
<INDIRIZZO>Via ccc, 33</INDIRIZZO>
<MAIL>[email protected]</MAIL>
<TELEFONO>112233</TELEFONO>
</utenti>
</dataroot>
[/HTML]
Form iniziale:
[PHP]<html>
<head>
<title>Upload ed importazione XML</title>
</head>
<body>
<form enctype="multipart/form-data" method="post" action="importa_xml.php">
File XML: <input type="file" name="filexml" value="" />
<input type="submit" name="" value="Upload" />
</form>
</body>
</html>
[/PHP]
File importa_xml.php:
[PHP]
<?php
// Apro la connessione al DB
require_once 'config.inc.php';
$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or
die ('Unable to connect. Check your connection parameters.');
mysql_select_db(MYSQL_DB, $db) or die(mysql_error($db));
// 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 SET
nome = '$nome',
cognome = '$cognome',
indirizzo = '$indirizzo',
mail = '$mail',
telefono = '$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";
[/PHP]