Foros del Web » Programando para Internet » PHP »

Mostrar segun Fecha

Estas en el tema de Mostrar segun Fecha en el foro de PHP en Foros del Web. Hola, a ver si alguien me puede echar una mano, quiero mostrar los datos de una tabla pero teniendo en cuenta la fecha, por ejemplo: ...
  #1 (permalink)  
Antiguo 03/01/2004, 16:30
 
Fecha de Ingreso: octubre-2003
Mensajes: 46
Antigüedad: 14 años, 1 mes
Puntos: 0
Mostrar segun Fecha

Hola, a ver si alguien me puede echar una mano, quiero mostrar los datos de una tabla pero teniendo en cuenta la fecha, por ejemplo: durante toda la semana quiero que se muestre en la web un acto que pasara el próximo domingo y cuando pase este domingo, quiero que se muestre otro acto que pasara el domingo siguiente, ¿me explico?
En la tabla creare diferentes registros: Titulo, Fecha que se celebra el acto, mensaje. ¿Como lo podría plantear en PHP?.
Saludos.
  #2 (permalink)  
Antiguo 03/01/2004, 22:49
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Date una vuelta por el manual de mysql y sus funciones de DATE y TIME
http://www.mysql.com/doc/en/Date_and...functions.html

Saludos
  #3 (permalink)  
Antiguo 07/01/2004, 13:51
 
Fecha de Ingreso: octubre-2003
Mensajes: 46
Antigüedad: 14 años, 1 mes
Puntos: 0
Uf, gracias, pero la verdad es que todo y que llevo ya más de un mes con esto del PHP, hay cosas que todavía se me hacen muy difíciles de entender, ¿No hay algún tutorial donde hagan algo parecido a lo que quiero hacer donde pueda ver el código que usan?

Saludos.
  #4 (permalink)  
Antiguo 07/01/2004, 13:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Sólo date cuenta que estás usando "base de datos" ..así que otra cosa más que aprender aparte de PHP que es lo que usas para interactuar con esa BD es .. "SQL" (lenguaje estructurado de consultas) que es lo que empleas para "pedir" los datos que quieras de tus tablas bajo las condiciones que definas (ejemplo en tu caso un rango de fechas o similar).

Tienes buenos tutoriales e información sobre Mysql en:
www.mysql-hispano.com

Y también en las FAQ's del foro de "Base de datos". Primero debes tener clara la sentencia SQL a emplear .. luego ya vendrá la parte PHP de como "ejecutarla" o "leer" su resultado.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 07/01/2004, 19:11
 
Fecha de Ingreso: octubre-2003
Mensajes: 46
Antigüedad: 14 años, 1 mes
Puntos: 0
Entrar los datos en la BD crear las tablas y rellenar las columnas ya se más o menos como se hace, la fecha del evento la pondría en un campo de tipo DATE, ejemp: 2004-01-15
Esta fecha siempre caerá en domingo y lo que quiero es que cuando pase dicho domingo, se muestre el domingo siguiente, durante toda la semana, y así sucesivamente.

¿La consulta tendría que ser algo así? SELECT * FROM eventos WHERE fecha >= "NOW()";

¿Esto me seleccionara siempre la fecha siguiente mayor a la actual? ¿O me seleccionara todas las fechas que sean mayores a la actual? ¿O es imposible que con esto salga nada?

Saludos y gracias.

¿O seria mejor utilizar date()?
Código PHP:

$fecha
date"Y m d"); 

$sql=" SELECT * FROM eventos WHERE fecha >= '$fecha' ";
$consulta=mysql_query($sql) or die (mysql_error()); 

Última edición por Yukas; 07/01/2004 a las 19:40
  #6 (permalink)  
Antiguo 08/01/2004, 11:26
 
Fecha de Ingreso: octubre-2003
Mensajes: 46
Antigüedad: 14 años, 1 mes
Puntos: 0
No funciona, me selecciona todas las fechas, las más pequeñas y las más grandes, y en teoría solo me tendría que seleccionar una fecha más grande de la que le digo. En este caso la 2004-01-18
Código PHP:
mysqlselect fechatitol from eventos where fecha 2004-01-11;
+------------+---------------------+
|       
fecha     |        titol            |
+------------+---------------------+
2004-01-04 |  Prova 01          |
2004-01-11 |  Prova 02          |
2004-01-18 |  Prova 03          |
2004-01-25 |  Prova 04          |
+------------+---------------------+ 
El campo fecha es de tipo DATE

Saludos.
  #7 (permalink)  
Antiguo 08/01/2004, 19:02
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Para hacer consultas a la Bd es mejor utilizar las funciones propias de mysql...

Si tu campo es de tipo DATE, no utilices NOW(), sino CURDATE()... O sea que el ejemplo que pusiste antes, debe funcionar bien:
Código PHP:
$sql="SELECT * FROM eventos WHERE fecha >= CURDATE()"
Si lo que quieres es sólo el registro con fecha siguiente, mejor te aseguras y los ordenas por fecha ascendente. O sea que quedaría así:
Código PHP:
$sql="SELECT * FROM eventos WHERE fecha >= CURDATE() ORDER BY fecha ASC"
Saludos

Última edición por jpinedo; 08/01/2004 a las 23:57
  #8 (permalink)  
Antiguo 08/01/2004, 19:03
 
Fecha de Ingreso: octubre-2003
Mensajes: 46
Antigüedad: 14 años, 1 mes
Puntos: 0
Bueno, faltaban las comillas ‘2003-01-11’ pero me sigue seleccionando más de una fecha después de la que le digo. Sigo probando a ver si sale.

Código PHP:
mysqlselect dia from sortides where dia '2004-01-11'
+------------+
dia        |
+------------+
2004-01-18 |
2004-01-25 |
+------------+
2 rows in set (0.00 sec
Saludos.
  #9 (permalink)  
Antiguo 08/01/2004, 20:07
 
Fecha de Ingreso: octubre-2003
Mensajes: 46
Antigüedad: 14 años, 1 mes
Puntos: 0
Muchas gracias jpinedo, mañana pruebo lo que me dices.

Saludos.
  #10 (permalink)  
Antiguo 08/01/2004, 23:59
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Ok... posteas qué tal te fue...

Otra cosa: Los mensajes repetidos puedes borrarlos tú mismo entrando en la opción editar que está en la parte inferior derecha de cada uno. Ahí te dan la chance de borrarlo.

Saludos
  #11 (permalink)  
Antiguo 09/01/2004, 12:27
 
Fecha de Ingreso: octubre-2003
Mensajes: 46
Antigüedad: 14 años, 1 mes
Puntos: 0
Muchas gracias tiuu! Funciona perfecto, pongo el código:

Código PHP:
<?php
$dbhost 
"XXX";
$dbuser "XXX"
$dbpass "XXX";
$db "XXX";
$theme "XXX.htm";

$conectar mysql_connect($dbhost,$dbuser,$dbpass); 
mysql_select_db($db,$conectar);

$sql="select*from sortides where dia >= CURDATE() ORDER BY dia ASC";
$res=mysql_query($sql) or die (mysql_error());
$res2=mysql_fetch_array($res);
$titol$res2 ["titol"];
$data$res2 ["data"];
$text$res2 ["text"];
$anada$res2 ["anada"];
$tornada$res2 ["tornada"];
$km$res2 ["km"];

// Tabla
$tabla fread(fopen($theme'r'), filesize($theme));

$tabla eregi_replace("{titol}""$titol"$tabla);
$tabla eregi_replace("{data}""$data"$tabla);
$tabla eregi_replace("{text}""$text"$tabla);
$tabla eregi_replace("{anada}""$anada"$tabla);
$tabla eregi_replace("{tornada}""$tornada"$tabla);
$tabla eregi_replace("{km}""$km"$tabla);

echo
"$tabla";
mysql_close();
?>
Si ahora quisiera mostrar en una pagina todos los eventos sin limitar por fecha: sin el >=CURDATE()…, pero que todos se me muestren dentro de la tabla, como lo ago ¿con un while?
  #12 (permalink)  
Antiguo 09/01/2004, 13:46
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Así es. Cuando una consulta te devuelve más de un registro y quieres trabajar con todos (por ejemplo para mostrarlos en pantalla), puedes utilizar un bucle como while...

Por ejemplo si quieres mostrarlos ordenados en una tabla:
Código PHP:
echo "<table>\n\n
          <tr>\n
          <td>titol</td>\n
          <td>data</td>\n
          <td>text</td>\n
          <td>anada</td>\n
          <td>tornada</td>\n
          <td>km</td>\n
          </tr>\n\n"
;

$sql="select*from sortides where dia >= CURDATE() ORDER BY dia ASC";
$res=mysql_query($sql) or die (mysql_error());

while(
$res2=mysql_fetch_array($res)){//mientras hayan registros en esta consulta...
    
echo "<tr>\n
              <td>"
.$res2 ["titol"]." </td>\n
              <td>"
.$res2 ["data"]."</td>\n
              <td>"
.$res2 ["text"]." </td>\n
              <td>"
.$res2 ["anada"]."</td>\n
              <td>"
.$res2 ["tornada"]."</td>\n
              <td>"
.$res2 ["km"]."</td>\n
              </tr>\n\n"
;
}
echo 
"</table>"
Saludos
  #13 (permalink)  
Antiguo 09/01/2004, 14:14
 
Fecha de Ingreso: octubre-2003
Mensajes: 46
Antigüedad: 14 años, 1 mes
Puntos: 0
Ok’s, muchas gracias, me ha funcionado perfecto.
Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:34.