Da Xml a Mysql

Allora per non fare confusione partiamo dal primo obbiettivo


Caricare i dati dai file xml al database mysql poi vedremo il resto
 
Imposta il file XML in questo modo e poi ti posto il codice per inserire i dati ne db ch e simile a quello precedente.
PHP:
<report>
	<location city="Abriola [Potenza;Italia]">
	<interesting>
		<url description="predizione">http://</url>
	</interesting>
		<var>
			<name>Temperatura minima</name>
			<icon>4</icon>
			<data>
				<forecast data_sequence="1" gradi="-2"/>
				<forecast data_sequence="2" gradi="-3"/>
				<forecast data_sequence="3" gradi="-6"/>
				<forecast data_sequence="4" gradi="-7"/>
				<forecast data_sequence="5" gradi="-8"/>
				<forecast data_sequence="6" gradi="0"/>
				<forecast data_sequence="7" gradi="-4"/>
			</data>
		</var>
		<var>
			<name>Temperatura massima</name>
			<icon>5</icon>
			<data>
				<forecast data_sequence="1" gradi="7"/>
				<forecast data_sequence="2" gradi="2"/>
				<forecast data_sequence="3" gradi="2"/>
				<forecast data_sequence="4" gradi="0"/>
				<forecast data_sequence="5" gradi="4"/>
				<forecast data_sequence="6" gradi="7"/>
				<forecast data_sequence="7" gradi="4"/>
			</data>
		</var>
		<var>
			<name>Vento</name>
			<icon>9</icon>
			<data>
				<forecast data_sequence="1" simbolo="7" desc="Vento debile dal ovest"/>
				<forecast data_sequence="2" simbolo="9" desc="Vento moderato dal nord"/>
				<forecast data_sequence="3" simbolo="6" desc="Vento debile da sud-ovest"/>
				<forecast data_sequence="4" simbolo="9" desc="Vento moderato dal nord"/>
				<forecast data_sequence="5" simbolo="13" desc="Vento moderato dal sud"/>
				<forecast data_sequence="6" simbolo="13" desc="Vento moderato dal sud"/>
				<forecast data_sequence="7" simbolo="5" desc="Vento debole dal sud"/>
			</data>
		</var>
		<var>
			<name>Simbolo</name>
			<icon>10</icon>
			<data>
				<forecast data_sequence="1" simbolo="18" desc="Cielo nuvoloso con intemperie nevose"/>
				<forecast data_sequence="2" simbolo="19" desc="Cielo coperto con intemperie nevose"/>
				<forecast data_sequence="3" simbolo="19" desc="Cielo coperto con intemperie nevose"/>
				<forecast data_sequence="4" simbolo="18" desc="Cielo nuvoloso con intemperie nevose"/>
				<forecast data_sequence="5" simbolo="3" desc="Nubi sparse"/>
				<forecast data_sequence="6" simbolo="7" desc="Cielo coperto con pioggia debole"/>
				<forecast data_sequence="7" simbolo="18" desc="Cielo nuvoloso con intemperie nevose"/>
			</data>
		</var>
		<var>
			<name>Giorno</name>
			<icon>15</icon>
			<data>
				<forecast data_sequence="1" desc="Giovedi"/>
				<forecast data_sequence="2" desc="Venerdì"/>
				<forecast data_sequence="3" desc="Sabato"/>
				<forecast data_sequence="4" desc="Domenica"/>
				<forecast data_sequence="5" desc="Lunedi"/>
				<forecast data_sequence="6" desc="Martedì"/>
				<forecast data_sequence="7" desc="Mercoledì"/>
			</data>
		</var>
		<var>
			<name>Definizione di Atmosphere</name>
			<icon>19</icon>
		</var>
	</location>
</report>
Se icon non serve toglila e rimani solo il campo Simbolo.
 
Ultima modifica:
Imposta il file XML in questo modo e poi ti posto il codice per inserire i dati ne db ch e simile a quello precedente.
PHP:
<report>
	<location city="Abriola [Potenza;Italia]">
	<interesting>
		<url description="predizione">http://</url>
	</interesting>
		<var>
			<name>Temperatura minima</name>
			<icon>4</icon>
			<data>
				<forecast data_sequence="1" gradi="-2"/>
				<forecast data_sequence="2" gradi="-3"/>
				<forecast data_sequence="3" gradi="-6"/>
				<forecast data_sequence="4" gradi="-7"/>
				<forecast data_sequence="5" gradi="-8"/>
				<forecast data_sequence="6" gradi="0"/>
				<forecast data_sequence="7" gradi="-4"/>
			</data>
		</var>
		<var>
			<name>Temperatura massima</name>
			<icon>5</icon>
			<data>
				<forecast data_sequence="1" gradi="7"/>
				<forecast data_sequence="2" gradi="2"/>
				<forecast data_sequence="3" gradi="2"/>
				<forecast data_sequence="4" gradi="0"/>
				<forecast data_sequence="5" gradi="4"/>
				<forecast data_sequence="6" gradi="7"/>
				<forecast data_sequence="7" gradi="4"/>
			</data>
		</var>
		<var>
			<name>Vento</name>
			<icon>9</icon>
			<data>
				<forecast data_sequence="1" simbolo="7" desc="Vento debile dal ovest"/>
				<forecast data_sequence="2" simbolo="9" desc="Vento moderato dal nord"/>
				<forecast data_sequence="3" simbolo="6" desc="Vento debile da sud-ovest"/>
				<forecast data_sequence="4" simbolo="9" desc="Vento moderato dal nord"/>
				<forecast data_sequence="5" simbolo="13" desc="Vento moderato dal sud"/>
				<forecast data_sequence="6" simbolo="13" desc="Vento moderato dal sud"/>
				<forecast data_sequence="7" simbolo="5" desc="Vento debole dal sud"/>
			</data>
		</var>
		<var>
			<name>Simbolo</name>
			<icon>10</icon>
			<data>
				<forecast data_sequence="1" simbolo="18" desc="Cielo nuvoloso con intemperie nevose"/>
				<forecast data_sequence="2" simbolo="19" desc="Cielo coperto con intemperie nevose"/>
				<forecast data_sequence="3" simbolo="19" desc="Cielo coperto con intemperie nevose"/>
				<forecast data_sequence="4" simbolo="18" desc="Cielo nuvoloso con intemperie nevose"/>
				<forecast data_sequence="5" simbolo="3" desc="Nubi sparse"/>
				<forecast data_sequence="6" simbolo="7" desc="Cielo coperto con pioggia debole"/>
				<forecast data_sequence="7" simbolo="18" desc="Cielo nuvoloso con intemperie nevose"/>
			</data>
		</var>
		<var>
			<name>Giorno</name>
			<icon>15</icon>
			<data>
				<forecast data_sequence="1" desc="Giovedi"/>
				<forecast data_sequence="2" desc="Venerdì"/>
				<forecast data_sequence="3" desc="Sabato"/>
				<forecast data_sequence="4" desc="Domenica"/>
				<forecast data_sequence="5" desc="Lunedi"/>
				<forecast data_sequence="6" desc="Martedì"/>
				<forecast data_sequence="7" desc="Mercoledì"/>
			</data>
		</var>
		<var>
			<name>Definizione di Atmosphere</name>
			<icon>19</icon>
		</var>
	</location>
</report>


ti ringrazio dell'enorme pazienza


mi sono dimenticato di dirti che questi file sono su un sito web, che fornisce "api meteo", quindi io non posso modificarli ma solo leggerli

deve essere modificato per forza?
 
Cmq in poche parole l' id e il simbolo ed solo il value che cambia. Ho inserito tutto il codice originale con Icon e Simbolo dovrebbe andare.
PHP:
/* Script per inserire i valore nel DB */
			$xml = simplexml_load_file( 'percorso/file.xml' );
			
			$city = $xml->location->attributes()->city;
			$var = $xml->location->var;

			mysql_connect();
			mysql_select_db();
			
			$query = 'INSERT INTO location ( location ) VALUES ( "'.$city.'" )';
			$result = mysql_query($query);
			
			$query = 'SELECT ID FROM location WHERE location="'.$city.'"';
			$result = mysql_query($query);
			
			$obj = mysql_fetch_object($result);
			
			$id = $obj -> ID;
			
			mysql_close();
			
			mysql_free_result($result);


			foreach ( $var as $value ) {
					
				$name = $value->name;
				$icon = $value->icon;
				$data = $value->data;
				$data_sequence = '';
				$simbolo = '';
				$gradi = '';
				$desc = '';
				
				foreach ( $data as $value ) {
					
					$data_sequence .= $value->forecast[0]->attributes()->data_sequence.'::';
					$data_sequence .= $value->forecast[1]->attributes()->data_sequence.'::';
					$data_sequence .= $value->forecast[2]->attributes()->data_sequence.'::';
					$data_sequence .= $value->forecast[3]->attributes()->data_sequence.'::';
					$data_sequence .= $value->forecast[4]->attributes()->data_sequence.'::';
					$data_sequence .= $value->forecast[5]->attributes()->data_sequence.'::';
					$data_sequence .= $value->forecast[6]->attributes()->data_sequence;

					$simbolo .= $value->forecast[0]->attributes()->$id.'::';
					$simbolo .= $value->forecast[1]->attributes()->$id.'::';
					$simbolo .= $value->forecast[2]->attributes()->$id.'::';
					$simbolo .= $value->forecast[3]->attributes()->$id.'::';
					$simbolo .= $value->forecast[4]->attributes()->$id.'::';
					$simbolo .= $value->forecast[5]->attributes()->$id.'::';
					$simbolo .= $value->forecast[6]->attributes()->$id;
					
					if( $name == 'Temperatura minima' || $name == 'Temperatura massima' ){
						
						$gradi .= $value->forecast[0]->attributes()->$value.'::';
						$gradi .= $value->forecast[1]->attributes()->$value.'::';
						$gradi .= $value->forecast[2]->attributes()->$value.'::';
						$gradi .= $value->forecast[3]->attributes()->$value.'::';
						$gradi .= $value->forecast[4]->attributes()->$value.'::';
						$gradi .= $value->forecast[5]->attributes()->$value.'::';
						$gradi .= $value->forecast[6]->attributes()->$value;
						
					}else{
						
						$desc .= $value->forecast[0]->attributes()->$value.'::';
						$desc .= $value->forecast[1]->attributes()->$value.'::';
						$desc .= $value->forecast[2]->attributes()->$value.'::';
						$desc .= $value->forecast[3]->attributes()->$value.'::';
						$desc .= $value->forecast[4]->attributes()->$value.'::';
						$desc .= $value->forecast[5]->attributes()->$value.'::';
						$desc .= $value->forecast[6]->attributes()->$value;
						
					}
					

										
				}
				
				mysql_connect();
				mysql_select_db();
				
				$query = 'INSERT INTO metalocation ( location, nome, icon, data, gradi, simbolo, description ) VALUES ( "'.$id.'", "'.$name.'", "'.$icon.'", "'.$data_sequence.'", "'.$gradi.'", "'.$simbolo.'", "'.$desc.'" )';
				
				$result = mysql_query($query);
				mysql_close();
				
				mysql_free_result($result);
				
			}
 
Cmq in poche parole l' id e il simbolo ed solo il value che cambia. Ho inserito tutto il codice originale con Icon e Simbolo dovrebbe andare.
PHP:
/* Script per inserire i valore nel DB */
			$xml = simplexml_load_file( 'percorso/file.xml' );
			
			$city = $xml->location->attributes()->city;
			$var = $xml->location->var;

			mysql_connect();
			mysql_select_db();
			
			$query = 'INSERT INTO location ( location ) VALUES ( "'.$city.'" )';
			$result = mysql_query($query);
			
			$query = 'SELECT ID FROM location WHERE location="'.$city.'"';
			$result = mysql_query($query);
			
			$obj = mysql_fetch_object($result);
			
			$id = $obj -> ID;
			
			mysql_close();
			
			mysql_free_result($result);


			foreach ( $var as $value ) {
					
				$name = $value->name;
				$icon = $value->icon;
				$data = $value->data;
				$data_sequence = '';
				$simbolo = '';
				$gradi = '';
				$desc = '';
				
				foreach ( $data as $value ) {
					
					$data_sequence .= $value->forecast[0]->attributes()->data_sequence.'::';
					$data_sequence .= $value->forecast[1]->attributes()->data_sequence.'::';
					$data_sequence .= $value->forecast[2]->attributes()->data_sequence.'::';
					$data_sequence .= $value->forecast[3]->attributes()->data_sequence.'::';
					$data_sequence .= $value->forecast[4]->attributes()->data_sequence.'::';
					$data_sequence .= $value->forecast[5]->attributes()->data_sequence.'::';
					$data_sequence .= $value->forecast[6]->attributes()->data_sequence;

					$simbolo .= $value->forecast[0]->attributes()->$id.'::';
					$simbolo .= $value->forecast[1]->attributes()->$id.'::';
					$simbolo .= $value->forecast[2]->attributes()->$id.'::';
					$simbolo .= $value->forecast[3]->attributes()->$id.'::';
					$simbolo .= $value->forecast[4]->attributes()->$id.'::';
					$simbolo .= $value->forecast[5]->attributes()->$id.'::';
					$simbolo .= $value->forecast[6]->attributes()->$id;
					
					if( $name == 'Temperatura minima' || $name == 'Temperatura massima' ){
						
						$gradi .= $value->forecast[0]->attributes()->$value.'::';
						$gradi .= $value->forecast[1]->attributes()->$value.'::';
						$gradi .= $value->forecast[2]->attributes()->$value.'::';
						$gradi .= $value->forecast[3]->attributes()->$value.'::';
						$gradi .= $value->forecast[4]->attributes()->$value.'::';
						$gradi .= $value->forecast[5]->attributes()->$value.'::';
						$gradi .= $value->forecast[6]->attributes()->$value;
						
					}else{
						
						$desc .= $value->forecast[0]->attributes()->$value.'::';
						$desc .= $value->forecast[1]->attributes()->$value.'::';
						$desc .= $value->forecast[2]->attributes()->$value.'::';
						$desc .= $value->forecast[3]->attributes()->$value.'::';
						$desc .= $value->forecast[4]->attributes()->$value.'::';
						$desc .= $value->forecast[5]->attributes()->$value.'::';
						$desc .= $value->forecast[6]->attributes()->$value;
						
					}
					

										
				}
				
				mysql_connect();
				mysql_select_db();
				
				$query = 'INSERT INTO metalocation ( location, nome, icon, data, gradi, simbolo, description ) VALUES ( "'.$id.'", "'.$name.'", "'.$icon.'", "'.$data_sequence.'", "'.$gradi.'", "'.$simbolo.'", "'.$desc.'" )';
				
				$result = mysql_query($query);
				mysql_close();
				
				mysql_free_result($result);
				
			}



Si cambia solo l'id praticamente


con lo script si possono caricare + xml per diverse località?


Questi li compilo così?

mysql_connect(host, username, password);
mysql_select_db(nome db);



giusto?
 
ho creato un file php e inserito il codice

quando però a lanciare il file mi da questo risultato nel browser


$query = 'INSERT INTO location ( location ) VALUES ( "'.$city.'" )'; $result = mysql_query($query); $query = 'SELECT ID FROM location WHERE location="'.$city.'"'; $result = mysql_query($query); $obj = mysql_fetch_object($result); $id = $obj -> ID; mysql_close(); mysql_free_result($result); foreach ( $var as $value ) { $name = $value->name; $icon = $value->icon; $data = $value->data; $data_sequence = ''; $simbolo = ''; $gradi = ''; $desc = ''; foreach ( $data as $value ) { $data_sequence .= $value->forecast[0]->attributes()->data_sequence.'::'; $data_sequence .= $value->forecast[1]->attributes()->data_sequence.'::'; $data_sequence .= $value->forecast[2]->attributes()->data_sequence.'::'; $data_sequence .= $value->forecast[3]->attributes()->data_sequence.'::'; $data_sequence .= $value->forecast[4]->attributes()->data_sequence.'::'; $data_sequence .= $value->forecast[5]->attributes()->data_sequence.'::'; $data_sequence .= $value->forecast[6]->attributes()->data_sequence; $simbolo .= $value->forecast[0]->attributes()->$id.'::'; $simbolo .= $value->forecast[1]->attributes()->$id.'::'; $simbolo .= $value->forecast[2]->attributes()->$id.'::'; $simbolo .= $value->forecast[3]->attributes()->$id.'::'; $simbolo .= $value->forecast[4]->attributes()->$id.'::'; $simbolo .= $value->forecast[5]->attributes()->$id.'::'; $simbolo .= $value->forecast[6]->attributes()->$id; if( $name == 'Temperatura minima' || $name == 'Temperatura massima' ){ $gradi .= $value->forecast[0]->attributes()->$value.'::'; $gradi .= $value->forecast[1]->attributes()->$value.'::'; $gradi .= $value->forecast[2]->attributes()->$value.'::'; $gradi .= $value->forecast[3]->attributes()->$value.'::'; $gradi .= $value->forecast[4]->attributes()->$value.'::'; $gradi .= $value->forecast[5]->attributes()->$value.'::'; $gradi .= $value->forecast[6]->attributes()->$value; }else{ $desc .= $value->forecast[0]->attributes()->$value.'::'; $desc .= $value->forecast[1]->attributes()->$value.'::'; $desc .= $value->forecast[2]->attributes()->$value.'::'; $desc .= $value->forecast[3]->attributes()->$value.'::'; $desc .= $value->forecast[4]->attributes()->$value.'::'; $desc .= $value->forecast[5]->attributes()->$value.'::'; $desc .= $value->forecast[6]->attributes()->$value; } } mysql_connect(); mysql_select_db(); $query = 'INSERT INTO metalocation ( location, nome, icon, data, gradi, simbolo, description ) VALUES ( "'.$id.'", "'.$name.'", "'.$icon.'", "'.$data_sequence.'", "'.$gradi.'", "'.$simbolo.'", "'.$desc.'" )'; $result = mysql_query($query); mysql_close(); mysql_free_result($result); }



forse sbaglio a dare i dati del mio database?
 
su aruba ho i seguenti dati:

host: numero ho st esempio XX.XXX.XXX
USERNAME: XX
PASSWORD: XX


DATABASE: XX_1


mysql_connect('xx.xxx.xxx','Sqlxxxxx','xxxxxx');
mysql_select_db('xxxxxx_1');


va bene così?
 
Allora devi inserire
PHP:
mysql_connect( host, username, password );
mysql_select_db( nome_database );
 
Allora devi inserire
PHP:
mysql_connect( host, username, password );
mysql_select_db( nome_database );

niente esce praticamente il contenuto dello script php


secondo me sbaglio a inserire i dati per il login mysql

devo rispettare gli spazi che hai inseriti tu in alto?


mysql_connect( XX.XXX.XXX, SqlXXXXX, eeeeee);
mysql_select_db( SqlXXXX_5 );



secondo me sto sbagliando qualcosa
 
ora ora lo script va ma mi genera diversi errori


Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in (http://www.miodominio.it/carica.php on line 19

Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /web/htdocs/www.miodominio.it/carica.php on line 82


ce ne sono tanti di errori


da cosa può dipendere?
 
forse ho trovato il problema, i dati del mysql andavano ripetuti anche in basso allo script, ora non si vedono più tutti quegli errori ma sono rimasti questi


Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /web/htdocs/www.xxxxxxx.it/home/carica.php on line 19

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /web/htdocs/www.xxxxxxx.it/home/carica.php on line 25

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /web/htdocs/www.xxxxxxx.it/home/carica.php on line 90

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /web/htdocs/www.xxxxxxx.it/home/carica.php on line 90

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /web/htdocs/www.xxxxxxx.it/home/carica.php on line 90

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /web/htdocs/www.xxxxxxx.it/home/carica.php on line 90

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /web/htdocs/www.xxxxxxx.it/home/carica.php on line 90

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /web/htdocs/www.xxxxxxx.it/home/carica.php on line 90



nel db non mi genera la tabella purtroppo :(
 
Postami tutto lo script completo !!! Cmq per creare una tabella ci vuole un altra query. Quello che ho fatto e per inserire i valore nelle tabelle già esistenti
 
Postami tutto lo script completo !!! Cmq per creare una tabella ci vuole un altra query. Quello che ho fatto e per inserire i valore nelle tabelle già esistenti


La colpa non è tua, è mia che evidentemente non mi sono proprio spiegato bene.


Io non ho uno "script", il mio si basa solo sulla lettura del mysql diretto.


quello tuo serve per inserire i dati xml nel database, io nel db non ho nessuna tabella

dovresti crearle con il tuo script e popolarli con i dati letti dall'xml


Non voglio stressarti :(


praticamente mi serve uno script vero e proprio per leggere, creare tabelle e popolarle
 

Discussioni simili