Foros del Web » Programando para Internet » PHP »

Extraer parte de los datos de una consulta

Estas en el tema de Extraer parte de los datos de una consulta en el foro de PHP en Foros del Web. Que tal amigos, aqui estoy de nuevo luego de resolver el detalle de la fecha y hora, les explico lo que quiero: yo tengo en ...
  #1 (permalink)  
Antiguo 22/09/2011, 10:55
Avatar de Bullet  
Fecha de Ingreso: agosto-2005
Ubicación: Margarita, Venezuela
Mensajes: 235
Antigüedad: 18 años, 8 meses
Puntos: 1
Extraer parte de los datos de una consulta

Que tal amigos, aqui estoy de nuevo luego de resolver el detalle de la fecha y hora, les explico lo que quiero:

yo tengo en mi base de datos, la fecha ingresada de la siguiente manera:

aaaa-mm-dd hh:mm:ss, agarro las variables por separado y mediante el script de insercion las guardo en una sola celda, o campo de la base de datos, hasta ahi todo bien. Lo que quiero hacer es lo siguiente: extraer en una consulta el año aaaa y en otra consulta los dias y meses para que cuando se inserten los registros siguientes no se tenga que ingresar manualmente año mes y dia, ya que el año tarda mucho en cambiar, y los dias y meses cambian pero pasan varios eventos durante los mismos, espero me puedan ayudar. Saludos...
  #2 (permalink)  
Antiguo 23/09/2011, 01:29
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Extraer parte de los datos de una consulta

No se entiende mucho la pregunta, pero para consultar fechas con formato siempre puedes utilizar las funciones de mysql: http://dev.mysql.com/doc/refman/5.1/...functions.html
Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 23/09/2011, 01:39
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Extraer parte de los datos de una consulta

Buenas,

Entiendo la pregunta porque te eché una mano en el post anterior, pero la verdad es que se entiende tirando a mal.

Lo que tienes es un formulario con un campo año y haces varias inserciones, pero quieres que de una a otra se mantenga el campo, cierto? Pues hay dos opciones, según tengas montadas las páginas:
- Si el tratamiento del formulario se realiza en el mismo script en el que tienes el formulario, lo tienes muy sencillo. Para la segunda ejecución, en $_POST tendrás todos los valores que insertó el usuario, con rescatar el del año y ponerlo en value del campo año, ya lo tendrás para la siguiente inserción.
- Si el tratamiento del formulario se realiza en un script diferente al del formulario, tendrás a su vez dos opciones, la primera es rescatar el dato del $_POST y pasarlo a formulario por $_SESSION

Otra opción, que te valdría para ambos, pero que en el primer caso me parece innecesaria, ya que lo tienes más a mano, será hacer una consulta sobre el último campo insertado en la base de datos dentro de la página en la que tienes el formulario, rescatando únicamente el año con las funciones que te pasa @repara2.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #4 (permalink)  
Antiguo 23/09/2011, 07:14
Avatar de Bullet  
Fecha de Ingreso: agosto-2005
Ubicación: Margarita, Venezuela
Mensajes: 235
Antigüedad: 18 años, 8 meses
Puntos: 1
Respuesta: Extraer parte de los datos de una consulta

Que mas amigos, yo lo hice de esta manera, ingresaba la fecha por separado, y luego mediante una consulta extraia solo el año, con la funcion left, de esta forma:

Código HTML:
SELECT LEFT (fecha_nueva,4) FROM fechahora
De esta manera me extrae los 4 primeros digitos que es el año, pero de ahi no podia extraer mas, porq no habia leido las funciones de fecha y hora, voy a probar como me dicen, y cualquier cosa les vuelvo a comentar...

EDITO

Vgonga, hago el tratamiento del formulario en un archivo distinto al script php, pero no entiendo lo de pasar el valor por $_SESSION, podrias explicarme mejor?

Última edición por Bullet; 23/09/2011 a las 07:24
  #5 (permalink)  
Antiguo 23/09/2011, 09:31
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Extraer parte de los datos de una consulta

Buenas,

Vamos a ver, aclara primero una cosa que creo que es esencial. Quieres tener un campo varchar o un campo date? Eso es lo primero que tienes que solucionar, porque soluciones hay miles, pero soluciones óptimas sólo una. Si MySQL te da un tipo de campo Date no es porque se aburrieran y no tuvieran otra cosa que hacer, es porque luego las cosas están optimizadas para ese tipo de campos. Guardar una fecha en un varchar es ir en contra de MySQL, porque si todos hacemos eso, para qué existe Date?

Lo mismo pasa con tu solución, sí, obviamente si sacas los cuatro primeros caracteres vas a tener el año, pero es eso orientado a Date? No, los campos date tienen sus propias funciones, hay que aprender a utilizarlas y el link que te han pasado es perfecto para ello.

En cuanto a lo que dices del formulario, te explico más detalladamente. Cuando trabajas con PHP tienes básicamente tres formas de pasar los datos de una página a otra:
- $_POST: si tienes un formulario en una página, en la página que trata dicho formulario puedes recibir los campos en esta variable, de forma que pasas la información que introdujo el usuario a la página que la trata.
- $_GET: tanto con formulario o sin él, siempre puedes pasar los valores que necesites a través de esta variable, dichos valores se insertarán en la URL de la página de la forma pagina.php?parametro=valor. Luego los tratas en la página que los necesitas.
- $_SESSION: es una estructura que te da PHP para almacenar variables dentro de una misma sesión de usuario. Es decir, para cada usuario que esté conectado a tu web en un momento dado tienes una variable $_SESSION que es, igual que las anteriores, un array donde el índice es el nombre del parámetro y el contenido el valor del mismo. Con esta estrucutra puedes pasar parámetros de unas páginas a otras de forma transparente al usuario.

Cómo aplicas esto a tu caso? Sencillo, tú tienes dos páginas, un formulario y un script que lo trata (en tu caso hace un insert de los datos) y la evolución de tu aplicación es la siguiente:
1) El usuario rellena el formulario y lo envía.
2) El script usa los datos para el insert.
3) Se vuelve al formulario para rellenarlo de nuevo.

Si en el punto 3) quieres que el campo año tenga el mismo valor que puso el usuario en el punto 1) tendrás que pasarlo del script al formulario con alguno de los métodos anteriores. Como el script no es un formulario tienes que descartar el $_POST, luego puedes pasarlo con la URL por $_GET o a través de una sesión con $_SESSION. No te recomiendo el primero, ya que irá directamente en la URL, así que te queda el segundo.

Cómo hacerlo? Tienes tanto en este foro como en mil sitios más (mira en google) ejemplos de cómo utilizar $_SESSION.

Un saludo y espero que te sirva.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #6 (permalink)  
Antiguo 23/09/2011, 09:45
Avatar de Bullet  
Fecha de Ingreso: agosto-2005
Ubicación: Margarita, Venezuela
Mensajes: 235
Antigüedad: 18 años, 8 meses
Puntos: 1
Respuesta: Extraer parte de los datos de una consulta

Cita:
Vamos a ver, aclara primero una cosa que creo que es esencial. Quieres tener un campo varchar o un campo date? Eso es lo primero que tienes que solucionar, porque soluciones hay miles, pero soluciones óptimas sólo una. Si MySQL te da un tipo de campo Date no es porque se aburrieran y no tuvieran otra cosa que hacer, es porque luego las cosas están optimizadas para ese tipo de campos. Guardar una fecha en un varchar es ir en contra de MySQL, porque si todos hacemos eso, para qué existe Date?

Lo mismo pasa con tu solución, sí, obviamente si sacas los cuatro primeros caracteres vas a tener el año, pero es eso orientado a Date? No, los campos date tienen sus propias funciones, hay que aprender a utilizarlas y el link que te han pasado es perfecto para ello.
Los campos de fecha y hora los manejaba con varchar, y los guardaba de manera separada, pero ahora los estoy guardando de tipo DATETIME, donde se manejen fechas y horas, y de tipo DATE, donde se manejen solo fechas.

En cuanto a lo otro, estuvo muy buena tu explicacion, voy a intentarlo como dices, estuve leyendo tanto el enlace que me pasaron en el foro como el manual de mysql, sobre las funciones de fecha, y me sirven, porq la funcion left igual la estaba aplicando al campo tipo datetime, pero es mas optimo trabajar con sus funciones de fecha; voy a leer un poco mas acerca de trabajar con session, porq trabajo en la mayoria de los casos con post, ahorita estoy arreglando las fechas y horas donde se requieren, igual con las mascaras, cualquier cosa busco info y vuelvo a postear. Muchisimas gracias por su ayuda muchachos...
  #7 (permalink)  
Antiguo 28/09/2011, 13:24
Avatar de Bullet  
Fecha de Ingreso: agosto-2005
Ubicación: Margarita, Venezuela
Mensajes: 235
Antigüedad: 18 años, 8 meses
Puntos: 1
Respuesta: Extraer parte de los datos de una consulta

Buenas tardes amigos, reciban un cordial saludo, espero esten bien, gracias vgonga y gracias repara2 por sus respuestas que ayudaron bastante, ya pude resolver lo del año en la fecha, lo extraigo y lo muestro con una consulta sencilla, pero ahora tngo un problemita con el mes y el dia, que necesito mostrarlo tambien, estuve leyendo la informacion de las funciones de fecha y hora y no vi de verdad una funcion que me extragera el mes y el dia, trate de hacerlo con la funcion EXTRACT y no me sirvio, el mysql me da error, entonces intente hacerlo con la funcion SUBSTRING que es para cadenas, y me hace la consulta, pero despues que vuelvo al formulario para ingresar le siguiente registro me aparece la fecha en blanco, supongo q es porq no puedo utilizar funciones para cadenas de caracteres en datos que sean fechas y horas, que funcion me recomiendan uds que utilice? espero su ayuda..

EDITO

Que tal amigos, ya pude resolver lo del mes y dia, ya puedo mostrarlos como yo quiero, tuve que utilizar la funcion SUBSTRING, porq no consegui una mas adecuada de fecha y hora para aplicarla, ahora quiero que me ayuden, si esta a su alcance, como se realizan las validaciones entre fechas y horas, es decir, que cuando ingrese una hora, la siguiente sea mayor, y en caso contrario, que pregunte al usuario si quiere pasar al siguiente dia. Se los expondre en un nuevo tema. Saludos

Última edición por Bullet; 28/09/2011 a las 14:08

Etiquetas: registro, variables
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:31.