- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- switch annidato in un while e mysql
-
switch annidato in un while e mysql
è 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
-
non c'è bisogno di nessuno switch
basta fare la query e farla stampare a video