problema php e xml

  • Creatore Discussione Creatore Discussione encrimi
  • Data di inizio Data di inizio

encrimi

Nuovo Utente
26 Set 2010
3
0
0
Salve a tutti,
ho un problema con uno script php con cui ho provato a parsare un documento xml.
In realtà lo script funziona bene solo che la soluzione adottata non era quello che volevo.
Descrivo lo script:
1. fa il load di un file xml (a seconda della lingua il load del file cambia)
2. le voci del file xml restituite dopo che questo è stato parsato dal file menu.php vengono poi convogliate in un altro file, header.php, tramite inclusione ove si trovano i parametri css per la formattazione del menu.

Essendo che la formattazione del menu in questo caso ha poca importanza posto solo il file xml (l'altro è uguale cambiano solo le voci tradotte ed il nome) ed il file menu php.
Cosa mi interessa sapere:
vorrei avere un solo file xml dove le voci invece di essere ad esempio "Chi Siamo" siano "_chi". Tale valore dovrebbe essere pio definito da un file es linguait.php o linguaen.php (a seconda del caso).
ecco i codici
..........................file xml............................
HTML:
<testo>
Home
<collegamento>
index.php
</collegamento>
</testo>
</menu>
<menu id='2'>
<testo>
Chi siamo
<collegamento>
#
</collegamento>
<subtesto id='1'>
Missione
<subcollegamento>
missione.php
</subcollegamento>
</subtesto>
<subtesto id='2'>
Visione aziendale
<subcollegamento>
vis_az.php
</subcollegamento>
</subtesto>
<subtesto id='3'>
Valori d'impresa
<subcollegamento>
val_imp.php
</subcollegamento>
</subtesto>
</testo>
</menu>
<menu id='3'>
<testo>
English
<collegamento>
header.php?lang=eng
</collegamento>
</testo>
</menu>
</navigatore>
..............................................file php.....................................................
PHP:
<?php
$lang = @$_GET['lang'];
if(isset($lang)== "eng"){
$xml=simplexml_load_file('menuen.xml');
}
else  {
$xml = simplexml_load_file('menuit.xml');
}
echo '<div id="menu"><ul>';
$primo= $xml->menu;
foreach($primo as $menu){
$coll=$menu->testo->collegamento;
$testo=$menu->testo;   
echo '<li><a href="'.$coll.'"class="green">'.$testo.'</a><ul>';
foreach ($menu->testo->subtesto as $subtesto)
{
$subcoll=$subtesto->subcollegamento;
echo '<li><a href="'.$subcoll.'"class="green">'.$subtesto.'</a></li>';
}
echo '</ul>';
}
echo '</li></ul></div>';
?>
...............................................................................
Altra cosa che non sono riuscito a capire:
all'inizio nel file php per il cambio lingua ho tenta di utilizzare l'istruzione switch inserendovi all'interno
PHP:
case "eng":  $xml=simplexml_load_file('menuen.xml');
case "ita":  $xml=simplexml_load_file('menuit.xml');
default: $xml=simplexml_load_file('menuit.xml');
non c'è stato verso di farlo funzionare nel senso che quando appariva il menu in italiano cliccavo sul tasto inglese per cambiare e lo faceva ma quando cliccavo su italiano per ritornare alla nostra lingua non ne voleva sapere.
Vi ringrazio in anticipo per le risposte. Enrico
 
Ultima modifica di un moderatore:
Chiedo scusa per non aver usato i tag di codice e ringrazio per la modifica.
Colgo l'occasione per un'ulteriore specificazione: ho tentato inutilmente di definire a seconda della lingua le voci contenute del file xml e provenienti dal ciclo foreach.
 
Mi rispondo da solo per l'ultima questione: quella dello switch.
Mi sono dimenticato di registrare la variabile di sessione :)

Up per la prima
 

Discussioni simili