xml into array en dan naar database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rick Entonces

Rick Entonces

26/12/2013 12:14:52
Quote Anchor link
Hoi,

ik heb onderstaande code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
    ini_set ('display_errors', 1);
    error_reporting (E_ALL);
    
    $xml = simplexml_load_file('test.xml');
        
    $arr = array();
    foreach($xml->point as $val) {        
        $rMonitoring[]  = array(
                        'stplnr' => (int)$val->stplnr,
                        'errornr' => (int)$val->errornr,
                        'cyclusnr' => (int)$val->cyclusnr,
                        'pointnr' => (string)$val->pointnr,
                        'date' => (string)$val->date,
                        'time' => (string)$val->time,
                        'posX' => (float)$val->posX,
                        'posY' => (float)$val->posY,
                        'posZ' => (float)$val->posZ,
                        'stplX' => (float)$val->stplX,
                        'stplY' => (float)$val->stplY,
                        'stplZ' => (float)$val->stplZ
                    );
    }

    
    var_dump($rMonitoring);
    
?>


En dat geeft deze oa output :

array (size=7)
0 =>
array (size=12)
'stplnr' => int 1
'errornr' => int 0
'cyclusnr' => int 1
'pointnr' => string 'CNT101' (length=6)
'date' => string '28-12-2013' (length=10)
'time' => string '12:00:43' (length=8)
'posX' => float 2.445
'posY' => float 3.2375
'posZ' => float 5.45
'stplX' => float 0.125
'stplY' => float 1.5
'stplZ' => float 2.5
1 =>
array (size=12)
'stplnr' => int 1
'errornr' => int 0
'cyclusnr' => int 1
'pointnr' => string 'CNT102' (length=6)
'date' => string '28-12-2013' (length=10)
'time' => string '12:02:43' (length=8)
'posX' => float 2.445
'posY' => float 3.2375
'posZ' => float 5.45
'stplX' => float 0.125
'stplY' => float 1.5
'stplZ' => float 2.5

Mijn vraag is hoe kan ik dit nu netjes in een tabel gesorteerd weergeven en daarna die values die die ingelezen heeft uit de xml door middel van een knop naar mijn database toe sturen.

En mijn 2e vraag die zal hier niet echt thuis horen denk ik...
Maar kan php elke keer de allernieuwste .XML file van een bepaalde locatie op me pc inlezen zoals hierboven en de database updaten met de nieuwe gevonden data??

Tips zijn enorm welkom

Groet
 
PHP hulp

PHP hulp

17/11/2024 07:44:20
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/12/2013 13:37:02
Quote Anchor link
Rick Entonces op 26/12/2013 12:14:52:
Mijn vraag is hoe kan ik dit nu netjes in een tabel gesorteerd weergeven en daarna die values die die ingelezen heeft uit de xml door middel van een knop naar mijn database toe sturen.


Zullen we het bovenstaande eerst eens omdraaien? Laten we eerst de gegevens die uit de xml komen wegschrijven in een goed ingerichte database tabel. Waarom? Omdat je daarna dan zo lekker eenvoudig kunt sorteren onder andere.

Rick Entonces op 26/12/2013 12:14:52:
En mijn 2e vraag die zal hier niet echt thuis horen denk ik...
Maar kan php elke keer de allernieuwste .XML file van een bepaalde locatie op me pc inlezen zoals hierboven en de database updaten met de nieuwe gevonden data??


Ja dat kan. ik ga er even vanuit dat de webserver en 'me pc' dezelfde machine is? dan kun je de php functie file_get_contents() gebruiken om het hele bestand in één keer in te lezen.
Gewijzigd op 26/12/2013 13:38:07 door Frank Nietbelangrijk
 
Rick Entonces

Rick Entonces

27/12/2013 11:17:11
Quote Anchor link
He frank,

bedankt voor je bericht, om terug te komen op het eerste gedeelte,
de uitgelezen data van de xml wil ik eerst gecontroleerd hebben voordat het naar de database gestuurd wordt.

De opzet is :

gebruiker klikt op bladeren, zoekt in de directory het eerst xml bestand bijv 20131227-1.xml en selecteert deze en leest hem in. Die gegevens wil ik dan zien en na controle de database ermee vullen.

vervolgens moet php en sql dan zelf die directory in de gaten houden en zodra er een 2e cyclus gemeten is en dus een 2e xml file zich bevind hem automatisch inlezen en direct naar de database sturen,
elke 10 minuten volgt er een nieuwe cyclus.

verdere stappen zijn dan dat de gebruiker live kan zien na elke cyclus wat er met een bepaald punt gebeurd in grafiek ofzo....

meer tips zijn cker welkom?

groet
 
Erwin H

Erwin H

27/12/2013 12:12:28
Quote Anchor link
Dan nog kan je het het beste eerst in de database zetten. Ofwel in een andere tabel, ofwel met een flag dat het nog een niet gecontroleerd record is. Scheelt je in elk geval meerdere keren die data inlezen en je kan er meer mee (sorteren, selecteren etc).

Maar alleen als je php script en de xml bestanden op dezelfde fysieke machine staan kan php autonoom die bestanden inlezen. Als je xml bestanden op je pc staan en php op een server draait is dat onmogelijk.
 
Rick Entonces

Rick Entonces

27/12/2013 12:32:59
Quote Anchor link
Oke

thnx voor de tips! term flag zeg me even niks maar snap je punt met het in een andere tabel te plaatsen.
PHP en xml files is allemaal op de zelfde machine ja.

Stel dat je dit van een afstand wil gaan doen, wat zijn daar de mogelijkheden voor dan.
volstrekt onmogelijk of andere talen etc????
 
Erwin H

Erwin H

27/12/2013 12:46:29
Quote Anchor link
Onmogelijk. Tenzij er een download link beschikbaar is die php kan aanroepen.

Flag is gewoon een kolom waarin je de status van het record aangeeft. Bijvoorbeeld een integer waarbij 1 staat voor actief en 0 staat voor inactief oid.
 
Rick Entonces

Rick Entonces

27/12/2013 15:11:48
Quote Anchor link
Om de extensie te controleren op .xml heb ik ditgene er nog voor gezet om te controleren.
maar elke keer komt deze terug met : kies het juiste bestand.

enig idee waar dit nu op fout gaat?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
error_reporting(E_ALL | E_STRICT);
// Check if extention is correct for uploading file.

# Array met toegestane types

    $type = array('.xml',);

# Array met toegestane mime types
    $mime = array('text/xml',);

# Extensie van het bestand
    $extensie = $_FILES['file'];

# Kijken of het bestand is toegestaan
    if(!in_array($extensie, $type)) {
        # Geen valid bestand
        echo 'Kies A.U.B een correcte file.';
    }
else {
        # Kijken of het een valid mime type is
        if(!in_array($_FILES['file']['type'], $mime)) {
            # Mime type is niet valid.
            echo 'Dit is geen valid file.';
        }
else {
            // Ga verder met het inlezen van het bestand
            echo 'u heeft het juiste bestand geselecteerd';
        }
    }

  
?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.