hola utopiko, bueno justamente a eso me refería que la fecha tenía que estar en el formato que está guardado en la base de datos y mysql guarda las fechas en los campos de tipo date en el formato YYYY-MM-DD o sea en php sería como vos dijiste Y-m-d.
sabés después de mucha práctica con php como solucioné yo este problema? usando listas desplegables, o sea en el formulario no uso un campo de texto, uso 3 listas desplegables, una del 1 al 31 para los días, otra del 1 al 12 para los meses y otra la armo partiendo del año actual, si el usuario puede ingresar fechas anteriores al año actual entonces empiezo el cálculo los años anteriores que corresponda y sinó empiezo en el año actual y muestro todos los años que quiera. en caso que quiera mostrar solamente el año actual lo meto en un campo oculto.
bueno y después de que envío el form armo la fecha en el formato que quiero por ejemplo:
Código PHP:
<? $esteanio = date("Y");
$cincomas = $esteanio + 5; ?>
<form action="mipagina.php" method="post">
Día: <select name="dia" size="1">
<? for ($i = 1; $i <= 31; $i++) echo '<option value="'.$i.'">'.$i.'</option>';?>
</select>
Mes: <select name="mes" size="1">
<? for ($i = 1; $i <= 12; $i++) echo '<option value="'.$i.'">'.$i.'</option>';?>
</select>
Año: <select name="anio" size="1">
<? for ($i = $esteanio; $i <= $cincomas; $i++) echo '<option value="'.$i.'">'.$i.'</option>';?>
</select><input type="submit">
</form>
y en el archivo mipagina.php pongo lo siguiente:
Código PHP:
<? if (isset($dia) && isset($mes) && isset($anio)) {
$lafecha = date("Y-m-d", strtotime("$anio-$mes-$dia"));
echo $lafecha;
} ?>
en este caso simplemente estoy mostrando el valor de la variable $lafecha pero evidentemente una vez que tenés ese valor en la variable podés usarla para lo que quieras :)
espero que te sirva, bye