Foros del Web » Programando para Internet » PHP »

La fecha en una base de datos

Estas en el tema de La fecha en una base de datos en el foro de PHP en Foros del Web. Saludos amigos, estoy haciendo una base de datos, y estoy creando unas tablas que necesitan que se les ingrese la fecha, mi pregunta es: ¿Que ...
  #1 (permalink)  
Antiguo 24/04/2003, 11:40
Avatar de kawoq  
Fecha de Ingreso: mayo-2002
Ubicación: Xela
Mensajes: 491
Antigüedad: 21 años, 10 meses
Puntos: 0
La fecha en una base de datos

Saludos amigos, estoy haciendo una base de datos, y estoy creando unas tablas que necesitan que se les ingrese la fecha, mi pregunta es:

¿Que parámetro le debo especificar al campo Fecha: Int(10) o Char(10)?

El formato que deseo se visualize la fecha es 24/04/2003
y esto me servira para que al ingresar algun articulo en dicha tabla, la hoja web haga un llamadao a la base de datos y en base a la fecha vaya posteandolas en la web, es decir la más reciente sera la nota principal en la portada(por decir algo).

Bueno espero que me entiendan amigos y gracias.

Saludos.
  #2 (permalink)  
Antiguo 24/04/2003, 12:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ya que estas trabajando con una Base de datos .. Msyql, tiene tipo de datos de FECHA .. como DATE, DATETIME y otros ...

A su vez .. ese formato se lo guarda Msyql en formato de fecha ODBC standard (aaaa-mm-dd) .. Pero es no es problema a la hora de visualizar esos datos .. Puedes usar DATE_FORMAT() para darle el formato que tu quieras ...

Así mismo .. si ingresas fechas de forma "manual" por algún formulario debes de formar esa fecha en dicho formato a la hora de hacer tus INSERT o UPDATE de ese campo (En las FAQ's creo q hay un ejemplo del amigo Cain ..)

Si usas campos de tu BD tipo DATE (o afines) te será mas facil a posteriori hacer operaciones matemáticas de fechas con esos datos directamente desde una sentencia SQL usando las numerosas funciones que hay de tratamiento de fechas de Msyql.

más info:
http://www.mysql.com/doc/en/Column_types.html
http://www.mysql.com/doc/en/Date_and...functions.html

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 24/04/2003, 12:36
Avatar de kawoq  
Fecha de Ingreso: mayo-2002
Ubicación: Xela
Mensajes: 491
Antigüedad: 21 años, 10 meses
Puntos: 0
Gracias por la ayuda, si logre ver que mysql trabaja con DATE TIME, etc, ya que baje un administrador de mysql bastante aceptable, como para comprarlo, es el EMS Mysql Manager, soy muy novato en esto, ya que deje mucho tiempo de estudiar y ahora vuelvo a retomarlo, pero ya logre crear mis campos, es para una seccion de noticias, tengo los campos
Fecha
Titular
Resumen
Cuerpo (cuerpo de la noticia)
Foto (para insertar alguna foto)

Bueno ya hora voy a crear mi formulario,

Cita:
¿mis variables las debo crear en base al nombre de mis campos?,
y otra duda que tengo es ya una vez hecho el formulario, al enviarlo con los datos, me imagino que cada cosa que ingrese va a los campos designados, bueno pero yo quiero poner en la portada, la ultima noticia en base a la fecha de ingreso(la ultima en entrar), y que ahi me publique unicamente lo que tenga en el campo foto, el titular y el resumen(en base a esa fecha),
Cita:
¿puedo hacerlo en base a un select, diciendole que campos son los que quiero unicamente?
si es así, ahi tengo una tabla 2*2, en una celda va la foto, en otra el título y en otra el resumen,
¿
Cita:
tengo que hacer un query en cada celda al campo que quiero únicamente, y si es así como lo hago, para obterner lo que tienen según la fecha?
Disculpen tantas preguntas, y gracias por la ayuda.

Saludos.
  #4 (permalink)  
Antiguo 24/04/2003, 12:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
¿mis variables las debo crear en base al nombre de mis campos?
No es necesario, si usas nombres iguales te ayudará a localizar a donde corresponden .. pero nada mas ..

Cita:
¿puedo hacerlo en base a un select, diciendole que campos son los que quiero unicamente?
Claro que sí, de eso se trata el lenguaje de consultas SQL que debes de aprender SI o SI yá: www.mysql.com/doc

Cita:
tengo que hacer un query en cada celda al campo que quiero únicamente, y si es así como lo hago, para obterner lo que tienen según la fecha?
NO, para eso te comento que debes aprender SQL para ver como tienes que hacer tu SELECT campo1,campo2 FROM tabla WHERE campo_fecha cumpla condición ... .. y sentencias similares.

Repasa este tutorial de PHP+Msyql y no te olvides del oficial de Msyql:
http://otri.us.es/recursosPHP/manual/index.htm

Tambien tienes este sitio sobre Msyql en castellano:
www.mysql-hispano.com

Te recomiendo que aprendas SQL .. pese que uses algun GUI para Msyql como el EMS que te permite hacer consultas (query's) casi que a "golpe de ratón" ..

Un saludo,

pd: ... revisa el GUI para Msyql www.mysqlstudio.com .. es similar al EMS pero el algunos puntos mejor.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 24/04/2003 a las 12:52
  #5 (permalink)  
Antiguo 24/04/2003, 15:53
Avatar de kawoq  
Fecha de Ingreso: mayo-2002
Ubicación: Xela
Mensajes: 491
Antigüedad: 21 años, 10 meses
Puntos: 0
Thks, por las respuestas, y agradezco tu colaboración.

Saludos.
  #6 (permalink)  
Antiguo 25/04/2003, 15:39
Avatar de kawoq  
Fecha de Ingreso: mayo-2002
Ubicación: Xela
Mensajes: 491
Antigüedad: 21 años, 10 meses
Puntos: 0
Saludos, ya tengo la base de datos hecha, como estoy empezando, talvez tenga procesos que se puedan simplificar haciendo uso de otras funciones en php, pero por algo se empieza. Bueno pues el objetivo de la base de datos, es administrar el contenido de una hoja web en base a las secciones que tenga, por el momento les menciono dos, Noticias y Actividades. Bueno el principal objetivo es que los que cubren las noticias y actividades, llenando un formulario con los campos adecuados según las tablas de la Bd, al momento de enviarlo, que es info se vaya a la BD y el sistema desde PHP lo llame y lo postee según donde vayan los códigos.

mi base de datos se llama rqch, y ahi ya le cree la tabla que se llama noticias la cual contiene los siguientes campos:
Id INT(11)
titulo Varchar(150)
resumen Varchar(255)
cuerpo TEXT
Foto LONGBLOB

Bueno pues ya realize mi formulario para agregar los datos el cual tiene el siguient código:

Código PHP:
<form enctype="multipart/form-data" method="post"  action="almacenar.php"
Fecha: (Formatoaño/mes/dia<br
<
input type="Text" name="fecha" size="12"
<
br
Titulo Noticia<br
<
input type="Text" name="titulo" size="150"
<
br
Resumen de la Noticia(si lo hay)<br>
  <
textarea name="resumen" cols="100" rows="2"></textarea>
  <
br
Nota Completa<br
  <
textarea name="cuerpo" cols="100" rows="12"></textarea
<
br
Si hay foto para la noticia ingresarla:<br
<
input type="File" name="picture"
<
br><br
  <
input type="submit" name="submit" value="Enviar Noticia"
</
form

El archivo almacenar.php esta en el mismo directorio que el formulario y esta de esta forma:
Código PHP:
<?php 

if ($submit) { 

    
$localhost"localhost:3306";
    
$kawoq"root";
    
$db="rqch";
    
$db mysql_connect("$localhost","$kawoq"); 

    
mysql_select_db("$kawoq",$db); 

    
$sql "INSERT INTO noticias (fecha,titulo,resumen,cuerpo,foto,rvisual) "
        
"VALUES ('$fecha,$titulo,$resumen,$cuerpo,$foto,$rvisual')"

    
exec("cp $picture /full/path/to/rqch/fotos/$foto"); 

    echo 
"$fecha<br>\n"
    echo 
"$titulo<br>\n"
    echo 
"$resumen<br>\n"
    echo 
"$cuerpo<br>\n"
    echo 
"$foto<br>\n"
    echo 
"$foto<br>\n"
    echo 
"<br>\n"
    echo 
"<img src=images/$picture_name><br>\n"


?>
El problema en sí es que al envíar la información, ya desde el internet explorer, se abre el archivo almacenar.php, y me despliega lo que puse en cada campo, excepto la foto.
Cita:
¿A que se deberá?.
Otra de las cosas, según yo entiendo, al envíar los datos de ese formulario se tendrían que almacenar en la Base de Datos, pero no lo hace, pues en mi index, tengo una tabla de 2 columnas
y 3 filas, en una llamo a la foto y ahi tengo 3 veces este código cambiandole solamente la variable que quiero presentar en este caso el titulo y el resumen este que esta a continucacion es bdatosfoto.php:

Código PHP:
<?
$host
"localhost:3306";
$usuario"root";
$sdb="rqch";
$conectar =  mysql_connect ($host$usuario) or die ("No se ha podido conectar a la BD");
mysql_select_db($sdb,$conectar);
$consulta "SELECT foto FROM noticias"//aca foto cambia por 
resumen y por titulo para los otros codigos que se ven en la 
imagen
$query 
mysql_query($consulta,$conectar);
$fila=mysql_fetch_array ($query);
print (
"<br>".$fila[foto]." ");//igual que aca se cambia 
                                               
foto por las otras
?>
El problema es que no llama nada de la base de datos, aun cuando ingreso unas tres veces datos a traves del formulario.
Cita:
¿Porque no se alimentara la BD desde el formulario?
Debido a ello probe insertar los datos desde un Administrador de Mysql y ahi si los inserta, Y logre que se desplegara unicamente el título y resumen, pero en el espacio de la foto me muestra esto.



Saludos y Disculpen lo largo del mensaje, espero no haberlos aburrido.

Gracias.

Última edición por kawoq; 25/04/2003 a las 15:48
  #7 (permalink)  
Antiguo 25/04/2003, 16:43
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Primero, ¿de donde sale la variable $foto que guardas en la BD? Porque el campo file se llama picture. Ademas, creo que te estas haciendo un lio, porque no se si quieres meter la imagen en la BD o guardar en la BD el nombre del fichero y guardar la imagen en un fichero. Ahora mismo estas haciendo las dos cosas mal.

Segundo, para mostrar la imagen dentro de un PHP no puedes simplemente mostrar los datos de la imagen. Acuerdate que el PHP tiene que generar HTML. Y la forma que tiene HTML de insertar una imagen en una pagina es mediante la etiqueta <img>. Asi que en tu pagina deberias poner:
Código PHP:
echo "<img src=\"path/a/las/imagenes/{$fila['foto']}\">"
si en el campo foto de la BD guardas el nombre del fichero de imagen.

Si lo que guardas en la BD es la imagen en si, debes crear otro script (mostrar_imagen.php), que lo usas en el src del <img> pasandole un identificador de la imagen de la BD que quieres mostrar (normalmente el id del registro). Y mostrar_imagen.php simplemente enviara las cabeceras de Content-Type correspondientes al tipo de imagen que quieres mostrar, leera los datos de la imagen de la BD y aqui si le haras un echo.

Creo que en las FAQs hay eejmplos de como subir imagenes y creo que tambien de como mostrarlas. Tambien usando el buscador del foro encontraras muchos mensajes que explican estos pasos.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 26/04/2003, 11:00
Avatar de kawoq  
Fecha de Ingreso: mayo-2002
Ubicación: Xela
Mensajes: 491
Antigüedad: 21 años, 10 meses
Puntos: 0
Cita:
Mensaje Original por josemi
Hola,

creo que te estas haciendo un lio, porque no se si quieres meter la imagen en la BD o guardar en la BD el nombre del fichero y guardar la imagen en un fichero. Ahora mismo estas haciendo las dos cosas mal.



No se que pienses tu pero talvez sería mejor insertar el nombre de la foto, ahora mi pregunta es, yo tengo la foto en mis_doc, la ruta que mencionas debe de ser esa la de mis_doc en mi disco duro, o la foto ya debe de estar subida en el servidor web, y solamente la va a llamar. ¿Tengo que agregarle en el script de agregar datos, una ruta para que lleve ahí la foto, y ya solo despue le pongo el path en el campo foto?


Cita:
Código PHP:
echo "<img src=\"path/a/las/imagenes/{$fila['foto']}\">"
si en el campo foto de la BD guardas el nombre del fichero de imagen.
Al mecionar esto, ya tengo mi campo que se llama FOTO, bien ahora el tipo como lo defini fue LONGBLOB, si lo que voy a insertar ahi la ruta, debo de cambiarlo a CHAR, y si es así, como debo de agregar los urls a esas imagenes. ¿Podrá ser por medio de una variable $ruta, y enumerar las fotos, para despues hacer un ciclo y llamarla segun la condición del ciclo? O no importa el nombre que le de

Disculpen espero no molestar con estas preguntas.

Saludos.

Última edición por kawoq; 26/04/2003 a las 11:04
  #9 (permalink)  
Antiguo 26/04/2003, 11:30
 
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona - España
Mensajes: 270
Antigüedad: 21 años, 4 meses
Puntos: 0
La foto debe de estar subida a tu servidor y en la ruta que le pongas.
  #10 (permalink)  
Antiguo 26/04/2003, 19:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cuando haces el "Upload" HTTP de tus archivos (da igual si es una foto o lo que sea ..) te quedan a tu disposición un monton de variables que puedes usar para determinar que nombre tiene el archivo que has subido, .. el tipo (MIME) del archivo que has subido (útil para que te lo guardes en tu BD) y otros detalles ..

Ademas .. cuando usas el "FILE" para "subir" un archivo al servidor, el archivo que "subes" se queda en un directorio "temporal" del servidor en espera de que TU lo muevas a su destino definitivo (que será tu directorio donde quieras guardar tus FOTOS o a la BD en formato Binario) ..

Si sólo quieres guardarte la ruta (o nombre mínimo) de la imagen que has subido en tu BD .. ese campo "foto" debes de usar un tipo: VARCHAR() o cualquier otro de texto .. pues, lo que vas a guardar es SÓLO una "cadena" (string) q e es el nombre de la imagen (con o sin ruta) ...

Te recomiendo que leas el capítulo correspondiente de PHP (manual oficial) sobre el "Upload" de archivos via HTTP:

http://www.php.net/manual/en/features.file-upload.php

Ahí tienes toda la técnica del "Upload" via HTTP y verás esas variables que te hacía mención para que te lo guardes en tu BD.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 13:50.