Buongiorno, intanto mi scuso con tutti perché la prima volta non avevo ben capito come postare il codice e il messaggio veniva tagliato. In pratica il mio problema è questo. Ho una pagina php dove ho inserito delle SELECT (due) dinamiche in ajax (che ammetto di non conoscere) adattando un codice postato su queste pagine qualche anno fa. In pratica al cambiare del valore della prima SELECT cambiano quelli della seconda. All’inizio sembrava funzionare ma poi mi sono accorto che quando seleziono il primo campo della SELECT 2 e invio il form, nel DB mysql collegato viene memorizzato sempre il valore 0 e non l’ID relativo alla selezione effettuata. Questo succede solo per il primo campo in elenco, dal secondo in poi i dati vengono inviati correttamente al DB. Non capisco dove sbaglio. Il tutto si compone di 3 pagine:
- inserimento.php
- get.php
- select.class.php
Ecco il codice delle pagine:
codice:
inserimento.php
<?php
include('select.class.php');
$obj = new select();
$l1 = $obj->getL1();
?>
<script type="text/javascript">
//Script per il menu a concatenazione
var http = createRequestObject();
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP");
}else{
ro = new XMLHttpRequest();
}
return ro;
}
function loading(){
var id = document.getElementById('gruppi').value;
http.open('GET','get.php?id='+id, true);
http.onreadystatechange = getState;
http.send(null);
}
function getState(){
var newOption;
var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;
var State = document.getElementById('sezioni');
while (State.options.length) {
State.remove(0);
}
id = document.getElementById('gruppi').value;
if(id == 'sel'){
document.getElementById('sezioni').disabled = true;
newOption = document.createElement("option");
newOption.value = 'sel';
newOption.text = 'Seleziona una Sezione:';
State.add(newOption, where);
}else{
if(http.readyState == 4){
if (http.status == 200) {
var response = http.responseText;
if(response == ''){
document.getElementById('sezioni').disabled = true;
newOption = document.createElement("option");
newOption.value = 'sel';
newOption.text = 'Nessuna voce';
State.add(newOption, where);
}else{
coppia = response.split(',');
max = coppia.length;
newOption = document.createElement("option");
newOption.value = 'sel';
newOption.text = 'Seleziona una Sezione:';
State.add(newOption, where);
for(x=0;x<max;x++){
val = coppia[x].split('-');
newOption = document.createElement("option");
newOption.value = val[0];
newOption.text = val[1];
State.add(newOption, where);
}
document.getElementById('sezioni').disabled = false;
}
}
}
}
}
</script>
……….
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" name="ins_mobilia" method="post">
<table width="900" cellpadding="2" align="center" style="font-size:12;">
…….
tr><td align="right">GRUPPO *</td><td><select style="width: 400;" name="gruppi" id="gruppi" onchange="loading()">
<option value="sel" selected="selected" required">Seleziona un Gruppo</option>
<?php
for($x=0;$x<count($l1);$x++){
?>
<option value="<?=$l1[$x]['ID_gruppo']?>"><?=$l1[$x]['nome_gruppo']?></option>
<?php
}
?>
</select> </td>
<td align="right">SEZIONE *</td><td><select name="sezioni" id="sezioni" disabled>
<option value="sel" selected="selected" required>Seleziona una Sezione</option></select></td></tr>
get.php
<?php
include('connessione_mobilia.php');
include('select.class.php');
$id = $_REQUEST['id'];
$obj = new select();
$l1 = $obj->getL1($id);
$Js = '';
for($x=0; $x<count($l1); $x++){
$l2 = $obj->getL2($l1[$x]['ID_gruppo']);
for($y=0;$y<count($l2);$y++){
if($y < (count($l2)-1)){
$end = ",";
}else{
$end = "";
}
$Js .= $l2[$y]['ID_sezione']."-".$l2[$y]['nome_sezione'].$end;
}
}
//echo "text";
echo $Js;
?>
select.class.php
<?php
class select{
function select(){
}
function getL1($id=''){
if(!empty($id)){
$sSQL = "SELECT * FROM gruppi WHERE ID_gruppo = $id";
}else{
$sSQL = "SELECT * FROM gruppi Order by nome_gruppo";
}
include "../connessione_no_session.php";
$ris = mysqli_query($conn, $sSQL);
while($row = mysqli_fetch_assoc($ris)){
$list[] = array('ID_gruppo' => $row["ID_gruppo"],
'nome_gruppo' => $row["nome_gruppo"]);
}
return $list;
}
function getL2($id){
$sSQL = "SELECT * FROM sezioni WHERE ID_gruppo = $id Order By nome_sezione";
include "../connessione_no_session.php";
$ris = mysqli_query($conn, $sSQL);
while ($row = mysqli_fetch_assoc($ris)) {
$list[] = array('ID_sezione' => $row["ID_sezione"],
'nome_sezione' => $row["nome_sezione"]);
}
return $list;
}
}
?>
Spero che qualcuno abbia la pazienza e la voglia di aiutarmi. Grazie in anticipo