Ciao a tutti.
Sto utilizzando uno script per select dinamiche per l'inserimento in un database di due select, in cui la seconda si aggiorna dopo aver selezionato la prima.
Vorrei utilizzare questo script anche per la modifica dei prodotti inseriti, ma non riesco ad impostare quale <option> deve essere "selected".

lo script utilizza questi files;

list.js
codice:
var xmlHttp = getXmlHttpObject();

function loadList(tb, id){
xmlHttp.open('GET', 'request.php?table='+tb+'&id='+id, true);
xmlHttp.onreadystatechange = stateChanged;
xmlHttp.send(null);
}
function addOption(select, value, text) {
	//Aggiunge un elemento <option> ad una lista <select>
	var option = document.createElement("option");
	option.value = value,
	option.text = text;
	try {
		select.add(option, null);
	} catch(e) {
		//Per Internet Explorer
		select.add(option);
	}
}
function getSelected(select) {
	//Ritorna il valore dell'elemento <option> selezionato in una lista
	return select.options[select.selectedIndex].value;
}
function stateChanged() {
	if(xmlHttp.readyState == 4) {
		//Stato OK
		if (xmlHttp.status == 200) {
			var resp = xmlHttp.responseText;
			
			if(resp) {
				//Le coppie di valori nella striga di risposta sono separate da ;
				var values = resp.split(';');
				//Il primo elemento è l'ID della lista.
				var listId = values.shift();
				var select = document.getElementById(listId);
				//Elimina i valori precedenti
				while (select.options.length) {
					select.remove(0);
				} 
				
				if(listId == 'sezioni') {
					addOption (select, 0, '-- Seleziona sezione --');
				}
				var limit = values.length;
				
				for(i=0; i < limit; i++) {
					var pair = values[i].split('|');
					//aggiunge un elemento <option>
					addOption(select, pair[0], pair[1]);
				}
			}
		} else {
			alert(xmlHttp.responseText);
		}
	}
}

function getXmlHttpObject()
{
  var xmlHttp=null;
  try
    {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
    }
  catch (e)
    {
    // Internet Explorer
    try
      {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
    catch (e)
      {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
  return xmlHttp;
}
request.php
Codice PHP:
<?php
// questo file serve per comporre le select dinamiche delle categorie


define('DB_HOST','xx.xxx.xxx.xx');
define('DB_NAME','nomedatabase');
define('DB_USER','user');
define('DB_PASSWORD','password');

$conn mysql_connect(DB_HOSTDB_USERDB_PASSWORD) or die;
mysql_select_db(DB_NAME) or die;
//I valori in input vanno verificati
//id deve essere un valore numerico
$pid = (int)$_REQUEST['id'];
//maschera  eventuali caratteri speciali in table 
$tb mysql_real_escape_string($_REQUEST['table'], $conn);

switch(
$tb) {
    case 
'sezioni':
        
$sql="SELECT id, nome FROM `$tb` ORDER BY nome";
        break;
    case 
'categorie':
        
$sql="SELECT id, nome FROM `$tb` WHERE id_sezione=$pid ORDER BY nome";
        break;
}
//Il primo elemento della risposta è il nome della tabella (= attributo ID del tag select)
$out="$tb;";
if(
$result mysql_query($sql$conn)) {
    while (
$row mysql_fetch_row($result)) {
        
$out .= $row[0] . '|' $row[1] . ';';
    }
}
//Rimuove il carattere ; in coda
echo rtrim($out';');
?>
e le select vengono richiamate così:
codice:
<select name="sezioni" id="sezioni" onchange="loadList('categorie', getSelected(this))" ></select>
<select name="categorie" id="categorie"></select>

<script type="text/javascript">
//<![CDATA[
loadList('sezioni', 0);
//]]>
</script>
Qualcuno sa darmi una mano?

grazie ciao