Comunidad de diseño web y desarrollo en internet online

Mostrar fecha guardada en formato YYYY-MM-DD en formato DD-MM-AAAA

Citar            
MensajeEscrito el 14 Ene 2013 06:14 pm
Muy buenas,

A ver si me podeis ayudar. Tengo una base de datos con una tabla "noticias" que tiene un campo llamado "fecha" cuyos datos se almacenan en formato americano YYYY-MM-DD

Necesito mostrar esos datos en formato DD-MM-AAAA en la página web que ve el usuario.

Como puedo conseguir esto? He dado miles de vueltas en Google con diferentes soluciones pero nadie da el código completo de la consulta y de como se inserta en la web. Mis conocimientos de PHP son algo limitados.

Un saludo


romay2001

Por romay2001

11 de clabLevel



 

chrome
Citar            
MensajeEscrito el 14 Ene 2013 07:00 pm
Lo puedes hacer directamente desde la consulta MySQL con la función DATE_FORMAT.

Código MySQL :

SELECT DATE_FORMAT(mi_fecha '%d-%m-%Y') AS nueva_fecha FROM tabla


Puedes leer más en:
[url=http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format][/url]

O en php con DateTime:

Código PHP :

<?php
  $test = new DateTime('02/31/2011');
  echo date_format($test, 'Y-m-d H:i:s'); // 2011-03-03 00:00:00
  $test = new DateTime('06/31/2011');
  echo date_format($test, 'Y-m-d H:i:s'); // 2011-07-01 00:00:00
?>

Por danmoracr

Claber

128 de clabLevel

1 tutorial

Genero:Masculino  

Web application developer

firefox
Citar            
MensajeEscrito el 15 Ene 2013 12:21 pm

romay2001 escribió:

A ver si me podeis ayudar. Tengo una base de datos con una tabla "noticias" que tiene un campo llamado "fecha" cuyos datos se almacenan en formato americano YYYY-MM-DD

Ese formato no es "americano" (tal formato no existe), SQL almacena las fechas en formato ISO.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 15 Ene 2013 02:09 pm

danmoracr escribió:

Lo puedes hacer directamente desde la consulta MySQL con la función DATE_FORMAT.

Código MySQL :

SELECT DATE_FORMAT(mi_fecha '%d-%m-%Y') AS nueva_fecha FROM tabla


Puedes leer más en:
[url=http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format][/url]

O en php con DateTime:

Código PHP :

<?php
  $test = new DateTime('02/31/2011');
  echo date_format($test, 'Y-m-d H:i:s'); // 2011-03-03 00:00:00
  $test = new DateTime('06/31/2011');
  echo date_format($test, 'Y-m-d H:i:s'); // 2011-07-01 00:00:00
?>


Muchas gracias por la ayuda, he probado la solución con la consulta MySql y ha sido perfectamente óptima.

Un saludo, me ha sido de gran ayuda.

romay2001

Por romay2001

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Ene 2013 02:47 pm
Con gusto!!!

Para eso estoy.

Por danmoracr

Claber

128 de clabLevel

1 tutorial

Genero:Masculino  

Web application developer

firefox
Citar            
MensajeEscrito el 15 Ene 2013 04:13 pm
Muchas gracias de nuevo,

Ya que estoy, me voy a aprovechar de tu buena voluntad.

Relacionado con lo de la fecha: tengo un formulario en el que debo introducir la fecha que se guarda en la base de datos MySql. Resulta que solo me graba la fecha si la pongo en formato YYYY/MM/DD. Como puedo hacer para que me acepte la fecha en formato DD/MM/YYYY?

He pensado en algún datepicker pero son bastante complicados de configurar para mis conocimientos. Igual se sabes de alguno facil.

A ver si se te ocurre algo.

Gracias de antemano.

Un saludo

romay2001

Por romay2001

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Ene 2013 07:20 pm
En ese caso la tendrías que guardarla en un campo de tipo varchar, con los campos date de MySQL tienes que hacerlo en el formato que ellos establecen.

Por danmoracr

Claber

128 de clabLevel

1 tutorial

Genero:Masculino  

Web application developer

firefox
Citar            
MensajeEscrito el 16 Ene 2013 12:56 pm
Pues escribe una función que te haga la conversión:

Código PHP :

function Fecha2ISODate($fecha) {
   $result = NULL;
   if (strpos($fecha,"/") !== false) {
      $aux = explode("/",$fecha); }
   else {
      $aux = explode("-",$fecha);
   }
   if (count($aux) == 3) {
      $result = $aux[3]."-".$aux[2]."-".$aux[1];
   }
   return $result;
}

Esto acepta una cadena con el formato de fecha 'DD/MM/AAAA' y te devuelve la fecha en formato ISO de SQL.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 16 Ene 2013 02:57 pm
Muy buenas y gracias por la solución. La verdad es que mis conocimientos de PHP aún están muy verdes y no he sido capaz de implementar la solución que propones. A ver si me puedes ayudar de nuevo:

Para el INSERT tengo:

$insertSQL = sprintf("INSERT INTO noticias (id_tipo_noticia, fecha, titular, noticia, imagen, web) VALUES (%s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['id_tipo_noticia'], "int"),
GetSQLValueString($_POST['fecha'], "date"),
GetSQLValueString($_POST['titular'], "text"),
GetSQLValueString($_POST['noticia'], "text"),
GetSQLValueString($ruta_imagen, "text"),
GetSQLValueString($_POST['web'], "text"));

mysql_select_db($database_empresas, $empresas);
$Result1 = mysql_query($insertSQL, $empresas) or die(mysql_error());

$insertGoTo = "nueva-noticia.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}

Y EL FORMULARIO

<form action="<?php echo $editFormAction; ?>" method="post" enctype="multipart/form-data" name="form1">
<table align="center">
<tr valign="baseline">
<td nowrap align="right">Id_tipo_noticia:</td>
<td><select name="id_tipo_noticia" id="id_tipo_noticia">
<?php
do {
?>
<option value="<?php echo $row_tipos_noticias['id_tipo_noticia']?>"><?php echo $row_tipos_noticias['tipo_noticia']?></option>
<?php
} while ($row_tipos_noticias = mysql_fetch_assoc($tipos_noticias));
$rows = mysql_num_rows($tipos_noticias);
if($rows > 0) {
mysql_data_seek($tipos_noticias, 0);
$row_tipos_noticias = mysql_fetch_assoc($tipos_noticias);
}
?>
</select>
</td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Fecha:</td>
<td><input name="fecha" type="text" id="fecha" value="" size="32"></td>
</tr>

<tr valign="baseline">
<td nowrap align="right">Titular:</td>
<td><input type="text" name="titular" value="" size="32"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Noticia:</td>
<td><textarea name="noticia" cols="32" rows="6"></textarea></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Imagen:</td>
<td><input type="file" name="imagen" /></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Web:</td>
<td><input type="text" name="web" value="" size="32"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">&nbsp;</td>
<td><input type="submit" value="Insertar registro"></td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="form1">
</form>

Por romay2001

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Ene 2013 08:27 pm
Estás usando Dreamweaver. Lo siento pero no puedo ayudarte mientras uses ese programa como editor de código PHP. De otra forma sería así:
La función que he escrito la poner o bién al inicio del código, o bién al final de todo. Y la usas así:

Código PHP :

$fechaiso = Fecha2ISODate($_POST['fecha']);


En la variable $fechaiso tendrás la fecha en formato ISO de SQL.

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.