Ho risolto. Con molta vergogna ammetto di aver dimenticato una parentesi di chiusura nella funzione javascript
Ora si presenta un problema di maggior complessità.
codice:
<SCRIPT type="text/javascript">
$(document).ready(function(){
$("select#s_matrice").change(function(){
var matrice = $(\"select#s_matrice option:selected\").attr('value');
$.post(\"select_prodotti.php\", {matr:matrice}, function(data){
$("select#s_prodotti").html(data);
})
})
</script>
Questo codice, teoricamente, dovrebbe inviare ad un file .php il valore selezionato nella select s_matrice e dopo le elaborazioni fatte nel file .php restituire i valori nella select con id= s_prodotti. Ma questo non avviene.
Questo è il codice del file select_prodotti.php
Codice PHP:
<?php
include_once 'select.class.php';
$opt = new SelectList();
if(isset($_POST['matr']))
{
function altraprova(){
$ultprov = $opt->ShowProdotti();
return $ultprov;
}
}else{
echo "'<option value=\"-1\"><-></option>'";
}
?>
Di seguito il codice del file select.class.php
Codice PHP:
<?php
class SelectList {
public function __construct()
{
$this->DbConnect();
}
protected function DbConnect()
{
global $db_server;
global $db_username;
global $db_password;
global $db_db;
$this->conn = mysql_connect($db_server,$db_username,$db_password) OR die("Impossibile connettersi al database");
mysql_select_db($db_db,$this->conn) OR die("Impossibile selezionare il database $db_db");
return TRUE;
}
public function ShowMatrice()
{
$sql = "select matrice from prodotti group by matrice order by matrice";
$res = mysql_query($sql,$this->conn);
$s_matrice = '<option value="-1"><-></option>';
while($row = mysql_fetch_array($res))
{
$s_matrice .= '<option value="'.$row['matrice'].'">'.$row['matrice'].'</option>';
}
return $s_matrice;
}
public function ShowProdotti()
{
$sql = "SELECT id , matrice, descrizione FROM prodotti WHERE matrice=".$_POST['matr']."";
$res = mysql_query($sql,$this->conn);
$s_prodotti = '<option value="-1"><-></option>';
while($row = mysql_fetch_array($res))
{
$s_prodotti .= '<option value="'.$row['descrizione'].'">'.$row['descrizione'].'</option>';
}
return $s_prodotti;
}
}
La funzione ShowMatrice compila la select con id= s_matrice mentre la funzione ShowProdotti si occupa di quella con id=s_prodotti.
Premetto che non ho molta dimestichezza con le classi, ma nel file non ho trovato degli errori.
Da una analisi del codice in esecuzione sembra che il problema sia questa istruzione:
codice:
$.post(\"select_prodotti.php\", {matr:matrice}, function(data){
Ma sinceramente non ho capito il motivo del malfunzionamento.
Spero in un vostro aiuto,