Newsgroup: it.comp.www.php
Titolo: PHP e XML [Lungo]

Ciao,
avrei un problema, avrei un DB access da trasformare in MySQL... solo che
questo file lo potrebbe voler aggiornare in seguito il cliente... quindi ho
pensato di realizzare una pagina dove far inserire il file, ma il php del
server non credo supporti access... quindi ho optato per l'opzione di far
trasformare il file mdb in xml e far uplodare quest'ultimo al cliente.... e
fin qui nessun problema...
il problema sta nel fatto che lo script che ho realizzato mi preleva solo la
prima serie di attributi e poi si blocca...
Questo è il codice:
***
// $filexml lo passo via post dalla pagina precedente tramite un <input
type="file"...
if ($filexml != "") {
    // per windows
    copy("$filexml", ".\\$filexml_name") or die("Non riesco a copiare il
file!");
    // per linux
    // copy("$fileimmagine", "./$filexml_name") or die("Non riesco a copiare
il file!");
}
if (! ($fp = fopen("$filexml_name" , "r"))) die("Non riesco ad aprire il
file!");
$edificio_num = 0;
$edificio_data = array();
$xml_tag = '';
function startElementHandler ($parser, $element_name, $element_attribs)
{
    global $edificio_num;
    global $edificio_data;
    global $xml_tag;
    if ($element_name == "IMMOBILE") {
        $edificio_data[$edificio_num] = $element_attribs;
    } else {
        $xml_tag = $element_name;
    }
}
function endElementHandler($parser, $element_name)
{
    global $edificio_num;
    global $edificio_data;
    global $xml_tag;
    $xml_tag = '';
    if ($element_name == "IMMOBILE") {
        $edificio_num++;
    }
}
function immobiliHandler($parser, $data)
{
    global $edificio_num;
    global $edificio_data;
    global $xml_tag;
    if ($xml_tag == '') {
        return;
    }
    if ($xml_tag == 'ID_EDIFICIO') {
        $edificio_data[$edificio_num]["id_edificio"] = $data;
    }
// qui ci sarebbero molti altri pescaggi tipo quello sopra, che ometto per
accorciare
    if ($xml_tag == 'OFFERTA_MESE') {
        $edificio_data[$edificio_num]["offerta_mese"] = $data;
    }
}
if (!($xml_parser = xml_parser_create())) die("Non riesco a creare il
parser!");
xml_set_element_handler($xml_parser, "startElementHandler",
"endElementHandler");
xml_set_character_data_handler($xml_parser, "immobiliHandler");
while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        break; // esce dal ciclo se abbiamo finito
    }
} // while
xml_parser_free($xml_parser);
// stampa di controllo
echo "<b>$edificio_num</b><br />";
for ($i = 0; $i < $edificio_num; $i++) {
echo $edificio_data[$i]["id_edificio"] . "<br />";
echo $edificio_data[$i]["PRG"] . "<br />";
echo $edificio_data[$i]["tipo_immobile"] . "<br />";
}
***
Mi sapete indicare l'errore o in altrenativa un modo migliore per fare il
passaggio da access a mysql?
Vi ringrazio anticipatamente
--
~~~ Riccardo Slanzi ~~~
http://utenti.lycos.it/rslanzi/
      UIN # 140213360

 passaggio da access a mysql?
La soluzione più tranquilla e meno problematica dal mio punto di vista è
quella di installare i driver ODBC per MySQL dal cliente (sempre che il
provider permetta l'accesso al server anche dall'esterno), linkare le
tabelle sul server da dentro access, e fare delle queri di rimozione e di
inserimento dei dati dalle tabelle originali.
Saluti.

C..zolina... questo č un colpo di genio.... e io la che mi scervellavo con
xml....
Grazie mille veramente!
Ciao


 Grazie mille veramente!
Dovere :)

 Ciao
e se vuoi c'č una soluzione ancora piu facile x il cliente. usa il software
gratuito dbtools
www.dbtools.com.br

 
www.dbtools.com.br
Questa non è propriamente una soluzione più facile per il cliente perchè
implica il fatto di saper utilizzare il software DBTools (non sempre così
intuitivo), mentre ritengo che la soluzione di un applicativo Access (o
altro) che esegua la procedura con il semplice click di un pulsante sia più
semplice.
Saluti.