Da Xml a Mysql

Grazie dell'aiuto mr. php sei stato grande

tuttavia per la complessità del progetto ho deciso di cercare una via alternativa


vorrei leggere direttamente un file xml e tradurlo in immagine con le librerie gd


se vuoi darmi una mano ti posso illustrare cosa voglio fare, sarà molto più semplice e rapido
 
Ok allora come vuoi che si faccia il tutto...



Grazie mille :) ho deciso questo perchè effettivamente può essere difficile come cosa.... poi non voglio darti ulteriori fastidi.


Mi aiuti a leggere questo xml?




Vorrei tradurlo in immagine

http://www.yr.no/stad/Italia/Lazio/Roma/varsel.xml

è difficile come cosa? nell'xml ci sono vari periodi, espressi in data


Quello che mi interessa è:

- simbolo espresso in questa riga

<symbol number="1" name="Klårvêr" var="01d"/>

quello che ci interessa è il "number="


dimmi se è fattibile altrimenti non partiamo proprio ;)
 
PHP:
$xml = simplexml_load_file( 'http://www.yr.no/stad/Italia/Lazio/Roma/varsel.xml' );

$symbol = array();
$time = $xml->forecast->tabular->time;
						
foreach ( $time as $value )
   $symbol[] = $value->symbol->attributes()->number;

/* Per richiamare il simbolo */

echo $symbol[0],'<br/>',$symbol[1],' ecc...';
 
PHP:
$xml = simplexml_load_file( 'http://www.yr.no/stad/Italia/Lazio/Roma/varsel.xml' );

$symbol = array();
$time = $xml->forecast->tabular->time;
						
foreach ( $time as $value )
   $symbol[] = $value->symbol->attributes()->number;

/* Per richiamare il simbolo */

echo $symbol[0],'<br/>',$symbol[1],' ecc...';


Perfetto ora provo :)

per cambiare il periodo forse è la cosa più complicata o mi sbaglio?

<time from="2013-02-09T16:00:00" to="2013-02-09T19:00:00" period="2">


praticamente cambia la data da giorno a giorno

l'xml restituisce previsioni fino a 7 giorni

il "period"= 1/2/3 rappresenta la fascia oraria e varia da 0 a 3 per ogni giorno

bisognerebbe trovare il modo di variare la data "2013-02-09"


c'è qualche modo?
 
penso che solo questo sia il nodo da sbrogliare

l'xml si aggiorna ogni giorno e di conseguenza la data: <time from="2013-02-09

cambia di conseguenza, mentre il "period" cioè la fascia oraria esempio dalle 16.00 alle 19.00 resta sempre quello

che dici c'è un modo?

cmq sei bravissimo complimenti
 
Se quei valori non cambiano cosi dovrebbe andare bene altrimenti ci vuole un altro controllo.
PHP:
$xml = simplexml_load_file( 'http://www.yr.no/stad/Italia/Lazio/Roma/varsel.xml' ); 

$data = array(); 
$time = $xml->forecast->tabular->time; 
$ora = array( 'T16:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			);

$start = -1;

foreach ( $time as $value )
   $data[] = str_replace( $ora[++$start], '', $value->attributes()->from ) ; 

/* Per richiamare la data */ 
echo $data[0],'<br/>',$data[1],'<br/>',$data[2],' ecc...';
 
Ultima modifica:
Se quei valori non cambiano cosi dovrebbe andare bene altrimenti ci vuole un altro controllo.
PHP:
$xml = simplexml_load_file( 'http://www.yr.no/stad/Italia/Lazio/Roma/varsel.xml' ); 

$data = array(); 
$time = $xml->forecast->tabular->time; 
$ora = array( 'T16:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			);

$start = 0;

foreach ( $time as $value )
   $data[] = str_replace( $ora[++$start-1], '', $value->attributes()->from ) ; 

/* Per richiamare la data */ 
echo $data[0],'<br/>',$data[1],'<br/>',$data[2],' ecc...';


Si! praticamente queste sono le previsioni delle "fasce orarie" giornalieriere, l'unico valore che cambia è la data


esempio


<time from="2013-02-09T16:00:00" to="2013-02-09T19:00:00" period="2">
<!--
Valid from 2013-02-09T16:00:00 to 2013-02-09T19:00:00
-->
<symbol number="1" name="Klårvêr" var="01d"/>
<precipitation value="0"/>
<!-- Valid at 2013-02-09T16:00:00 -->
<windDirection deg="349.2" code="N" name="Nord"/>
<windSpeed mps="5.3" name="Lett bris"/>
<temperature unit="celsius" value="8"/>
<pressure unit="hPa" value="1009.5"/>
</time>


In questo caso la previsione è valida per il oggi, tra le 16.00 e le 19.00


ti chiedo una cosa, come fare poi per leggere la stringa successiva?, cioè per la giornata di "domani" in questo caso le successive stringe:

<time from="2013-02-10T01:00:00" to="2013-02-10T07:00:00" period="0">
<!--
Valid from 2013-02-10T01:00:00 to 2013-02-10T07:00:00
-->
<symbol number="3" name="Delvis skya" var="mf/03n.99"/>
<precipitation value="0"/>
<!-- Valid at 2013-02-10T01:00:00 -->
<windDirection deg="12.0" code="NNE" name="Nord-nordaust"/>
<windSpeed mps="2.4" name="Svak vind"/>
<temperature unit="celsius" value="-1"/>
<pressure unit="hPa" value="1012.7"/>
</time>


Come faccio a leggere la data del 10/02/2013


una volta sbrogliati questi nodi è fatta :)
 
PHP:
/* Per richiamare la data */  
echo $data[0],'<br/>',$data[1],'<br/>',$data[2],' ecc...'; 

/* Se per ogni data ci sono due valori basta fare due conti */
echo $data[0],'<br/>',$data[2],'<br/>',$data[4],' ecc...';
 
Se quei valori non cambiano cosi dovrebbe andare bene altrimenti ci vuole un altro controllo.
PHP:
$xml = simplexml_load_file( 'http://www.yr.no/stad/Italia/Lazio/Roma/varsel.xml' ); 

$data = array(); 
$time = $xml->forecast->tabular->time; 
$ora = array( 'T16:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			);

$start = -1;

foreach ( $time as $value )
   $data[] = str_replace( $ora[++$start], '', $value->attributes()->from ) ; 

/* Per richiamare la data */ 
echo $data[0],'<br/>',$data[1],'<br/>',$data[2],' ecc...';



provo così, ma il periodo come lo faccio a richiamare?
 
se mi fai un esempio diretto di codice un grande favore, mettiamo caso che la mappa di base sia "italia.png"

l'xml sia= http://www.yr.no/stad/Italia/Lazio/Roma/varsel.xml

I simboli sono da richiamare nella mappa presenti nella directory: /simboli e vanno da 1 a 23

e il periodo sia 0

ovviamente è intesa la data di oggi


ti ringrazio anticipatamente
 
Questo e il codice per richiamare i valori da XML poi te la vedi tu come li vuoi gestire
PHP:
$xml = simplexml_load_file( 'http://www.yr.no/stad/Italia/Lazio/Roma/varsel.xml' ); 

$time = $xml->forecast->tabular->time;

$symbol = array();
$data = array(); 
$ora = array( 'T16:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			);

$period = array();
$start = -1;

foreach ( $time as $value ) {
	
	$symbol[] = $value->symbol->attributes()->number; 
	$data[] = str_replace( $ora[++$start], '', $value->attributes()->from );
	$period[] = $value->attributes()->period; 
	
}
echo 'percorso/simboli/',$symbol[0],'.png';
echo 'percorso/simboli/',$symbol[1],'.png';
echo 'percorso/simboli/',$symbol[2],'.png';
echo 'percorso/simboli/',$symbol[3],'.png';
echo 'percorso/simboli/',$symbol[4],'.png';
echo 'percorso/simboli/',$symbol[5],'.png';
echo 'percorso/simboli/',$symbol[6],'.png';
 
Questo e il codice per richiamare i valori da XML poi te la vedi tu come li vuoi gestire
PHP:
$xml = simplexml_load_file( 'http://www.yr.no/stad/Italia/Lazio/Roma/varsel.xml' ); 

$time = $xml->forecast->tabular->time;

$symbol = array();
$data = array(); 
$ora = array( 'T16:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			  'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00', 'T13:00:00', 'T19:00:00', 'T01:00:00', 'T07:00:00',
			);

$period = array();
$start = -1;

foreach ( $time as $value ) {
	
	$symbol[] = $value->symbol->attributes()->number; 
	$data[] = str_replace( $ora[++$start], '', $value->attributes()->from );
	$period[] = $value->attributes()->period; 
	
}
echo 'percorso/simboli/',$symbol[0],'.png';
echo 'percorso/simboli/',$symbol[1],'.png';
echo 'percorso/simboli/',$symbol[2],'.png';
echo 'percorso/simboli/',$symbol[3],'.png';
echo 'percorso/simboli/',$symbol[4],'.png';
echo 'percorso/simboli/',$symbol[5],'.png';
echo 'percorso/simboli/',$symbol[6],'.png';



Si però non ho capito come stampare i simboli sulla mappa :(
 
PHP:
echo '<img alt="" width="30" height="30" src="percorso/simboli/',$symbol[0],'.png; " />';
echo $data[0];
echo $period[0];
Lo zero e 1 equivale a oggi dato che per ogni giorno ci sono due valori, 2 - 3 equivale ai valori di domani ecc...
 
cioè ho bisogno di una variabile per richiamarla con le librerie gd

io proverei così:

imagecopy($italia, $symbol, 55,10,0,0,45,45); mappa/simbolo/ cordinate di inserimento


ma non va :confused:
E sbagliato perche i valori sono in array ! quindi per richiamare un valore $symbol[0]
 
Poi $symbol non e il percorso intero ma soltanto il valore del symbol che sarebbe 0 -1 ecc...
PHP:
/* Se vuoi che $symbol aquisisca tutto il percoso devi cambiare il codice */

$symbol[] = 'percorso/simboli/'.$value->symbol->attributes()->number.'.estensione dell immagine';
 
Ultima modifica:
PHP:
echo '<img alt="" width="30" height="30" src="percorso/simboli/',$symbol[0],'.png; " />';
echo $data[0];
echo $period[0];
Lo zero e 1 equivale a oggi dato che per ogni giorno ci sono due valori, 2 - 3 equivale ai valori di domani ecc...
Ho sbagliato nel file solo Oggi ha 2 valori invece gl altri ne hanno 4.
 

Discussioni simili