Sobre fechas
Tus ayudas son de muchísima utilidad para mi.
Son muchos los pequeños detalles que no se encuentran en la Web.
Quiero saber si seria mejor determinar la fecha por "Fecha exacta". Porque quiero hacer lo siguiente:
- Que haya la opción de insertar actividades FIJAS (se repiten siempre en el mismo día)
- Que haya la opción de insertar actividades No FIJAS (tras su realización, dejan de mostrarse).
¿Me podrías indicar como crees que seria mejor pedir / recibir el dato de la fecha? (La cosa es ponérselo fácil a los usuarios).
Gracias de nuevo!
Son muchos los pequeños detalles que no se encuentran en la Web.
Quiero saber si seria mejor determinar la fecha por "Fecha exacta". Porque quiero hacer lo siguiente:
- Que haya la opción de insertar actividades FIJAS (se repiten siempre en el mismo día)
- Que haya la opción de insertar actividades No FIJAS (tras su realización, dejan de mostrarse).
¿Me podrías indicar como crees que seria mejor pedir / recibir el dato de la fecha? (La cosa es ponérselo fácil a los usuarios).
Gracias de nuevo!
1 respuesta
Respuesta de davidcortesb
1
1
Yo creo que todas las actvidades tienen un origen, así que debieran tener una fecha de inicio. Entonces podrías preguntar al usuario por la periodicidad del evento: Una sola vez, cada día, semanal, mensual... depende de los casos que se vayan a dar.
Y fecha de finalización puede existir si se sabe (No fijas), aunque supongo que también puede ser que no esté todavía definido (fijas).
Y fecha de finalización puede existir si se sabe (No fijas), aunque supongo que también puede ser que no esté todavía definido (fijas).
Y sabrías alguna forma de que el PHP compruebe:
- Si ya ha pasado la fecha de la actividad (para borrarla)
- Si es todas las semanas (para seguir mostrándola)
A lo que me refiero es una actualización automática refiriéndose a la fecha actual. No se si es compatible con el método usado para obtener la fecha del evento (Dia= Lunes, Martes...)
- Si ya ha pasado la fecha de la actividad (para borrarla)
- Si es todas las semanas (para seguir mostrándola)
A lo que me refiero es una actualización automática refiriéndose a la fecha actual. No se si es compatible con el método usado para obtener la fecha del evento (Dia= Lunes, Martes...)
Eso lo consigues simplemente en tu consulta SQL:
"SELECT * FROM tutabla WHERE fechainicio <= '$fechahoy' and (fechafinal >='$fechahoy' OR fechafinal = '0000-00-00')"
Se supone que las fijas tendrán fecha final vacía, y el resto deben estar entre las fechas inicial y final.
"SELECT * FROM tutabla WHERE fechainicio <= '$fechahoy' and (fechafinal >='$fechahoy' OR fechafinal = '0000-00-00')"
Se supone que las fijas tendrán fecha final vacía, y el resto deben estar entre las fechas inicial y final.
Pero para ello, ¿Cómo debo insertar las fechas de inicio y fin?
Me refiero a que tipo de campo en la tabla.
Yo lo hacia de manera simple:
- Día (un combo te da la opción de Lunes, Martes...)
- Hora (2 combos, 1 daba la opción de hora y otro minutos)
Pero nada de esto puede compararse con fechas.
¿Cómo lo debo hacer?
Gracias y saludos
Me refiero a que tipo de campo en la tabla.
Yo lo hacia de manera simple:
- Día (un combo te da la opción de Lunes, Martes...)
- Hora (2 combos, 1 daba la opción de hora y otro minutos)
Pero nada de esto puede compararse con fechas.
¿Cómo lo debo hacer?
Gracias y saludos
Creo que el día de inicio y de final de una actividad debería tener una fecha 'normal', es decir, las clases de judo serán todos los Martes A PARTIR del 10 de Setiembre de 2008 hasta nueva orden (sin fin = 00-00-0000 ) o hasta el 22 de Julio de 2009.
Para un evento no periódico, puede ser: las clases de Macramé serán del Martes, 14 de Octubre hasta el Jueves, 16 de Octubre. O la excursión será sólo el día 3 de Diciembre de 2008 (empieza y acaba el mismo día).
Vaya que creo que las actividades también debieran tener un inicio y un posible final (nada es eterno). Pero eso depende de lo que estés programando.
Si pones sólo el día de la semana, también puede ser válido, pero entonces estás asumiendo que todas las actividades empiezan en cuanto se dan de alta y no terminan nunca hasta que se borran. Y no sé si será tu caso.
Para un evento no periódico, puede ser: las clases de Macramé serán del Martes, 14 de Octubre hasta el Jueves, 16 de Octubre. O la excursión será sólo el día 3 de Diciembre de 2008 (empieza y acaba el mismo día).
Vaya que creo que las actividades también debieran tener un inicio y un posible final (nada es eterno). Pero eso depende de lo que estés programando.
Si pones sólo el día de la semana, también puede ser válido, pero entonces estás asumiendo que todas las actividades empiezan en cuanto se dan de alta y no terminan nunca hasta que se borran. Y no sé si será tu caso.
En mi caso, lo iba a hacer de la siguiente manera:
Tabla (id, evento, dia[lunes, martes...], horaInicio [solo hora], minInicio[minuto de inicio], horaFin,minFin, otrosDetalles)
Ahora, con lo que me comentas, no entiendo como puedo compara la fecha de hoy con mis variables (mis variables son solo números! No se refieren a fecha).
¿Qué tipo de variables debería de usar en MySql para recibir los datos de día, fecha y hora?
Espero que se entienda ahora.
Gracias y disculpa las molestias
Tabla (id, evento, dia[lunes, martes...], horaInicio [solo hora], minInicio[minuto de inicio], horaFin,minFin, otrosDetalles)
Ahora, con lo que me comentas, no entiendo como puedo compara la fecha de hoy con mis variables (mis variables son solo números! No se refieren a fecha).
¿Qué tipo de variables debería de usar en MySql para recibir los datos de día, fecha y hora?
Espero que se entienda ahora.
Gracias y disculpa las molestias
Que el usuario entre la hora y los minutos por separado no significa que los tengas que almacenar así en la base de datos. Lo normal es que tengas un campo horaInicio que sea dle tipo TIME y que contendrá tanto la hora como los minutos. Lo mismo con horaFin.
Por otro lado, no me habré explicado bien, creo que debieras añadir un campo fechaInicio y otro fechaFinal para anotar entre qué fechas son validas o están vigentes las actividades. Son estas las que comparas con el día de hoy para ver si esán vigentes. Si es que es ese el problema.
En cuanto al día de la semana, aunque el usuario lo vea como Lunes, Martes, etc. te recomiendo que lo guardes como un número 1, 2, etc. que es más sencillo de comparar. Concretamente la función date("N") te devuelve 1 si hoy es Lunes y 7 si es Domingo.
Por otro lado, no me habré explicado bien, creo que debieras añadir un campo fechaInicio y otro fechaFinal para anotar entre qué fechas son validas o están vigentes las actividades. Son estas las que comparas con el día de hoy para ver si esán vigentes. Si es que es ese el problema.
En cuanto al día de la semana, aunque el usuario lo vea como Lunes, Martes, etc. te recomiendo que lo guardes como un número 1, 2, etc. que es más sencillo de comparar. Concretamente la función date("N") te devuelve 1 si hoy es Lunes y 7 si es Domingo.
Digamos que pido al usuario que introduzca:
- Hora Inicio
- Minuto Inicio
- Hora Final
- Minuto Final
¿Cómo recojo en la bbdd esos datos de manera que se almacenen como 00:00? Se que tiene que ser del tipo Time, pero no comprendo como juntar los minutos y las horas y recibirlos en la bbdd.
Por otro lado, mi idea es colocar las actividades por semana. Es decir:
Si es lunes, se verán las actividades hasta el siguiente lunes. Pero si es miércoles, se verán las actividades hata el siguiente miércoles.
¿Cómo hago esas comparaciones de fecha en PHP? No tengo idea de como se haría.
Gracias!
- Hora Inicio
- Minuto Inicio
- Hora Final
- Minuto Final
¿Cómo recojo en la bbdd esos datos de manera que se almacenen como 00:00? Se que tiene que ser del tipo Time, pero no comprendo como juntar los minutos y las horas y recibirlos en la bbdd.
Por otro lado, mi idea es colocar las actividades por semana. Es decir:
Si es lunes, se verán las actividades hasta el siguiente lunes. Pero si es miércoles, se verán las actividades hata el siguiente miércoles.
¿Cómo hago esas comparaciones de fecha en PHP? No tengo idea de como se haría.
Gracias!
Veo que tienes un vacío importante en cuanto a fechas y tratamiento de cadenas. Te recomiendo que veas la ayuda de PHP al respecto:
http://es2.php.net/manual/es/function.date.php
http://es2.php.net/manual/es/function.substr.php
'Juntar los minutos y las horas' es tan sencillo como concatenar las cadenas en el formato adecuado:
$sql = "INSERT INTO tutabla SET HoraInicial='$_POST[hora]:$_POST[minutos]:00'";
Y usar funciones de tratamiento de cadenas para extraerlo:
$hora = substr($HoraIni, 0, 2);
$mins = substr($HoraFin, 3, 2);
http://es2.php.net/manual/es/function.date.php
http://es2.php.net/manual/es/function.substr.php
'Juntar los minutos y las horas' es tan sencillo como concatenar las cadenas en el formato adecuado:
$sql = "INSERT INTO tutabla SET HoraInicial='$_POST[hora]:$_POST[minutos]:00'";
Y usar funciones de tratamiento de cadenas para extraerlo:
$hora = substr($HoraIni, 0, 2);
$mins = substr($HoraFin, 3, 2);
Hola,
He hecho el código, pero no me inserta los minutos ni las fechas. En la fecha me deja 00-00-00 y en la hora solo me inserta la hora.
¿Puedes echarle un ojo? Gracias
$result = mysql_query("INSERT INTO horarios (dia, horaComienzo, horaFin, fecha, grupo, actividad, detalles) VALUES('$_POST[dia]', '$_POST[horaComienzo]:$_POST[minComienzo]:00', '$_POST[horaFin]:$_POST[minFin]:00', '$_POST[year]-$_POST[month]-$_POST[day]', '$_POST[grupo]', '$_POST[actividad])', '$_POST[detalles]')");
He hecho el código, pero no me inserta los minutos ni las fechas. En la fecha me deja 00-00-00 y en la hora solo me inserta la hora.
¿Puedes echarle un ojo? Gracias
$result = mysql_query("INSERT INTO horarios (dia, horaComienzo, horaFin, fecha, grupo, actividad, detalles) VALUES('$_POST[dia]', '$_POST[horaComienzo]:$_POST[minComienzo]:00', '$_POST[horaFin]:$_POST[minFin]:00', '$_POST[year]-$_POST[month]-$_POST[day]', '$_POST[grupo]', '$_POST[actividad])', '$_POST[detalles]')");
Si la fecha son ceros, es que has introducido una fecha no válida. En SQL el formato correcto son 4 dígitos para el año, un guión, 2 dígitos para el mes, un guión, dos dígitos para el día (correcto: 2008-06-02 incorrecto: 2008-6-2). También sería inválido el 30 de Febrero aunque estuviera bien escrito.
Para las horas, el formato correcto es 2 dígitos para las horas, dos puntos, 2 dígitos para los minutos, dos puntos, 2 dígitos para los segundos (correcto: 05:06:02, incorrecto: 5:6:2).
Para las horas, el formato correcto es 2 dígitos para las horas, dos puntos, 2 dígitos para los minutos, dos puntos, 2 dígitos para los segundos (correcto: 05:06:02, incorrecto: 5:6:2).
Hola, estoy un poco desesperado porque no me terminan de entrar ni las horas ni la fecha.
Este es el código:
$result = mysql_query("INSERT INTO horarios (dia, horaComienzo, horaFin, fecha, grupo, actividad, detalles) VALUES('$_POST[dia]', '$_POST[horaComienzo]:$_POST[minComienzo]:00', '$_POST[horaFin]:$_POST[minFin]:00', '$_POST[year]-$_POST[month]-$_POST[day]', '$_POST[grupo]', '$_POST[actividad])', '$_POST[detalles]')");
Las horas si entran. Los minutos y la fecha se quedan en 00... He comprobado todo.
Este es el formulario de minutos (por ejemplo):
<select name="minComienzo" id="minComienzo">
<option name="00">00</option>
<option name="05">05</option>
<option name="10">10</option>
<option name="15">15</option>
<option name="20">20</option>
<option name="25">25</option>
<option name="30">30</option>
<option name="35">35</option>
<option name="40">40</option>
<option name="45">45</option>
<option name="50">50</option>
<option name="55">55</option>
</select>
Este es el código:
$result = mysql_query("INSERT INTO horarios (dia, horaComienzo, horaFin, fecha, grupo, actividad, detalles) VALUES('$_POST[dia]', '$_POST[horaComienzo]:$_POST[minComienzo]:00', '$_POST[horaFin]:$_POST[minFin]:00', '$_POST[year]-$_POST[month]-$_POST[day]', '$_POST[grupo]', '$_POST[actividad])', '$_POST[detalles]')");
Las horas si entran. Los minutos y la fecha se quedan en 00... He comprobado todo.
Este es el formulario de minutos (por ejemplo):
<select name="minComienzo" id="minComienzo">
<option name="00">00</option>
<option name="05">05</option>
<option name="10">10</option>
<option name="15">15</option>
<option name="20">20</option>
<option name="25">25</option>
<option name="30">30</option>
<option name="35">35</option>
<option name="40">40</option>
<option name="45">45</option>
<option name="50">50</option>
<option name="55">55</option>
</select>
- Compartir respuesta
- Anónimo
ahora mismo