è meno complicato di quello che sembra:
ho una serie di macrotemi che racchiudono ognuno una serie di temi (per capirci: il classico regione-provincia)
in una form ho un combo box che a seconda della scelta del macrotema popola il combo successivo.
Il tutto fatto con AJAX.
nella pagina php che crea xml come forma base c'è uno switch e per ogni case tutti i vari temi.
Fatto così funziona alla grande, ma volevo che sia i macrotemi che i temi venissero estratti da un db per dare la possibilità al cliente di aggiungere o togliere temi o sottotemi.
facendo lo switch e dando al case valori non estratti da db ma che corrispondo all'id per cui la query che estrae i sottotemi abbia l'id corrispondente su cui eseguire la ricerca il while sottostante cicla alla perfezione,
ma quando faccio estrarre gli id temi dal db e faccio ciclare i case con all'interno il ciclo dei sottotemi si impiastra tutto. per facilità di comprensione ecco il listato di come è in origine:
[php]
<?php
//Imposto un header XML
header("Content-type: application/xml");
header("Cache-control: no-cache, must-revalidate");
echo "<?xml version="1.0"?>\n";
echo "<categorie>\n";
//Recupero la variabile sulla quale effettuare i vari controlli
$myChoice = @$_POST['choice'];
//Eseguo il controllo
switch($myChoice){
case 1:
echo "\t<categoria value="1">A. Prima Voce</categoria>\n";
echo "\t<categoria value="2">A. Seconda Voce</categoria>\n";
echo "\t<categoria value="3">A. Terza Voce</categoria>\n";
break;
case 2 :
echo "\t<categoria value=\"4\">B. Quarta Voce</categoria>\n";
echo "\t<categoria value=\"5\">B. Quinta Voce</categoria>\n";
echo "\t<categoria value=\"6\">B. Sesta Voce</categoria>\n";
break;
case 3:
echo "\t<categoria value=\"7\">C. Settima Voce</categoria>\n";
echo "\t<categoria value=\"8\">C. Ottava Voce</categoria>\n";
echo "\t<categoria value=\"9\">C. Nona Voce</categoria>\n";
echo "\t<categoria value=\"10\">C. Decima Voce</categoria>\n";
break;
default:
echo "\t<categoria value=\"\">---</categoria>\n";
break;
}
echo "</categorie>\n";
?>
[/php]
e di come vorrei farla io
[php]
<?php
//Imposto un header XML
header("Content-type: application/xml");
header("Cache-control: no-cache, must-revalidate");
echo "<?xml version="1.0"?>\n";
echo "<categorie>\n";
//Recupero la variabile sulla quale effettuare i vari controlli
$myChoice = @$_POST['choice'];
//Eseguo il controllo
switch($myChoice){
$querymacro=eseguo query estraendo id dei macrotemi
while($macro=mysql_fetch_array($querymacro){
$id=$macro['id']
case $id:
ciclo la query che estrae i temi dall'id macrotema con while etc etc{
$nome= dato estratto dal db
echo "\t<categoria value="">$nome</categoria>\n";
break;
}
default:
echo "\t<categoria value=\"\">---</categoria>\n";
break;
}
}
echo "</categorie>\n";
?>
[/php]
so che è un casino, ma se qualcuno è così misericordioso da volerci ficcare il naso...
anche solo per dirmi che sono p**la e lo switch non funziona con il while.
per la cronaca ho provato anche gli if semplici, ma mi salta all'else finale