Que jaleo de código.
No soy amante de usar millones de if()
Esto te serviría para mostrar los meses que coinciden con respecto a tu tabla.
Si no me equivoco es lo que NO quieres. Pero así aprendes a reducir código y después te pongo lo que necesitas.
Código PHP:
<?php
$meses = array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio", "Agosto","Septiembre","Octubre","Noviembre","Diciembre");
$consulta_mes = "SELECT mes FROM expedientes";
$sql_mes = mysql_query($consulta_mes);
// Mostrar los mismos meses
while ($row_mes = mysql_fetch_assoc($sql_mes))
{
$mes=$meses[$row_mes['mes']-1];
echo'<option value="'.$mes.'">'.$mes.'</option>';
}
?>
Supongo que esto es lo que pides, mostrar los meses que no sean los que están en la base de datos.
Código PHP:
<?php
$selec = array();
$meses = array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio", "Agosto","Septiembre","Octubre","Noviembre","Diciembre");
$consulta_mes = "SELECT mes FROM expedientes";
$sql_mes = mysql_query($consulta_mes);
//Mostrar los meses que no están
while ($row_mes = mysql_fetch_assoc($sql_mes))
$selec[]=$meses[$row_mes['mes']-1];
$mes = array_diff($meses, $selec);
foreach ($mes as $i => $value)
echo'<option value="'.$mes[$i].'">'.$mes[$i].'</option>';
?>
No sé, pero yo prefiero usar arrays y sus correspondientes funciones para acortar el código y que sea más legible aparte de más corto.
En cualquier caso tu fallo era de planteamiento.
Y dejo esto aquí por si no entiendes la función.
http://www.php.net/manual/es/ref.array.php
Un saludo.