Foros del Web » Programando para Internet » PHP »

Formato de fecha

Estas en el tema de Formato de fecha en el foro de PHP en Foros del Web. Hola: Estoy preparando con la ayuda de Dreamweaver una página que contiene un formulario con diferentes campos dinámicos y un navegador del juego de registros. ...
  #1 (permalink)  
Antiguo 05/08/2004, 16:31
 
Fecha de Ingreso: julio-2004
Mensajes: 27
Antigüedad: 20 años, 4 meses
Puntos: 0
Formato de fecha

Hola:

Estoy preparando con la ayuda de Dreamweaver una página que contiene un formulario con diferentes campos dinámicos y un navegador del juego de registros.
Ya consigo que funcione todo correctamente, pero...

Uno de los campos dinámicos se refiere a la fecha.

Ésta la tengo almacenada como dato del tipo TIMESTAMP.

Cuando la recupero en mi página, que se llama "formulario2.php", con la instrucción:
Código:
<?php echo $row_Recordset2['fecha']; ?>consigo que aparezca la fecha, pero con su formato nativo AAAAMMDDHHMMSS, y resulta poco inteligible.

Lo que quiero es reformatear esa fecha para que se visualice como HH:MM:SS del día DD/MM/AAAA

El moderador BrujoNic, del foro de Bases de Datos me ha enseñado a formular una consulta SQL mediante PhpmyAdmin para conseguir mi objetivo.
El problema es que no adelanto nada si no sé donde tengo que escribir ese código. Yo pensaba que al formular una Consulta, esta podía quedar en la base de datos actuando como un filtro, y así al realizar la llamada desde el archivo "formulario2.php" que es el que manipulo con DW todo quedaría resuelto.
Pero ya veo que no.

Estoy desorientado, no sé si tengo que generar el código PHP de la consulta y pegarlo en mi "formulario2.php" o qué debo hacer.

Saludos.

Última edición por jmunoz36; 05/08/2004 a las 16:32
  #2 (permalink)  
Antiguo 05/08/2004, 17:57
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 23 años, 3 meses
Puntos: 9
existen varias formas, pero una forma mejor explicita para ver la hora y fecha dentro de la base de datos, es por medio de una consulta, hazlo como lo que te dijo BrujoNic, lo ví y está bien, acuerdate usar las funciones en mysql()
  #3 (permalink)  
Antiguo 05/08/2004, 20:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
En el foro de base de datos .. te comentaron que uses la función DATE_FORMAT()
(www.mysql.com/date_format)

$sql="SELECT DATE_FORMAT ('le das tu formato',fecha_campo) AS mi_fecha,* FROM tabla";

Y bajo el alias "mi_fecha" como nombre de campo tendrás tu fecha en el formato que definas para que lo accededas tipo:

$row['mi_fecha'] ...

Un saludo,

PD: .. usa campos DATETIME .. son más legibles si accedes a tu BD directametne con un administrador de BD .. Pero esa fecha es en "ingles" .. así que para darle el formato que gustes al hacer tus consultas usa la función de Mysql mencionada.
  #4 (permalink)  
Antiguo 06/08/2004, 09:25
 
Fecha de Ingreso: julio-2004
Mensajes: 27
Antigüedad: 20 años, 4 meses
Puntos: 0
Gracias por tu respuesta.

Ya consigo ver el resultado de la consulta en phpmyadmin con lo que me dijo BrujoNic.
El asunto es llevarlo a DW para que el documento final salga bien. Ahí es donde me atasco.

Gracias.
  #5 (permalink)  
Antiguo 06/08/2004, 09:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
jmunoz36 .. ya te comenté como tienes que hacer la consulta SQL y como obtenerla .. ¿lo probastes? (pon el código que usastes completo).

Un saludo,
  #6 (permalink)  
Antiguo 06/08/2004, 10:20
 
Fecha de Ingreso: julio-2004
Mensajes: 27
Antigüedad: 20 años, 4 meses
Puntos: 0
Perdona Cluster.

Mi post anterior estaba dirigido a lado2mx.

Estaba redactando otro para tí. Pero como simultáneamente estaba haciendo pruebas, me lo he cargado al cerrar la ventana.

Bueno. Si que lo he probado, pero sin éxito.

Me parece un poco abusón por mi parte enviarte el código entero, porque es un documento muy extenso.

Te incluyo la zona de inicio, donde aparece el código PHP que Dreamweaver me escribe para la conexión y la celda donde quiero poner la fecha.

Para no liar el asunto te lo pongo como lo tenía antes de estas pruebas, de forma que la fecha me sale en formato feo.

Código:
<?php require_once('../Connections/conex_form.php'); ?>
<?php
$currentPage = $HTTP_SERVER_VARS["PHP_SELF"];
$maxRows_Recordset2 = 1;
$pageNum_Recordset2 = 0;
if (isset($HTTP_GET_VARS['pageNum_Recordset2'])) {
  $pageNum_Recordset2 = $HTTP_GET_VARS['pageNum_Recordset2'];
}
$startRow_Recordset2 = $pageNum_Recordset2 * $maxRows_Recordset2;

mysql_select_db($database_conex_form, $conex_form);
$query_Recordset2 = "SELECT * FROM inscripciones";
$query_limit_Recordset2 = sprintf("%s LIMIT %d, %d", $query_Recordset2, $startRow_Recordset2, $maxRows_Recordset2);
$Recordset2 = mysql_query($query_limit_Recordset2, $conex_form) or die(mysql_error());
$row_Recordset2 = mysql_fetch_assoc($Recordset2);

if (isset($HTTP_GET_VARS['totalRows_Recordset2'])) {
  $totalRows_Recordset2 = $HTTP_GET_VARS['totalRows_Recordset2'];
} else {
  $all_Recordset2 = mysql_query($query_Recordset2);
  $totalRows_Recordset2 = mysql_num_rows($all_Recordset2);
}
$totalPages_Recordset2 = ceil($totalRows_Recordset2/$maxRows_Recordset2)-1;


$queryString_Recordset2 = "";
if (!empty($HTTP_SERVER_VARS['QUERY_STRING'])) {
  $params = explode("&", $HTTP_SERVER_VARS['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_Recordset2") == false && 
        stristr($param, "totalRows_Recordset2") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_Recordset2 = "&" . implode("&", $newParams);
  }
}
$queryString_Recordset2 = sprintf("&totalRows_Recordset2=%d%s", $totalRows_Recordset2, $queryString_Recordset2);
?>
Y luego en una celda de tabla hago la llamada mediante un campo dinámico:

Código:
<td width="36%"><legend class="TITCAMPO">Fecha Entrada:</legend>
          <div align="center"><font color="#000000" size="3"><strong> <?php echo $row_Recordset2['fecha']; ?></strong></font></div></td>
    </tr>

Un saludo.

Jesús.
  #7 (permalink)  
Antiguo 06/08/2004, 10:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
En tu consulta SQL:
$query_Recordset2 = "SELECT * FROM inscripciones";

No veo donde aplicas DATE_FORMAT() (función de Mysql) ... (te dejé un ejemplo .. fijate bien, pero tienes que ver tu mismo en la documentación oficial de Mysql que formato es el que vas a usar y definirlo según define su sintax de uso. Así te familiarizas con Mysql y su SQL particular que debes conocer igual que ya estás biendo algo de PHP .. )

Consejo .. NO uses los asistentes de código de Dreamweaver, aprende mejor hacerlo por ti mismo y saber lo que estás haciendo. Si no estás familiarizado con PHP . mejor no uses sprintf() usa echo simples y concatenación simple .. verás más claro el código que estás haciendo. Además es más optimo .. sprintf() usa expresiones regulares para una taréa que se puede resolver concatenando simplemente:

Te recomiendo la lectura de:
http://www.php.net/manual/es/language.types.string.php
http://www.php.net/manual/es/languag...ors.string.php

(Y olvidar que usas "Dreamweaver" para escribir código PHP .. eso es lo de menos, lo que manda es el código que te generó este con sus "asistentes" o bien el que puedas hacer tu manualmente. Recuerda también que trabajas con PHP y con SQL como lenguajes própios que debes conocer ambos o saber que no tienen nada que ver uno con otro)

Un saludo,
  #8 (permalink)  
Antiguo 06/08/2004, 11:40
 
Fecha de Ingreso: julio-2004
Mensajes: 27
Antigüedad: 20 años, 4 meses
Puntos: 0
Bueno.
Tienes toda la razón en cuanto que pretendemos hacer las cosas sin tener ni idea y sin querer leernos los manuales. También la tendrás en cuanto a que es mejor aprender la base y olvidarse de asistentes, pero claro, cuando no sabes, pues si que ayudan.

En cuanto al código que pegué antes ya te advertía de que era el previo a las pruebas. El punto de partida, para que te hicieras idea de lo que llevaba hecho.

Esta es una de las pruebas que he hecho.
He definido un juego de registros nuevo para utilizarlo solo con ese campo y no liar más.
Este es el código que he escrito, pero me da error sintáctico:
Código:
mysql_select_db($database_conex_form, $conex_form);
$query_Recordset3 = "SELECT DATE_FORMAT ('%T horas de %e - %m - %y',fecha),* FROM inscripciones";
$Recordset3 = mysql_query($query_Recordset3, $conex_form) or die(mysql_error());
$row_Recordset3 = mysql_fetch_assoc($Recordset3);
$totalRows_Recordset3 = mysql_num_rows($Recordset3);
He hecho muchas más pruebas pero no me sale nada.

Saludso
  #9 (permalink)  
Antiguo 06/08/2004, 12:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Te faltó el alias (AS) como para poderte referenciar a esa función que has aplicado a tu campo "fecha" de forma cómoda.

Código PHP:
$query_Recordset3 "SELECT DATE_FORMAT ('%T horas de %e - %m - %y',fecha) AS mi_fecha,* FROM inscripciones";

$resultado=msyql_query($query_Recordset3);

if (
mysql_num_rows($resultado) > 0){
    while(
$row mysql_fetch_array($resultado)){
       echo 
"Fecha en BD: ".$row['fecha']." Fecha formateada ".$row['mi_fecha']."<br>";
    }
} else {
   echo 
"No hay resultados";

OJO, usé mysql_fetch_array() para poder referenciarme a los nombres de los campos de la tabla .. y no por su indice numerico.

Un saludo,

Última edición por Cluster; 06/08/2004 a las 12:24
  #10 (permalink)  
Antiguo 07/08/2004, 08:54
 
Fecha de Ingreso: julio-2004
Mensajes: 27
Antigüedad: 20 años, 4 meses
Puntos: 0
Jo!

¡Qué latazo te estoy dando!

Sigue sin salirme bien.

Me sale este mensaje de error

"Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in"

Y allí lo que hay es esta línea del código que me has indicado:

Código:
if (mysql_num_rows($resultado) > 0){
Siento ser tan torpe.

Saludos.
  #11 (permalink)  
Antiguo 08/08/2004, 02:32
 
Fecha de Ingreso: julio-2004
Mensajes: 27
Antigüedad: 20 años, 4 meses
Puntos: 0
Reflexión añadida

¿No se necesitaría como paso previo a la función de cambiar el formato, una función de inclusión?
Observo como no hay problema cuando procedemos con
Código:
$query_Recordset3= "SELECT * FROM inscripciones";
Y a esto es a lo que llamo función de inclusión.
¿No es necesario realizar "doble" consulta, una para seleccionar los registros y luego otra para dar el formato?
El mensaje de error apuntado, me parece que indica que la variable $resultado no obtiene ningún valor. Y pienso si esto es así porque en la línea previa, donde se realiza la consulta, no se obtiene nada.

Si esto fuera así, como yo lo estoy pensando, -que seguro que no- ¿cómo habría de proceder para concatenar las consultas?

Estuve leyendo los link que me diste. Está todo bien explicado pero es un mundo muy amplio, es para ponerse con ello a fondo y desde la base. Aunque ves que no es sánscrito no es fácil extrapolar conocimientos ni ver las repercusiones y alcance que tiene.
En resumen es para quien se vaya a dedicar a ello, no para aficionadillos esporádicos como yo.
Saludos.

Última edición por jmunoz36; 08/08/2004 a las 02:39
  #12 (permalink)  
Antiguo 09/08/2004, 10:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
¿No es necesario realizar "doble" consulta, una para seleccionar los registros y luego otra para dar el formato?
No, .. por qué para eso están las funciones dentro del "SQL" .. Cuando tu aplicas una función (como puede ser DATE_FORMAT() ) generas una nueva "columna" de resultados .. que, para accederla más cómodamente le ponemos nombre con "AS" como en mi ejemplo anterior.

---------

Volviendo a tu problema ... Si lo que quieres es hacer una consulta a tu BD (tabla) .. obtener los resultados (incluido el cambio de formato de tu fecha por ejemplo ... de uno de esos campos) y .. "paginar" (que es lo que parece que está haciendo "dreamweaver". Te recomiendo hacerlo por ti mismo con ejemplos más simples y claros. Cuando eso lo tengas claro, pasas a la fase "2": Paginado .. ahí se te podrá recomendar algún sistmea igualmente simple para tal fin y seguro que acabas entendiendo lo que hicistes. Por qué .. realmente veo que "dreamweaver" con sus asistentes (si los usuastes) o el código que estás usando realmente es "complicado" de entender para el que no está acostumbrado al tema.

Un saludo,
  #13 (permalink)  
Antiguo 10/08/2004, 09:36
 
Fecha de Ingreso: julio-2004
Mensajes: 27
Antigüedad: 20 años, 4 meses
Puntos: 0
Gracias Cluster por todo tu empeño.

Intentaré seguir tu recomendación.

Muchos 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 21:21.