con AJAX seria algo como
Código HTML:
<script language="javascript" type="text/javascript">
function getXMLHTTP() {
var xmlhttp=false;
try{
xmlhttp=new XMLHttpRequest();
}
catch(e) {
try{
xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e1){
xmlhttp=false;
}
}
}
return xmlhttp;
}
function getAsignatura(nomCurso) {
var strURL="buscarAsignatura.php?curso="+nomCurso;
var req = getXMLHTTP();
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
if (req.status == 200) {
document.getElementById('asigDiv').innerHTML=req.responseText;
} else {
alert("Ocurrio un problema con XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}
}
</script>
y el codigo de buscarAsignatura.php seria
Código PHP:
<?php
$curso = isset($_GET['curso'])? $_GET['curso'] :'';
$link = mysql_connect('servidor', 'user', 'password');
if (!$link) {
die('No se pudo conectar: ' . mysql_error());
}
//selecionamos BD
mysql_select_db('databse') or die ('No se pudo selecionar la Base de Datos');
//tambien podria ser un required a tu conexion.php
$query="SELECT asignatura FROM asignaturas WHERE curso='".mysql_real_escape_string($curso)."'";
$result=mysql_query($query);
if(mysql_num_rows($result) >0){
echo '<select>'."\n";
while($row=mysql_fetch_array($result)) {
echo '<option>'.$row['asignatura'].'</option>'."\n";
}
echo '</select>'."\n";
}else{
echo 'No hay valores en la base de datos';
}
?>
Y el codigo HTML seria algo como
Código HTML:
<select name="curso" onChange="getAsignatura(this.value)">
<option>Selecciona el curso</option>
<?php while($row=mysql_fetch_array($result)) { ?>
<option value="informatica">Informatica</option>
<option value="derecho">Derecho</option>
</select>
Tambien en los values podrias poner un ID hacerlo por ids, ya en la validacion de buscarAsignatura.php podrias validar con is_numeric o is_int o int