Salve, premetto che sono un apprendista su questo genere di linguaggio di programmazione, quindi scusatemi se vi chiedo cose altamente banali:

Sto realizzando un programmino capace gestire le comande che vengono prese nei ristoranti... Ho creato una struttura in php,mysql, ajax e tutto funziona bene solo che è un po' lentino quindi ho deciso di lavorare un po' con XML...

Possiedo una struttura XML che indica le ordinazioni che vengono prese per ogni tavolo identificato con <tavolo id="1,2,3..ecc"> dove i numeri dell'ID identificano il numero del tavolo:


test.xml

<?xml version="1.0" encoding="UTF-8"?>
<tavoli>
<tavolo id="2"><valore id="3">3</valore><opzione id="3:2::::">3:2::::</opzione></tavolo>
<tavolo id="2"><valore id="3">3</valore><opzione id="2:1::::">2:1::::</opzione></tavolo>
</tavoli>

articolo.xml

<?xml version="1.0"?>
<articoli>
<articolo id="1"><valore>COZZE GRADINATE</valore></articolo>
<articolo id="2"><valore>BIRRA 66Cl</valore></articolo>
<articolo id="3"><valore>GAMBERONI ALLA GRIGLIA</valore>
</articolo>
</articoli>

opzione.xml

<?xml version="1.0"?>
<opzioni>
<opzione id="1"><valore>AGLIO</valore></opzione>
<opzione id="2"><valore>GHIACCIO</valore></opzione>
<opzione id="3"><valore>VAI CUCINA</valore></opzione>
<opzione id="4"><valore>MENO</valore></opzione>
<opzione id="5"><valore>MOZARELLA</valore></opzione>
</opzioni>


e inoltre ho fatto delle modifiche al codice che legge e stampa le pietanze:

<?


$dom = new DOMDocument('1.0', 'UTF-8');
$dom->load('test.xml');
//creo l'oggetto XPath
$xpath = new DOMXPath($dom); //imposto ed eseguo la query

$asd = new DOMDocument('1.0', 'UTF-8');
$asd->load('articolo.xml');
//creo l'oggetto XPath
$xpath2 = new DOMXPath($asd);
//imposto ed eseguo la query

$opzione = new DOMDocument('1.0', 'UTF-8');
$opzione->load('opzione.xml');
//creo l'oggetto XPath
$xpath3 = new DOMXPath($opzione);
//imposto ed eseguo la query

$nodes = $xpath->query('//tavolo[@id="' . $idtavolo. '"]'); // estrapolo tutti i nodi che fanno parte al tavolo selezionato
//tavolo[not(@id=preceding::tavolo/@id)]/@id

//crea la lista
foreach ($nodes as $node)
{
$entry = $xpath2->query('//articolo[@id="'.$node->nodeValue[0].'"]/valore'); //seleziono il valore dell'aticolo presente nel tavolo
foreach ($entry as $a)
{

echo $a->textContent.'
';

for($i=1;$i<=6;$i++)
{
$entry2 = $xpath3->query('//opzione[@id="'.$node->textContent[$i].'"]/valore'); //seleziono l'opzione se presente collegata all'articolo ordinato

foreach ($entry2 as $b)
{
echo $b->textContent.'
';
}
}
}
}
?>

quello che stampa é:

GAMBERONI ALLA GRIGLIA
VAI CUCINA
GHIACCIO

GAMBERONI ALLA GRIGLIA
GHIACCIO
AGLIO

quello che dovrebbe visualizzare è:

1: GAMBERONI ALLA GRIGLIA
VAI CUCINA
GHIACCIO

1: GAMBERONI ALLA GRIGLIA
GHIACCIO
AGLIO

e nel momento in cui ci sono 2 pietanze uguali:

2: GAMBERONI ALLA GRIGLIA
VAI CUCINA
GHIACCIO

1: GAMBERONI ALLA GRIGLIA
GHIACCIO
AGLIO

spero che mi possiate aiutare...

saluti!