• User

    Importazione file xml su mysql

    Salve a tutti,
    dovrei importare un file xml sul db, grazie a Satifal sono riuscito a trasformarlo in una pagina in html.
    Mi servirebbe l'ultima parte di codice per trasformare il tutto in dati per il db.
    Ho provato per ore ed ore ma non sono riuscito a concludere un bel nulla .
    Vi posto il codice che mi è servito per "convertire" il file xml .

    <? 
    
    
    if (!($fp=@fopen("./contactsbare.xml", "r")))
            die ("Couldn't open XML.");
    $usercount=0;
    $userdata=array();
    $state='';
    if (!($xml_parser = xml_parser_create()))
            die("Couldn't create parser.");      
            
    function startElementHandler ($parser,$name,$attrib){
    global $usercount;
    global $userdata;
    global $state;
    
    switch ($name) {
            case $name=="NAME" : {
                    $userdata[$usercount]["first"] = $attrib["FIRST"];
                    $userdata[$usercount]["last"] = $attrib["LAST"];
                    $userdata[$usercount]["nick"] = $attrib["NICK"];
                    $userdata[$usercount]["title"] = $attrib["TITLE"];
                    break;
                    }
            }
    }
    
    function endElementHandler ($parser,$name){
    global $usercount;
    global $userdata;
    global $state;
    $state='';
    if($name=="CONTACT") {$usercount++;}
    }
    
    
    
    function characterDataHandler ($parser, $data) {
    global $usercount;
    global $userdata;
    global $state;
    if (!$state) {return;}
    if ($state=="COMPANY") { $userdata[$usercount]["bcompany"] = $data;}
    if ($state=="GENDER") { $userdata[$usercount]["gender"] = $data;}
    }
    
    
    xml_set_element_handler($xml_parser,"startElementHandler","endElementHandler");
    xml_set_character_data_handler( $xml_parser, "characterDataHandler");
    
    while( $data = fread($fp, 4096)){
    if(!xml_parse($xml_parser, $data, feof($fp))) {
    break;}}
    xml_parser_free($xml_parser);  
    
    
    for ($i=0;$i<$usercount; $i++) {
    echo "Name: ".$userdata*["title"]." ".
            ucfirst($userdata*["first"])." ". ucfirst($userdata*["last"]);
    }
    ?>
    
    ```Spero che qualcuno mi dia un ultimo aiuto per concludere questa settimana di fuoco:o 
    Vi ringrazio anticipatamente:vai:

  • User

    Dimenticavo,
    spero che questa nuova discussione non crei problemi .
    Non è un doppione della discussione precedente!!
    Grazie


  • User

    Puoi utilizzare il seguente codice ovviamente adattandolo alle tue esigenze. A puro titolo di esempio, considerando il codice da te postato è necessario creare sul DB una tabella CONTACT avente 3 colonne di tipo varchar TITLE, FIRST e LAST. Infine basta inserire la chiamata alla funzione insertContact() nel codice da te postato per effettuare l'insert sul DB delle info recuperate dal file XML.

    [php]
    function insertContact($title, $first, $last) {
    $query = "INSERT INTO contact (title, first, last) values ('$title', '$first', '$last')";
    $result = executeQuery($query);
    }

    function executeQuery($query) {
    $DB_SERVER = "INDIRIZZO IP DEL SERVER MYSQL";
    $DB_USERNAME = "USERNAME";
    $DB_PASSWORD = "PASSWORD";
    $DB_NAME = "NOME DEL DB";

    $connect = mysql_connect($DB_SERVER, $DB_USERNAME, $DB_PASSWORD);
    $db = mysql_select_db($DB_NAME, $connect);
    $result = mysql_query($query, $connect) or die("Errore.");
    mysql_close($connect);
    return $result;
    

    }

    ...

    for ($i=0;$i<$usercount; $i++) {
    echo "Name: ".$userdata*["title"]." ".ucfirst($userdata*["first"])." ".ucfirst($userdata*["last"]);

    // RIGA DA INSERIRE
    insertContact($title, $first, $last);

    }
    [/php]


  • User

    @satifal said:

    Puoi utilizzare il seguente codice ovviamente adattandolo alle tue esigenze. A puro titolo di esempio, considerando il codice da te postato è necessario creare sul DB una tabella CONTACT avente 3 colonne di tipo varchar TITLE, FIRST e LAST. Infine basta inserire la chiamata alla funzione insertContact() nel codice da te postato per effettuare l'insert sul DB delle info recuperate dal file XML.

    [php]
    function insertContact($title, $first, $last) {
    $query = "INSERT INTO contact (title, first, last) values ('$title', '$first', '$last')";
    $result = executeQuery($query);
    }

    function executeQuery($query) {
    $DB_SERVER = "INDIRIZZO IP DEL SERVER MYSQL";
    $DB_USERNAME = "USERNAME";
    $DB_PASSWORD = "PASSWORD";
    $DB_NAME = "NOME DEL DB";

    $connect = mysql_connect($DB_SERVER, $DB_USERNAME, $DB_PASSWORD);
    $db = mysql_select_db($DB_NAME, $connect);
    $result = mysql_query($query, $connect) or die("Errore.");
    mysql_close($connect);
    return $result;
    

    }

    ...

    for ($i=0;$i<$usercount; $i++) {
    echo "Name: ".$userdata*["title"]." ".ucfirst($userdata*["first"])." ".ucfirst($userdata*["last"]);

    // RIGA DA INSERIRE
    insertContact($title, $first, $last);

    }
    [/php]

    Ciao Satifal,
    innanzitutto grazie per la pasienza e per l'aiuto che mi stai dando,(tipico da motociclista incallito "lo so perchè lo sono").
    Ho sistemato il codice così:

    <? 
    function insertContact($title, $first, $last) {
        $query = "INSERT INTO contact (title, first, last, content, make, model, price) values ('$title', '$first', '$last' )";
        $result = executeQuery($query);
    }
    
    function executeQuery($query) {
       require_once("db.php");
    
     
        return $result;
    }
    
          
    
    for ($i=0;$i<$usercount; $i++)
    {
            echo "Name".$userdata*["title"]."<br> ".ucfirst($userdata*["first"])." ". ucfirst($userdata*["last"]);
            
    
    
            if ($userdata*["nick"]) {echo "Nickname ".$userdata*["nick"]."<br>";}
    
            if ($userdata*["hstreet"]) {
                    echo " ".$userdata*["hstreet"].",";
                    echo $userdata*["hcity"].", ".$userdata*["hcounty"].", ". $userdata*["hpostal"].
                            ". ".$userdata*["hcountry"]."<br>";
            }
    
            if ($userdata*["hphone"]) {echo "Home Phone ".$userdata*["hphone"]."<br>";}
            if ($userdata*["hfax"]) {echo "Home Fax ".$userdata*["hfax"]."<br>";}
            if ($userdata*["hmobile"]) {echo "Personal Mobile ".$userdata*["hmobile"]."<br>";}
            if ($userdata*["hweb"]) {
                    echo "Personal site: <a href=\"".$userdata*["hweb"]."\">".$userdata*["hweb"]."</a><br>";
            }
    
            if ($userdata*["bstreet"]) {
                    echo "".$userdata*["bstreet"];
                    echo ", ".$userdata*["bcity"].". ".$userdata*["bcounty"].", ". $userdata*["bpostal"].
                            ". ".$userdata*["bcountry"]."<br>";
            }
    
            if ($userdata*["bphone"]) {echo "Telefono ".$userdata*["bphone"]."<br>";}
            if ($userdata*["bfax"]) {echo "Fax ".$userdata*["bfax"]."<br>";}
             if ($userdata*["email1"]) {
                    echo "email: <a href=\"mailto:".$userdata*["email1"]."\">".$userdata*["email1"]."</a><br>";
            if ($userdata*["bweb"]) {
                    echo "Sito Web: <a href=\"".$userdata*["bweb"]."\">".$userdata*["bweb"]."</a><br>";
            if ($userdata*["bmobile"]) {echo "Cellulare ".$userdata*["bmobile"]."<br>";}
            if ($userdata*["title"]) {echo "".$userdata*["title"]."<br><br>";}
            if ($userdata*["content"]) {echo "".$userdata*["content"]."<br>";}
            if ($userdata*["make"]) {echo "".$userdata*["make"]."<br>";}
            if ($userdata*["model"]) {echo "".$userdata*["model"]."<br>";}
            if ($userdata*["price"]) {echo "".$userdata*["price"]."<br>";}
            
                     echo "Immagini auto: <a href=\"".$userdata*["picture_url1"]."\">".$userdata*["picture_url1"]."</a><br>";
                     echo "Immagini auto: <a href=\"".$userdata*["picture_url2"]."\">".$userdata*["picture_url2"]."</a><br>";
            }
    
           
                    if ($userdata*["email2"]) {
                            echo "email: <a href=\"mailto:".$userdata*["email2"]."\">".$userdata*["email2"]."</a><br>";
                            if ($userdata*["email3"]) {
                                    echo "email: <a href=\"mailto:".$userdata*["email3"]."\">".$userdata*["email3"]."</a><br>";
                                    if ($userdata*["email4"]) {
                                            echo "email: <a href=\"mailto:".$userdata*["email4"]."\">".$userdata*["email4"]."</a><br>";
                                    }
                            }
                    }
            }
    
            if ($userdata*["comment"]) {echo "<tr><td colspan=2>Notes: ".$userdata*["comment"]."</td></tr>\n";}
            
    insertContact($title, $first, $last, $content, $make, $model, $price);
    
    }
    
    ?>
    

    Mi potresti dire perchè non funge!:)
    Grazie mille


  • User

    Innanzitutto devo dire che nel codice che ti ho postato vi è un errore, ma sai com'è...dopo una serata bevereccia :D.
    La riga:

    
    insertContact($title, $first, $last);
    
    ```va modificata in:
    

    insertContact($userdata*["title"], $userdata*["first"], $userdata*["last"]);

    function insertContact($title, $first, $last) {
    $query = "INSERT INTO contact (title, first, last, content, make, model, price) values ('$title', '$first', '$last' )";
    $result = executeQuery($query);
    }

    L'altro errore è quello che ti ho detto nella premessa per cui devi modificare:
    

    insertContact($title, $first, $last, $content, $make, $model, $price);

    insertContact($userdata*["title"], $userdata*["first"], $userdata*["last"], $userdata*["content"], $userdata*["make"], $userdata*["model"], $userdata*["price"]);

    Non ho tempo per fare delle prove in questo momento per cui se non dovesse andare posta il problema che riscontri.

  • User

    @satifal said:

    Innanzitutto devo dire che nel codice che ti ho postato vi è un errore, ma sai com'è...dopo una serata bevereccia :D.
    La riga:

    >
    insertContact($title, $first, $last);
    
    >```va modificata in:
    

    insertContact($userdata*["title"], $userdata*["first"], $userdata*["last"]);

    >
    function insertContact($title, $first, $last) {
        $query = "INSERT INTO contact (title, first, last, content, make, model, price) values ('$title', '$first', '$last' )";
        $result = executeQuery($query);
    }
    
    >```Ne deduco che la tabella CONTACT abbia come colonne TITLE, LAST, CONTENT, MAKE, MODEL e PRICE, ma la funzione prende come parametri e di conseguenza effettua l'insert solamente di $title, $first e $last e questo è un primo errore.
    L'altro errore è quello che ti ho detto nella premessa per cui devi modificare:
    

    insertContact($title, $first, $last, $content, $make, $model, $price);

    >
    insertContact($userdata*["title"], $userdata*["first"], $userdata*["last"], $userdata*["content"], $userdata*["make"], $userdata*["model"], $userdata*["price"]);
    
    >```Non ho tempo per fare delle prove in questo momento per cui se non dovesse andare posta il problema che riscontri.
    
    
    
    
    Si ho aggiunto delle voci sia sul codice, che sul db.
    Ho modificato l'insert che mi hai postato ma ...niente da fare sul db non viene caricato nulla.
    Ti ri-posto il tutto```
    
    <?php
    
    function insertContact($title, $first, $last, $content, $make, $model, $price) {
        $query = "INSERT INTO contact (title, first, last, content, make, model, price) values ('$title', '$first', '$last', '$content', '$make', '$model','$price' )";
        $result = executeQuery($query);
    }
    
    function executeQuery($query) {
       require_once("db.php");
        return $result;
    }
    
          
    
    for ($i=0;$i<$usercount; $i++)
    {
            echo "Name".$userdata*["title"]."<br> ".ucfirst($userdata*["first"])." ". ucfirst($userdata*["last"]);
            
    
    
            if ($userdata*["nick"]) {echo "Nickname ".$userdata*["nick"]."<br>";}
    
            if ($userdata*["hstreet"]) {
                    echo " ".$userdata*["hstreet"].",";
                    echo $userdata*["hcity"].", ".$userdata*["hcounty"].", ". $userdata*["hpostal"].
                            ". ".$userdata*["hcountry"]."<br>";
            }
    
            if ($userdata*["hphone"]) {echo "Home Phone ".$userdata*["hphone"]."<br>";}
            if ($userdata*["hfax"]) {echo "Home Fax ".$userdata*["hfax"]."<br>";}
            if ($userdata*["hmobile"]) {echo "Personal Mobile ".$userdata*["hmobile"]."<br>";}
            if ($userdata*["hweb"]) {
                    echo "Personal site: <a href=\"".$userdata*["hweb"]."\">".$userdata*["hweb"]."</a><br>";
            }
    
            if ($userdata*["bstreet"]) {
                    echo "".$userdata*["bstreet"];
                    echo ", ".$userdata*["bcity"].". ".$userdata*["bcounty"].", ". $userdata*["bpostal"].
                            ". ".$userdata*["bcountry"]."<br>";
            }
    
            if ($userdata*["bphone"]) {echo "Telefono ".$userdata*["bphone"]."<br>";}
            if ($userdata*["bfax"]) {echo "Fax ".$userdata*["bfax"]."<br>";}
             if ($userdata*["email1"]) {
                    echo "email: <a href=\"mailto:".$userdata*["email1"]."\">".$userdata*["email1"]."</a><br>";
            if ($userdata*["bweb"]) {
                    echo "Sito Web: <a href=\"".$userdata*["bweb"]."\">".$userdata*["bweb"]."</a><br>";
            if ($userdata*["bmobile"]) {echo "Cellulare ".$userdata*["bmobile"]."<br>";}
            if ($userdata*["title"]) {echo "".$userdata*["title"]."<br><br>";}
            if ($userdata*["content"]) {echo "".$userdata*["content"]."<br>";}
            if ($userdata*["make"]) {echo "".$userdata*["make"]."<br>";}
            if ($userdata*["model"]) {echo "".$userdata*["model"]."<br>";}
            if ($userdata*["price"]) {echo "".$userdata*["price"]."<br>";}
    
            
    insertContact($userdata*["title"], $userdata*["first"], $userdata*["last"], $userdata*["content"], $userdata*["make"], $userdata*["model"], $userdata*["price"]); 
    
    }
    
    ?>
    

    Prima o poi impazzirò!!:o


  • User

    Ciao Satifal,
    scusami se ti stresso....😊
    Le ho provate tutte ..o..quasi😢
    Non appena riprendi i sensi ....:():
    Potresti dare un occhiatina al mio post!!
    :ciauz:


  • User

    Ok Ok Ok

    Grande errore da parte mia sulla compilazione/adattamento.
    Funziona tutto alla grande
    Grazie mille

    N.B.
    Scusami se ti ho fatto sclerare