importare dati xml a mysql

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
facciamo con il clico for con php ,

solo che non so come fare ad integrarlo con il codice che mi hai scritto.
ti ringrazio buona giornata.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Fai delle prove di questo tipo

PHP:
<?php
$write = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<michele>';

$tables = array('news','photo','pagine');

foreach($tables as $table){
    
    $write.="<table_$table>\n";
    
    for($i=0;$i<100;$i++) $write.="<$table>
                                        <id>$i</id>
					<_userid>2</_userid>
					<_catid>1</_catid>
					<titolo>Test_01</titolo>
					<intro>Test_01</intro>
					<testo>Test_01</testo>
					<tag></tag>
					<data>2013-01-07 22:32:33</data>
					<active>1</active>
					<_update>2013-01-07 22:32:59</_update>
                                        </$table>";
    $write.="</table_$table>";
}
$write.="</michele>";
file_put_contents('file.xml',$write);
?>
In questo esempio le 3 tabelle devono avere tutti i campi uguali ora potresti fare 3 cicli for senza foreach mettendo i campi che vuoi per ogni tabella
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ho generato solo la tabella news e lo importata .. prima ho svuotato l'utente e dopo lo importato e riasalta fuori questo problema:

Errore nella query: INSERT INTO news SET id='19',_userid='2',_catid='1',titolo='Test_01',intro='Test_01',testo='Test_01',data='2013-01-07 22:32:33',active='1',_update='2013-01-07 22:32:59' Duplicate entry '19' for key 'PRIMARY'

si blocca l'inserimento .. ed mi inserisce solo 15 dati.

qualche idea per risolvere il problema?

grazie mille e buona giornata a stasera.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
ciao, nel file xml generato hanno tutti l'id diverso e nel db non esistono vero? Se è tutto ok, allora aggiungi questo controllo per saltare la query nel caso ci siano 2 id uguali
PHP:
$id = '';
    foreach($current_array[$table] as $insert){
        $query = "INSERT INTO ".$table." SET ";
        if(isset($insert['id'])){
            if($insert['id']==$id) continue;
            $id = $insert['id'];
       }
        OttieniDati(is_array($insert) ? $insert : $current_array[$table]);

        if($query!="INSERT INTO ".$table." SET ")
        $db->query($query) or die('Errore nella query: '.$query.' '.$db->error);

        if(!is_array($insert)) break;
    }
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
si i dati non ci sono perché li svuoto prima di importare i dati salvati in xml,
però mi da il solito problema .. vedi se ho messo il codice nel punto giusto:

PHP:
<?php
// Includo 
require_once(dirname(__FILE__) . '/../inc.php');
require_once(dirname(__FILE__) . '/admin.php');

$xml = simplexml_load_file('michele.xml');
$tables = array('news','photo','pagine');

function OttieniDati($insert){
    global $db,$query;
    foreach($insert as $key => $value)
            if(!is_array($value))
             $query .= $db->real_escape_string($key)."='".$db->real_escape_string($value).(end($insert)==$value?'\'':'\',');
}

foreach($tables as $table){
    
    $current_array = json_decode(json_encode($xml->{'table_'.$table}),true);
    
  
 $id = '';
    foreach($current_array[$table] as $insert){
        $query = "INSERT INTO ".$table." SET ";
        if(isset($insert['id'])){
            if($insert['id']==$id) continue;
            $id = $insert['id'];
       }
        OttieniDati(is_array($insert) ? $insert : $current_array[$table]);

        if($query!="INSERT INTO ".$table." SET ")
        $db->query($query) or die('Errore nella query: '.$query.' '.$db->error);

        if(!is_array($insert)) break;
    }
 
  }


?>

ti ringrazio molto.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Aggiungi un echo sull'id e dimmi quali stampa, se non ci sono doppioni vuol dire che c'è qualcosa nel database con lo stesso id
PHP:
if(isset($insert['id'])){ 
            if($insert['id']==$id) continue; 
            $id = $insert['id']; 
       } 
        echo "$id $table <br>";
        OttieniDati(is_array($insert) ? $insert : $current_array[$table]);
 
Ultima modifica:

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ecco l'output :
0 news1 news2 news3 news4 news5 news6 news7 news8 news9 news10 news11 news12 news13 news14 news15 news16 news17 news18 news19 news20 news21 news22 news23 newsErrore nella query: INSERT INTO news SET id='23',_userid='2',_catid='1',titolo='Test_01',intro='Test_01',testo='Test_01',data='2013-01-07 22:32:33',active='1',_update='2013-01-07 22:32:59' Duplicate entry '23' for key 'PRIMARY'

quindi? come mai ripete quello che vuole.. perché ogni volta importo cambia sempre l'id di quella che non vuole inserire.

ti ringrazio molto e buona serata.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
questo è l'immagine del db che sto provando nel sito online per essere sicuri che funzioni

Cattura.jpg

ti ringrazio molto.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Bah sembrerebbe tutto corretto :confused:, non so da cosa dipenda allora c'è qualcosa che ci sfugge, puoi provare a non settare l'id nei campi perché se è come chiave primaria sarà automaticamente auto_increment e quindi puoi anche non settarlo
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
scusa, molto ma sono confuso sulla protezione dell'utente..

quindi abbiamo lavorato per nulla..

perché ho capito che devo solamente salvare i dati dell'utente perché essendo che ha chiesto di svuotare il database dai suoi dati che ha scritto.

quindi mi sa che l'importazione dei dati dell'utente disabilitato "avendo chiesto la cancellazione", non serve.

giusto?

grazie mille e scusate per il lavoro che vi ho fatto fare.
buona serata.
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Importare dati Xml in un file txt PHP 0
Primian Importare dati su tabella MySQL MySQL 3
P Importare dati da Tessera Sanitaria CNS Programmazione 25
D Importare dati da più files excel in access MS Access 3
G Importare dati da file csv PHP 0
borgo italia importare dati csv in mysql MySQL 1
F Importare dati da un file txt PHP 3
felino Importare VHS: video in bianco e nero Discussioni Varie 6
A Importare array in mysql PHP 1
Valerio93 Importare database senza backup MySQL 0
R [MySQL] importare tabella cvs MySQL 0
camilia come importare thunderbird in Outlook Windows e Software 1
F [PHP] Importare file CSV in HTML PHP 12
M Importare - Manipolare Json Array Sviluppo app per Android 2
N [MySQL] Importare un database da MAMP a Remoto MySQL 4
M [PHP] Importare file csv su server PHP 0
W [WooCommerce] importare Prodotti suddivisi con: Categorie, Prodotti, Attributi E-Commerce 6
T mysql tutorial per importare tabelle access in mysql aiuto MySQL 2
F [PHP] Importare file CSV in HTML PHP 3
L [Wordpress][HTML]Importare articoli o progetti in pagina html WordPress 0
A [WordPress] Importare immagini in post WordPress 2
G Importare database dentro un contenitore (docker) wordpress Programmazione 1
S importare testi da file esterno a grafica photoshop Photoshop 0
alessandra86 Importare un xlsx in un database Mysql PHP 2
O importare file csv mysql PHP 3
G importare database mysql dentro un contenitore (docker) PHP 6
Laskot [Javascript] Importare file JSON in local storage Javascript 2
utente importare css da pagina html HTML e CSS 1
felino Importare i post di Facebook tra gli articoli di Wordpress WordPress 0
booklisa Tema Wordpress importare da demo CMS (Content Management System) 3
B IMPORTARE FILE .FRM E .IBD CON PHPMYADMIN MySQL 0
E Importare codice html da una pagina tramite php PHP 9
N come importare da dbf a mysql? MySQL 2
asevenx Importare file excel in database mysql PHP 3
L Importare post multipli in wp WordPress 5
G Cerco script per importare file .xml e .csv. Lavoro retribuito Offerte e Richieste di Lavoro e/o Collaborazione 2
neo996sps [PHP] Importare immagini in pagina PHP 0
otto9due importare file .php tramite .load dove sbaglio?? jQuery 2
C Importare file XML Javascript 1
L Importare e troncare una stringa da url PHP 16
M Importare correttamente in tabella file CSv con doppi apici MySQL 4
M Importare pagine database pubblico in foglio di calcolo OpenOffice Windows e Software 0
ivarello Importare CSV e compilare le giuste tabelle PHP 2
M CSV to MySQL - importare da csv in MySQL MySQL 3
E Importare valori da una tabella MySQL in una tabella con checkbox PHP 4
G Importare file txt in word Windows e Software 2
D errore 1064 nell'importare txt MySQL 1
A [php]Importare contatti PHP 2
G importare csv file in tabella oracle XE da script php PHP 1
B Wordpress: importare blog da feed rss WordPress 3

Discussioni simili