Buongiorno a tutti.
Vi espongo il mio problema. Ho un database "Ospedale", contenente tra le altre le seguenti tabelle(collegate tra loro):
- Reparti (id_reparto -tinyint(3)-, nome reparto -varchar(30), ecc)
- Esami (id_esame -smallint(6)-, id_reparto -tinyint(3), nome_esame -varchar(30)-)
- Prenotazioni (id_prenotazione -mediumint(8)-, id_esame -smallint(6), ecc)
Ho una pagina prenotazioni.php in cui ci sono un form e tre select.
Una select che visualizza i reparti presenti nella tabella reparti. Una volta selezionato un reparto dalla tabella select, dovrebbero essere visualizzati tutti gli esami relativi a quel reparto e successivamente, selezionato l'esame dovrei visualizzare delle date relative a quell'esame.
Il mio problema è che il popolamento della select relativa ai reparti avviene, ma una volta selezionato il reparto non mi viene mostrato nessun esame (pur essendocene).
Premetto che sono una novizia di jquery e ajax e per questo nonostante i vari tentativi, non riesco a venire a capo.
Spero qualcuno di voi possa aiutarmi a capire dove sbaglio, vi posto la parte di codice relativa alla pagina prenota.php e alle varie classi che recuperano i dati per poi popolare le select.
La classe connection.php funziona e che crea una connessione con PDO.
Codice PHP:
include ($_SERVER['DOCUMENT_ROOT'] . '/php/connection.php');
class SelectList {
public $con;
public function __construct(Connection $con) {
$this->con = $con->getConn();
}
public function MostraReparti()
{
try{
$res = $this->con->query("SELECT * FROM reparti");
$reparti = '<option value="0">Effettua una scelta..</option>';
while($row = $res->fetch(PDO::FETCH_ASSOC))
{
$reparti .= '<option value="' . $row['id_reparto'] . '">' . utf8_encode($row['nome_reparto']) . '</option>';
}
return $reparti;
}catch (PDOException $e){
echo "Si è verificato un errore: ". $e->getMessage();
}
}
public function MostraEsami()
{
try{
$rep_esame = $_POST['id_reparto'];
$q_sql = "SELECT * FROM esami WHERE id_reparto=$rep_esame";
$stmt = $this->con->prepare($q_sql);
$s_res= $stmt->execute();
$esami = '<option value="0">Effettua una scelta..</option>';
while($row = $s_res->fetch())
{
$esami .= '<option value="' . $row['id_esame'] . '">' . utf8_encode($row['nome_esame']) . '</option>';
}
return $esami;
}catch(PDOException $e){
echo "Si è verificato un errore: ".$e->getMessage();
}
}
//funzione da rivedere poichè dovremmo trovare una data senza prenotazioni ad una determinata ora
public function Mostra()
{
$q_sql = "SELECT * FROM prenotazioni WHERE id_esame =?";
$q_sql = $this->con->prepare();
$q_sql->bindParam(1, $_POST[id_esame]);
$s_res = $q_sql->execute();
$prenotazione = '<option value="0">Effettua una scelta..</option>';
while($row = $s_res->fetch())
{
$prenotazione .= '<option value="' . $row['id_prenotazione'] . '">' . $row['data_prenotazione'] . '</option>';
}
return $prenotazione;
}
}
Codice PHP:
include_once ($_SERVER['DOCUMENT_ROOT'] . '/php/select_class.php');
$c = new Connection();
$opt = new SelectList($c);
if(isset($_POST['id_reparto']))
{
echo $opt->MostraEsami();
die;
}
if(isset($_POST['id_esame']))
{
echo $opt->Mostra();
die;
}