Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 45

Discussione: Problemi import xml

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,628

    Problemi import xml

    Ho questo file import, per importare da un link esterno (xml) dei dati, però non funziona e non riesco a capire il perchè.
    posto il codice che possa essere d'aiuto:






    $host="+++++";
    $user="++++++";
    $password="+++++++";
    $name="+++++++";

    $conn = mysql_connect($host, $user, $password) or die("connesione non riuscita");
    $database=mysql_select_db($name) or die("Impossibile selezionare db accidenti");




    $file = $mosConfig_absolute_path."/file.php.xml";
    $url = "http://www.sito.it/file.php";
    $modalita = "F"; // F = da file; U = da URL

    require_once("libxml.php");

    function bstr2int($value) {
    return ($value=='true') ? 1 : 0;
    }

    switch ($modalita) {
    case "F":
    /* MODALITA' DA FILE */
    if (!($fp = fopen($file, "r"))) {
    die("could not open XML input");
    }
    $data = fread($fp, filesize($file));
    fclose($fp);
    break;

    case "U":
    /* MODALITA' DA URL */
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $data = curl_exec($ch);
    $info = curl_getinfo($ch);
    if ($data === false || $info['http_code'] != 200) {
    $output = "No cURL data returned for $url [". $info['http_code']. "]";
    if (curl_error($ch))
    $output .= "<hr/>". curl_error($ch);
    exit();
    }
    curl_close($ch);
    break;
    }

    $last = 0;
    $p1 = TRUE;
    $i = 0;

    $query = "UPDATE databse SET publish=0";
    $database->setQuery($query);
    $database->loadObject($record);

    while ($p1!==FALSE) {
    $i++;
    $p1 = strpos($data,"<ogett",$last);
    if ($p1!==FALSE) {
    $p2 = strpos($data,"</ogett>",$p1)+strlen("</ogett>");
    $last = $p2;

    $ogett = substr($data,$p1,$p2-$p1);

    $p3 = strpos($ogett,"<informazioni_aggiuntive>")+strlen( "<informazioni_aggiuntive>");
    $p4 = strpos($ogett,"</informazioni_aggiuntive>");
    $informazioni_aggiuntive = substr($ogett,$p3,$p4-$p3);
    $informazioni_aggiuntive = nl2br($informazioni_aggiuntive);

    $p3 = strpos($ogett,"<urlimmagini>");
    $p4 = strpos($ogett,"</urlimmagini>")+strlen("</urlimmagini>");
    $urlimmagini = substr($ogett,$p3,$p4-$p3);
    $immagini = XMLtoArray($urlimmagini);
    $immagini = $immagini['URLIMMAGINI']['IMMAGINE'];

    $p2 = strpos($data,"<informazioni_aggiuntive>",$p1)+strl en("<informazioni_aggiuntive>");
    $ogett = substr($data,$p1,$p2-$p1);
    $ogett = str_replace("<informazioni_aggiuntive>","</ogett>",$ogett);
    $mobile = XMLtoArray($ogett);
    $mobile = $mobile['ogett'];

    $id = $mobile['ID'];




    $brand = array_search($mobile['MODELLO']['MARCA'],$brands);
    $hot = ($mobile['OCCASIONE']=="true" ? 1 : 0);
    $publish = ($mobile['ONLINE']=="true" ? 1 : 0);
    $porte = empty($mobile['MODELLO']['PORTE']) ? 0 : $mobile['MODELLO']['PORTE'];
    $accessori = implode("|",$mobile['ACCESSORI']['ACCESSORIO']);
    $accessori2 = implode("|",$mobile['ACCESSORI']['EXTRA']);
    $fields = array(
    "obj_id"=> $id,
    "cat"=> $catid,
    );
    $query = "SELECT id,obj_id FROM databse WHERE obj_id='".$id."'";
    $database->setQuery($query);
    $database->loadObject($record);
    if ($record) {
    $rid = $record->id;
    $query = "UPDATE databse SET ";
    $first = true;
    foreach ($fields as $key=>$value) {
    if (!$first) {
    $query .= ",";
    } else {
    $first = false;
    }
    if (is_numeric($value)) {
    $query .= $key."=".$value;
    } else {
    $query .= $key."=".$database->Quote($value);
    }
    }
    $query .= " WHERE id=".$rid;
    $database->setQuery($query);
    $database->query($query);
    if ($database->getErrorNum()!=0) {
    echo "ERRORE NELLA QUERY:
    <pre>".$query."</pre>
    ".$database->getErrorMsg();
    exit();
    }
    } else {
    $query = "INSERT INTO database (".implode(",",array_keys($fields)).") VALUES (";
    $first = true;
    foreach ($fields as $key=>$value) {
    if (!$first) {
    $query .= ",";
    } else {
    $first = false;
    }
    if (is_numeric($value)) {
    $query .= $value;
    } else {
    $query .= $database->Quote($value);
    }
    }
    $query .= ")";
    $database->setQuery($query);
    $database->query($query);
    if ($database->getErrorNum()!=0) {
    echo "ERRORE NELLA QUERY:
    <pre>".$query."</pre>
    ".$database->getErrorMsg();
    exit();
    }
    $rid = $database->insertid();
    }


    }
    }

    echo "TOTALE: " .$i;
    // chiudo la connessione a MySQL
    mysql_close();

    echo 'Query eseguita correttamente';

  2. #2
    Ciao,
    non so se sia il tuo caso,
    ma a me è successo che il gestore del server di hosting aveese disabilitato la fopen() per utilizzi extra dominio.

    Ti consiglio di provare con le libCURL.

    Qui puoi trovare un articolo con classe PHP pronta all'uso per chiarirti le idee.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,628
    ho fatto qualche prova...mi restituisce quest'errore

    Fatal error: Call to undefined function curl_init() in /var/www/clients/client/web21/web/XMLphp on line 39


    questo è quello che mi trovo alla riga 39

    $ch = curl_init();

  4. #4
    Ciao james81,
    stai usando la mia classe come descritto nel mio articolo o hai cambiato il codice o ci stai provando scrivendo tutto da capo?

    Comunque prova a fare una phpinfo() per vedere se hai le CURL installate.

    Potrebbe essere che non lo siano.

    Fammi sapere
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,506
    E' melgio se posti il codice php nelgi appositi tag \[PHP\] codice \[/php\]

    Puoi usare la funzione function_exists("curl_init") per controllare se effettivamente puoi accedere a tale funzione. Ovviamente questo serve durante l'esecuzione del codice per controllare se le hai usa phpinfo come suggeriva mirko.

    php fornisce inoltre una bella funzione per leggere il contenuto dei file anche remoti :

    file_get_contents( $filePath ) ;

    Che ti restituisce su stringa il file oppure da false.

    quindi
    Codice PHP:
    $content = @file_get_contents$filePath ) ;

    if( 
    $content )
    {
        
    //codice di gestione coentuto file
    }
    else
    {
        
    // gestisci errore


    Inoltre devi fare attenzione che il file sia accessibile dall'esterno del server, puoi per esempio fare in modo che con un htaccess disabilit gli accessi indesiderati al file e solo il uno specifico ip vi acceda.

    Senno se le curl non vanno, le fopen nn vanno oppure il file_get_contents nn va ti rimane da provare fsock_open oppure soap gud lac.

  6. #6
    Ciao Virus_101,
    se dai un'occhiata alla mia classe (il link è in 3 post dietro) ci sono i controlli.
    Siccome la uso da molto tempo e non ha mai dato problemi, stiamo cercando di capire se viene usata come la ho scritta o è stata scelta un'altra soluzione.


    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  7. #7
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,506
    AH ok nn avevo visto il link scusa.



    Ora devo svolare avanti nel caso ricontrollo dopo se ho 2 sec.

    CIauz

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,628
    ho verificato persso il phpinfo

    e questo è ilfopen è attivo

    allow_url_fopen On On


    mentre utilizzando lo script di mirkoagrati

    mi restituisce questo Librerie "CURL non installate."

  9. #9
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,506
    Uhm beh se nello script c'e' il controllo che ti dice che non sono installate e non le vedi nel phpinfo allora o domandio al provider di attivarle (se usi provider esterno) oppure le devi attivare te da php.ini .

    Senno se il server remoto non supporta il remote linking allora devi fare qlke procedura di collegamento magari sfruttando json etc. Oppure usando soap.

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,628
    faccio una precisazione:

    attualmente quello script postato, lo utilizzo con un CMS (joomla versione 1.0) (il tutto sù un server Aruba)per l'import da un fil xml che si trova in un'altro server.

    Ora per esigenze amministrative, mi trovo a dover spostare questo CMS in un server diverso, e utilizzando una versione di joomla 1.5.

    Preciso che inoltre che lo script non ha nulla a che vedere con il cms in quanto è stato creato appositamente per quest'import.

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