Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2018
    Messaggi
    11

    Importazione dati da file xml in db mysql con php

    Salve sono nuovo del forum e spero che tra divoi ci sia chi potra aiutarmi...stavo porvando a fare quanto in oggeto seguendo le indicazioni trovate in questa discussiaone
    ..giorgiotave.it/forum/php-mysql/201693-importare-dati-da-xml-db-mysql.html
    ma nonostante molteplici prove modifiche aver letto un po di tutto sul web son sempre punto e accapo.

    il codic ewhe uso per eseguire l'importazione del file e in teoria la query di sinerimento è il seguente:

    [Back]

    <?php
    // Richiamo il file di configurazione
    require 'config.php';


    // Richiamo lo script responsabile della connessione a MySQL
    require 'connect.php';


    // Recupero il file
    $file = $_FILES['filexml'];


    codice:
    // Controllo che il file sia stato inserito
    if ( $file['tmp_name'] != '' ) {
        // Carica il file in una variabile $xml
        $xml = simplexml_load_file( $file['tmp_name'] );
        
        // Controllo tutti i tag "utenti"
        foreach( $xml->utenti as $value ) {
            
            // Recupero tutti i campi da ogni tag "utenti"
            $nome = $value->NOME;
            $cognome = $value->COGNOME;
            $indirizzo = $value->INDIRIZZO;
            $mail = $value->MAIL;
            $telefono = $value->TELEFONO;
            
            // Creo una query di inserimento e la eseguo
        $sql = "INSERT INTO Utenti (nome, cognome, indirizzo, mail, telefono) VALUES ('$nome', '$cognome', '$indirizzo', '$mail', '$telefono')";
        $rssql = mysql_query( $sql );
            
            // Controllo che l'importazione sia avvenuta con successo
            echo ( $rssql ) ? "Importazione avvenuta con successo" : "Errore nella query o connessione al DB mancante";
        }
    }
    else
        echo "Nessun file inserito";
    il rusiltato che ho una volat provato a eseguire il tuuto e il mio messaggio di errore "Errore nella query o connessione al DB mancante" ripetuto tante volte quante sono i record del file xml che provo a importare.
    all'inizio pensavo fosse proprio l'upload del file e il parsing dell'xml in php ma poi provandoa sostituire le variabili della query ...VALUES ('$nome', '$cognome', '$indirizzo', '$mail', '$telefono')...con VALUES ('1', '2', '3', '4', '5')...questi valori vengono scritti sul db tante volte quanti sono i record del file xml di prova.
    Leggendo su svariati forum e discussioni sembra che la sintassi della query sia corretta quindi non so cosa altro andare a vedere.
    per dovere di cronaca ho provato a far stampare a video il risultato dell'upload con questo codice :

    codice:
    [Back]
    
    <?php
    // Recupero il file
    $file = $_FILES['filexml'];
    
    
    // Controllo che il file sia stato inserito
    if ( $file['tmp_name'] != '' ) {
    // $xml = simplexml_load_file('dati.xml');
    $xml = simplexml_load_file( $file['tmp_name'] );
    echo "<h2>Dati presenti nel file: (".count($xml->utenti).")</h2>";
    echo "<ul>";
    $n = 0;
    foreach ($xml->utenti as $utenti){
    
    
    $nome =$utenti->NOME;
    $cognome =$utenti->COGNOME;
    $indirizzo =$utenti->INDIRIZZO;
    $mail =$utenti->MAIL;
    $telefono =$utenti->TELEFONO;
    echo "<li>Utente $n / Nome: $nome / Cognome: / $cognome / Indirizzo: $indirizzo / Mail: / $mail / Telefono: / $telefono</li>";
    }
    }
    echo "</ul>";
    e viene eseguito correttamente
    spero che qualcuno risponda al mio appello ...grazie mille fin d'ora

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Benvenuto.
    Il problema te lo dice il messaggio d'errore
    "Errore nella query o connessione al DB mancante"
    Quindi le tue query restituiscono "false", vanno in errore.
    Se sei sicuro che la query sia corretta, allora hai un problema sulla connessione, verifica i dati che usi per effettuarla: username, password, host, nome db.
    Finché sei in fase di sviluppo, non usare messaggi personalizzati per errori che ne hanno di predefiniti, tipo appunto la connessione al db, che magari nel codice di connessione (che non mostri) non è neanche prevista la stampa del messaggio d'errore.

    Ma soprattutto NON usare le funzioni mysql_ sono state abbandonate, usa mysqli_ (con la i finale e vedi che cambiano un po' da quelle che usi adesso) o meglio se usi PDO visto che tanto devi imparare.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2018
    Messaggi
    11
    Grazie per la risposta e per i suggerimenti ma il problema risiede nel far richiamare le variabile nella query... VALUES ('$nome', '$cognome', '$indirizzo', '$mail', '$telefono'...perche se al posto delle variabili metto valori fissi 1 2 3... Di contro le variabili funzionano perché se le voglio a video, come fatto con il codice he ho postato alla fine, vengono stampate... Cmq provo modificare le fun, ioni ome mi hai suggerito e grazie ancora per La risposta

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Allora invece di
    $rssql = mysql_query( $sql );

    metti
    echo $sql;

    così vedi cosa ci mette al posto delle variabili e ti rendi conto di cosa succede.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2018
    Messaggi
    11
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Allora invece di
    $rssql = mysql_query( $sql );

    metti
    echo $sql;

    così vedi cosa ci mette al posto delle variabili e ti rendi conto di cosa succede.
    il risultato è questo
    INSERT INTO Utenti (nome, cognome, indirizzo, mail, telefono) VALUES ('AAA', 'aaa', 'Via di aaa, 11', 'AAA@aaa.com', '0123456')Errore nella query o connessione al DB mancanteINSERT INTO Utenti (nome, cognome, indirizzo, mail, telefono) VALUES ('BBB', 'bbb', 'Via bbb, 22', 'BBB@bbb.it', '6543210')Errore nella query o connessione al DB mancanteINSERT INTO Utenti (nome, cognome, indirizzo, mail, telefono) VALUES ('CCC', 'ccc', 'Via ccc, 33', 'CCC@ccc.org', '112233')Errore nella query o connessione al DB mancanteINSERT INTO Utenti (nome, cognome, indirizzo, mail, telefono) VALUES ('DDD', 'ddd', 'Via ddd, 33', 'DDD@ddd.org', '112233')Errore nella query o connessione al DB mancante
    quindi le variabili le mette....allora cosa va in errore??? Come faccio afar comparire il messaggio dio errore standard?

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Codice PHP:
    echo ( $rssql ) ? "Importazione avvenuta con successo" mysql_errno() . ": " mysql_error(); 
    Comunque come vedi i dati dal file XML vengono presi e messi nelle query.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2018
    Messaggi
    11
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Codice PHP:
    echo ( $rssql ) ? "Importazione avvenuta con successo" mysql_errno() . ": " mysql_error(); 
    Comunque come vedi i dati dal file XML vengono presi e messi nelle query.
    si infatti ....ora mi da questo risultato

    INSERT INTO Utenti ('nome', 'cognome', 'indirizzo', 'mail', 'telefono') VALUES ('1', '2', '3', '4', '5');0: INSERT INTO Utenti ('nome', 'cognome', 'indirizzo', 'mail', 'telefono') VALUES ('6', '7', '8', '9', '10');0: INSERT INTO Utenti ('nome', 'cognome', 'indirizzo', 'mail', 'telefono') VALUES ('11', '12', '13', '14', '15');0: INSERT INTO Utenti ('nome', 'cognome', 'indirizzo', 'mail', 'telefono') VALUES ('16', '17', '18', '19', '20');0:

    quindi il codice errore sarebbe 0 (zero).

    Riprendendo al tua risposta ho visto che i dati dall'xml li prende e li mette nella query...allora perchè non vanno nel db??? La cosa comica è che se scrivo la query direttamente senza le variabili con i valori glieli mette nel db....

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    A parte tutto, smetti di cercare la soluzione per questo problema, prima abbandona le funzioni mysql_ (che ti ripeto sono state abbandonate, da PHP7 non eistono più) e passa a mysqli_ o meglio a PDO, poi vedi se il problema ce l'hai ancora o se sparisce.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2018
    Messaggi
    11
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    A parte tutto, smetti di cercare la soluzione per questo problema, prima abbandona le funzioni mysql_ (che ti ripeto sono state abbandonate, da PHP7 non eistono più) e passa a mysqli_ o meglio a PDO, poi vedi se il problema ce l'hai ancora o se sparisce.
    Passato a mysqli ma il risultato è lo stesso

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