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
request.phpcodice: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; }
e le select vengono richiamate così: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_HOST, DB_USER, DB_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, ';');
?>
Qualcuno sa darmi una mano?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>
grazie ciao

Rispondi quotando