Gegevens uit XML bestand oproepen en laten zien op website

  • Onderwerp starter Onderwerp starter sot
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

sot

Gebruiker
Lid geworden
23 apr 2016
Berichten
9
Hoi
Ik ben al een tijdje aan het zoeken.
Ben in PHP een noob:confused:
Ik beheer de website van soutingoirschot.nl en wil de: actuele, dag, en totaal waarde van onze zonnecellen laten zien in een pagina

Als ik de data ophaal via API krijg ik onderstaande.

Ik zou graag weten hoe ik de data naar een bruikbare tekst kan omzetten.
Zou iemand mij daarmee willen helpen.?

Jos

De pagina is opgehaald met de volgende code: https://monitoringapi.solaredge.com/site/xxxxx/overview?&api_key=xxxxxxxxxxxxxxxxxxxxx

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<overview>
<lastUpdateTime>2016-04-23 17:26:27</lastUpdateTime>
<lifeTimeData>
<energy>884248.0</energy>
<revenue>194.53456</revenue>
</lifeTimeData>
<lastYearData>
<energy>883251.3</energy>
</lastYearData>
<lastMonthData>
<energy>394231.06</energy>
</lastMonthData>
<lastDayData>
<energy>14543.329</energy>
</lastDayData>
<currentPower>
<power>948.0</power>
</currentPower>
<measuredBy>INVERTER</measuredBy>
</overview>
 
Hoi,
Ja daar heb ik al naar gekeken, kan er geen touw aan vast knopen.
Ik begrijp dat ik de data moet ophalen (load)
Dat gebeurt, maar wat er daarna moet gebeuren ???

zoals ik zeg ben ik een Noob in dat soort dingen, breng me een auto en ik zeg je wat er aan de hand is.
En om eerlijk te zijn (zo ben ik ) heb ik geen tijd/zin om heel php te leren voor deze ene keer....
Alleen ik zou wel graag op weg geholpen worden.

Jos
 
Dat klopt je moet de data eerst ophalen met:
http://php.net/manual/en/function.simplexml-load-file.php (sla deze op in $xml)

Daarna kan je met
echo $xml->lastUpdateTime de update-tijd tonen. En met $xml->lifeTimeData->energy het totale energieverbruik.

Met http://codebeautify.org/xmlviewer kan je je XML-file voor de overzichtelijkheid mooi 'formatteren' zodat je een overzicht hebt hoe de XML-boom is opgebouwd.

Probeer het eens, en als het niet werkt, laat eens zien wat je geprobeerd hebt. Bij hulp op deze site wordt wel zelf-initiatief verwacht :).
 
Laatst bewerkt:
Ik heb wat lopen proberen.
Maar ik moet tocht eerst die data ophalen met de api code.
en die opslaan ?
en daarna de file weer ophalen..
 
het volgende sample laat je zien hoe je zou kunnen werken met xml
maar is geen goed voorbeeld voor een databaseconnectie(vroeger wel)

Code:
<?php
/**
 * <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Datasource connection>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 */

class DB_source implements tosave{//initialize = !important!security
	  private $DSfilename;//datasourcefilename
	  private $datasource;
	  private $DB_adapter;  
      private $DB_hosturl;
      private $DB_name;
      private $DB_user;
      private $DB_pwx;
      private $DB_port;
      private $DB_table;
      private $DB_is_connect = false;
      private static $illegalQsubstring =array("drop table","select * form users");
      const DEVELOPMENT = 1;
      const TEST = 2;//posible data and iligal data
      const PRODUCTION = 3;//real database
       /**
 		*@param DEVELOPMENT; TEST; PRODUCTION;   , "./test_ymlds2.xml"
 		*@name Dataconnect
        */
	 public function __construct($selection,$ymlDS2filename){
	 	    $this->DSfilename = $ymlDS2filename;
	 	    //print DEBUG? "test debug":"";
			switch($selection){ 
				case self::DEVELOPMENT : 
				 	$this->datasource=$this->get_datasource()->development;
				    break;
				case self::TEST :
					$this->datasource=$this->get_datasource()->test;
				     break;
				case self::PRODUCTION : 
					$this->datasource=$this->get_datasource()->production;
				    break;
 				default:
  					throw new InvalidArgumentException("Selection ERROR not found".$selection);
  					break;
			}
			if($this->datasource->adapter!=null){
				$this->DB_adapter = (string)$this->datasource->adapter;
      			$this->DB_hosturl = (string)$this->datasource->hosturl;
      			$this->DB_name = (string)$this->datasource->database;
      			$this->DB_user = (string)$this->datasource->username;
      			$this->DB_pwx = (string)$this->datasource->password."";
      			$this->DB_port = (string)$this->datasource->port;
			}
      }
     /**
 	  *@return
     */
      private function IS_conneced(){
      			return $this->DB_is_connect;
      }
      /**
 	  *@return
     */

 /*
 * CREATE TABLE contacts (id int(6) NOT NULL auto_increment,firstname varchar(15) NOT NULL,PRIMARY KEY (id),UNIQUE id (id),KEY id_2 (id))
 * INSERT INTO contacts VALUES ('','yourfirstname')
 * SELECT * FROM contacts
 */
        private function DoQuery($query){
			@mysql_query($query);
        }
        public function settable($table){
        	$this->DB_table=$table;
        }

        
        public function CON_Closse(){
      	    if ($this->DB_is_connect){
                mysql_close($this->DB_connection);
                $this->DB_is_connect = false;
            }
        }
        public function __destruct(){
  			if ($this->DB_is_connect){
                mysql_close($this->DB_connection);
                $this->DB_is_connect = false;
            }
		}
					/*
			<?xml version="1.0" encoding="UTF-8"?>
			<datasources>  
				<development>
					    <adapter>mysql</adapter>
					    <hosturl>localhost</hosturl>
					    <port>3306</port>
					    <database>testDB</database>
					    <!-- only for java -->
					    <driver-class>com.mysql.jdbc.Driver</driver-class>
					    <username>root</username>
					    <password>password</password>
					    <exceptionSorterClassName>
						org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exceptionSorterClassName>
					    <metadata>
					       <type-mapping>mySQL</type-mapping>
					    </metadata>
				</development>
				<test>
						<adapter>mysql</adapter>
					    <hosturl>localhost</hosturl>
					    <port>3306</port>
					    ...
			 	</test>
				<production>
						<adapter>mysql</adapter>
					    ...
				</production>
			</datasources>
			*/
		private function get_datasource(){
			return new SimpleXMLElement(file_get_contents($this->DSfilename));
		}

      }
?>
 
Laatst bewerkt:
Beetje een flinke bloated voorbeeld voor de vraagstelling in dit topic, vind je niet, Kanikavanbis?
Ik waardeer je hulp, maar denk zelf even goed na wat je adviseert en of een ander daar wat mee kan.
 
Laatst bewerkt:
Die URL geeft toch een XML-document en geen tabel?
Probeer dit eens?
Code:
<?php
$url = "https://monitoringapi.solaredge.com/site/xxxxx/overview?&api_key=xxxxxxxxxxxxxxxxxxxxx";
$xml = simplexml_load_file($url);
if($xml) {
 echo "<pre>".print_r($xml,true)."</pre>";
} else {
// de XML kan niet worden uitgelezen, toon de foutmeldingen!
      echo "XML-feed kan niet geladen worden:\n";
      foreach(libxml_get_errors() as $error) {
           echo "\t", $error->message;
      }
}
?>
 
Laatst bewerkt:
Kenikabis, waar heb jij die foreach voor nodig? Alle nodes in de XML zijn verschillend.
 
Ik ga er gewoon vanuit dat mensen iets meer willen dan enkel één waarde maar ok je hebt uw point.
 
Ik ga er gewoon vanuit dat mensen iets meer willen dan enkel één waarde maar ok je hebt uw point.
Als je meer waardes wilt tonen heb je alsnog geen foreach in deze situatie nodig. :)

Anyway de topicstarter kan eens naar mijn voorbeeld kijken.
 
@php4u

dan komt er dit uit

“.print_r($xml,true).”

“;
} else {
// de XML kan niet worden uitgelezen, toon de foutmeldingen!
echo “XML-feed kan niet geladen worden:\n”;
foreach(libxml_get_errors() as $error) {
echo “\t”, $error->message;
}
}
?>
 
Ja, dat is de code die je moet uitvoeren.
Wat doe je nu exact dan, dat je dit ziet?

- Ondersteunt je hosting wel PHP?
- Heeft je script wel de .php extensie?
 
Laatst bewerkt:
Is het nog gelukt? Zo ja, laat dan even weten wat je gedaan had, en hoe je het opgelost hebt.
 
Hoi
Server ondersteund PHP, site is in Joomla

Ik vul het volgende in

[insert_php]
$url = "https://monitoringapi.solaredge.com/site/221530/overview?&api_key=xxxxxxxxxxxxxxxxxxxxxxx";
$xml = simplexml_load_file($url);
if($xml) {
echo "<pre>".print_r($xml,true)."</pre>";
} else {
// de XML kan niet worden uitgelezen, toon de foutmeldingen!
echo "XML-feed kan niet geladen worden:\n";
foreach(libxml_get_errors() as $error) {
echo "\t", $error->message;
}
}
[/insert_php]

?>

En dan daarop kreeg ik dat antwoord.

XML-feed kan niet geladen worden:


Probleem is dus niet opgelost.
 
En in een losse PHP-file?
Staan er verder geen foutmeldingen bij?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan