Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1
    Utente di HTML.it L'avatar di Atrus
    Registrato dal
    May 2003
    Messaggi
    211

    Da file XML a database MySQL

    Ciao a tutti.
    Un mio cliente ha un gestionale che esporta i suoi prodotti in file XML.
    C'è la possibilità di importare i valori del file XML in una tabella di un db MySQL?

    Vorrei creare uno script php che faccia il tutto...legga l'xml e inserisca i dati nel DB.

    Vi è mai capitato? Avete o esiste qualcosa di simile?

    Grassie...
    Ora ricordo perchè ho visitato questi mondi...
    Quanto tempo ho atteso...
    Ricordo chi sono io e chi sono i miei nemici.

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Non mi è mai capitato... ma per prima cosa cercherei una libreria php che mi faciliti la vita nella gestione dei file xml... magari concorrentemente potresti trovare anche qualche script già pronto (da configurare) che faccia, in toto o in parte, quel che cerchi.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Caspita! è proprio il lavoro che sto facendo adesso ma ho un sacco di problemi!!!!
    Probabilmente dovuto alla dimensione de file XML!
    Io ho usato un parser SAX salvando le occorrenze dell'XML in un array, poi eseguo la insert nella tabella!
    In locale funziona perfettamente, ma nel web tronca i dati in fase di acquisizione! Riuscissi a capire il perchè!

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    tempo di esecuzione? Dimensione dello spazio di memoria utilizzabile da php? Prova con file più piccoli
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Purtroppo il file non lo creo io e me lo devo leggere così com'è!
    Io credo sia dovuto dalla struttura complessa dell'XML e dalle dimensioni (circa 3 mega!)
    Purtroppo nonostante abbia aperto + di una discussione a riguardo non ho trovato nessuno in grado di aiutarmi, e così sono ancora nei guai!
    Ti passo uno degli script che uso per l'aquisizione, se nessuno sa darmi un aiuto speriamo almeno sia di aiuto al nostro amico!

    Codice PHP:
    <html><body>
    <?php
     
    $filename
    ="http://.....schede.xml"
        if(!(
    $fp fopen("$filename"r"))) 
            die(
    "Non posso aprire il file"); 
        
    $elenco_counter 0
        
    $img = array();
        
    $img[$elenco_counter] = 0
        
    $elenco_data = array(); 
        
    $xml_current_tag_state '';
        
    $newpub 999999

        function 
    cleantxt($testo
        {
        
    $search = array('<''>''&''\'''"'); 
        
    $replace = array('&lt;''&gt;''&amp;''&apos;''&quot;');
        
    $testo str_replace($search$replace$testo);
        
    $testo str_replace('&amp;''&'$testo);
        return 
    $testo;
        }
         
        function 
    startElementHandler($parser$element_name$element_attribs
        { 
        global 
    $elenco_counter
        global 
    $elenco_data
        global 
    $xml_current_tag_state
        
    $xml_current_tag_state $element_name
        } 
         
        function 
    endElementHandler($parser$element_name
        { 
        global 
    $elenco_counter;
        global 
    $img
        global 
    $elenco_data
        global 
    $xml_current_tag_state;
        global 
    $newpub;
        global 
    $oldpub;
        global 
    $uscita;
        
    $xml_current_tag_state '';
     
        if( 
    $element_name == "ITEM" 
            { 
               
    $elenco_counter++; 
               
    $img[$elenco_counter] = 0
               if (
    $newpub <= $oldpub ) {
                 
    $uscita "si";

                } 
            } 
        } 
         
        function 
    characterDataHandler($parser $data
        { 
        global 
    $elenco_counter
        global 
    $img;
        global 
    $elenco_data
        global 
    $xml_current_tag_state
        global 
    $newpub;
        if( 
    $xml_current_tag_state == '' 
        return; 
        if( 
    $xml_current_tag_state == "IDSCHEDA" 
            { 
                
    $elenco_data[$elenco_counter]["idscheda"] = $data
                
    $newpub $data;
            } 
        if( 
    $xml_current_tag_state == "DIDIMG" 
            { 
                
    $img[$elenco_counter] = $img[$elenco_counter] + 1;
                
    $elenco_data[$elenco_counter]["didimg" $img[$elenco_counter]] = $data
            } 
        if( 
    $xml_current_tag_state == "NOMEIMG" 
            { 
                
    $elenco_data[$elenco_counter]["nomeimg" $img[$elenco_counter]] = $data
            } 



    require(
    "config.php");
    $query = @mysql_query("SELECT ultdtpubli FROM  ultpubli");
    $result = @mysql_fetch_array($query);
    $oldpub $result['ultpubli'];

    if( !(
    $xml_parser xml_parser_create()) ) 
    die(
    "Non riesco a creare il parser XML"); 

    xml_set_element_handler($xml_parser"startElementHandler""endElementHandler"); 
    xml_set_character_data_handler($xml_parser"characterDataHandler"); 

    while( 
    $data fread($fp4096)) 

        if( !
    xml_parse($xml_parser$datafeof($fp))) 
        { 
            break; 
        } 
        if (isset(
    $uscita ))
        { 
            break; 
        } 

    //libero la memoria 
    xml_parser_free($xml_parser);

      
    for(
    $i=$i $elenco_counter ; ++$i


    for(
    $j=$j <= $img[$i] ; ++$j) {

    require(
    "config.php");



    $insert_sql "insert into immagini ( idscheda, idimg, nomeimg) values (";
    $insert_sql .= $elenco_data[$i]["idscheda"] . ", '";
    $insert_sql .= $elenco_data[$i]["didimg" $j] . "', '";
    $insert_sql .= $elenco_data[$i]["nomeimg" $j] . "')";

    //echo $insert_sql;

    mysql_query($insert_sql);


    require(
    "chiudi.php");



    echo 
    "
    \n"


     



    echo 
    "<script language=\"JavaScript\">location.href=\"parsatourope.php\"; </script>";
    ?> 
    </body></html>

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    allora, il fatto di suggerire di eseguire uno script con file più piccoli è proprio per vedere se la dimensione dei file in gioco ed il tempo di esecuzione non siano la causa del fallimento della procedura. Siamo tutti d'accordo che il tuo script dovrà funzionare indipendentemente dalla dimensione del tuo file xml... però se non si sa a priori quale che sia il problema la vedo dura.

    Se come penso è dovuto a mancanza di memoria o al timout troppo breve, contatta l'hoster e vedi se si può modificare (pagando, si intende, si ottiene quasi tutto in termini di hosting), altrimenti vediamo che c'è che non va nello script.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7

    ............

    Ciao.
    Occhiata veloce al codice:
    require("config.php");
    che ci fa dentro un ciclo for anzi due








    Ps.
    L'host ha php4 o php5
    così ad occhio ti converebbe utilizzare
    una classe ad hoc da scarica da phpclasses.org
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  8. #8
    Hai ragione è un erroraccio!

    Uso PHP4.

    Hai un esempio di utilizzo di questa classe per il parser di un file XML x caso?

    Grazie

  9. #9

    .............

    Ciao.
    Puoi sceglierti un di queste
    sono tutte con esempio di utilizzo.
    Di solito faccio in questo modo
    ne scarico due o tre quelle che secondo me
    vanno meglio per quello che devo fare e poi
    scelgo facendo qc modifica se c'è qc che non mi torna.
    Lo so è un lavoraccio ma c'est la vie .


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  10. #10
    Grazie 1000 mi sei stato molto utile

    Ciao

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 © 2025 vBulletin Solutions, Inc. All rights reserved.