Foros del Web » Programando para Internet » PHP »

igualar funcion date() con un campo de la bd

Estas en el tema de igualar funcion date() con un campo de la bd en el foro de PHP en Foros del Web. Hola yo de nuevo jeje tengo la siguiente curiosidad. En mi base de datos tengo un campo "f_hasta" tipo VARCHAR; y lo que me gustaría ...
  #1 (permalink)  
Antiguo 24/10/2013, 22:01
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 9 meses
Puntos: 5
Pregunta igualar funcion date() con un campo de la bd

Hola yo de nuevo jeje
tengo la siguiente curiosidad. En mi base de datos tengo un campo "f_hasta" tipo VARCHAR; y lo que me gustaría hacer es que desde la pagina igualar o verificar si la fecha actual (de Internet, o de la pc) que sea igual a la que tengo almacenada en la BD, y de acuerdo a eso, que me muestre un cartelito que diga "se acerca la fecha de finalizacion de tal publicación"

algo así como (por ejemplo; no me reten por el código, es algo mamarrachezco; pero para darles una idea de como lo quisiera)
Código:
<?php
Si date(d-m-Y) es menor(<) a $nombre_del_campo entonces
mostrar "queda X dias para finalizar la publicacion"

mas si date(d-m-Y) es igual o mayor(=>)  a $nombre_del_campo entonces
mostrar " la publicacion ha caducado"

sino
mostrar "la publicacion sigue vigente"
?>
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #2 (permalink)  
Antiguo 24/10/2013, 22:40
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: igualar funcion date() con un campo de la bd

Pues en primer lugar es pésima idea almacenar una fecha en un tipo de columna que no sea DATE/DATETIME/TIMESTAMP, y pues, siendo así usar VARCHAR es de lo peor.

Desde ahí tienes problemas, así que primero deberías corregir eso.

Cuando lo hayas corregido deberías consultar una referencia de SQL y ver la sección para manejo de fecha y hora, descubrirás que hay muchas formas de consultar a la BD tomando en cuenta las restricciones que planteas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/10/2013, 23:16
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: igualar funcion date() con un campo de la bd

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues en primer lugar es pésima idea almacenar una fecha en un tipo de columna que no sea DATE/DATETIME/TIMESTAMP, y pues, siendo así usar VARCHAR es de lo peor.
Muchas gracias por la pronta respuesta "pateke" xD
Voy a cambiar eso y veremos que nos encontramos de obstáculo :( Salu2
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #4 (permalink)  
Antiguo 26/10/2013, 08:23
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: igualar funcion date() con un campo de la bd

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues en primer lugar es pésima idea almacenar una fecha en un tipo de columna que no sea DATE/DATETIME/TIMESTAMP, y pues, siendo así usar VARCHAR es de lo peor.

Desde ahí tienes problemas, así que primero deberías corregir eso.
gracias pateke me funciono a la perfeccion y hace lo q necesito
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #5 (permalink)  
Antiguo 26/10/2013, 11:30
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 9 meses
Puntos: 5
Exclamación Respuesta: igualar funcion date() con un campo de la bd

Cita:
Iniciado por pateketrueke Ver Mensaje
Desde ahí tienes problemas, así que primero deberías corregir eso.
Me ha surgido un nuevo error ala hora de trabajar con IF (en la q chequea si es mayor o menor, la fecha almacenada en la BD con la fecha actual)

Código PHP:
<?php

//Aca van las variables de conexion a la base de datos.
// Asi q este paso la omito.

$mostrar"SELECT * FROM $tabla";
$resmysql_query($mostrar);

while (
$reg mysql_fetch_array($res)){
    
setlocale(LC_ALL,"es_ES@euro","es_ES","esp"); // LC_TIME
$d $reg['fecha'];
$fechita strftime("%d-%m-%Y"strtotime($d));
echo 
"<table width='500' border='1' cellspacing='1' cellpadding='0'><tr>";
echo 
"<td>La fecha ingresada es ".$fechita."</td>";

$nowdate('d-m-Y'); //Verifico la fecha actual de hoy
if($fechita $now){
    echo 
"<td>La publicidad ya ha caducado.</td>";
    echo 
"</tr></table>";
}elseif
    (
$fechita == $now){
        echo 
"<td>Hoy caduca la publicidad.</td>";
        echo 
"</tr></table>";
    }else{
        echo 
"<td>Aun sigue vigente la publicidad.</td>";
        echo 
"</tr></table>";
    }
    
    }
mysql_close($connect);
?>
y este seria lo q me arroja (son sus errores)
Código:
La Fecha actual es 26-10-2013
---------------------------------------------------------------------------------------
|  La fecha ingresada es 25-10-2013  |  La publicidad sigue vigente.  |  
|  La fecha ingresada es 15-06-2014  |  La publicidad sigue vigente.  |  
|  La fecha ingresada es 01-01-1970  |  La publicidad sigue vigente.  |  
|  La fecha ingresada es 01-02-2015  |  La publicidad sigue vigente.  |  
|  La fecha ingresada es 01-01-2000  |  La publicidad sigue vigente.  |  
|  La fecha ingresada es 20-02-2013  |  La publicidad sigue vigente.  |  
---------------------------------------------------------------------------------------
No se q me faltará o que estoy haciendo mal :(
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #6 (permalink)  
Antiguo 26/10/2013, 11:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: igualar funcion date() con un campo de la bd

Cita:
Iniciado por pateketrueke Ver Mensaje
[...] Cuando lo hayas corregido deberías consultar una referencia de SQL y ver la sección para manejo de fecha y hora, descubrirás que hay muchas formas de consultar a la BD tomando en cuenta las restricciones que planteas.
También es mala idea hacer la comparación con PHP, sobre todo porque SQL ya provee dichos mecanismos de manera nativa.

Consulta una referencia, busca en el sub-foro de base de datos, etc.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 26/10/2013, 11:59
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 9 meses
Puntos: 5
Pregunta Respuesta: igualar funcion date() con un campo de la bd

Cita:
Iniciado por pateketrueke Ver Mensaje
También es mala idea hacer la comparación con PHP, sobre todo porque SQL ya provee dichos mecanismos de manera nativa.

Consulta una referencia, busca en el sub-foro de base de datos, etc.
Encontré esto, Pero no lo entiendo, ya q no usa nada o una sintaxis de php; y no se si sera algo relacionado con php :(
http://infolib.lotus.com/resources/s.../03090101.html

EDITO:
No es nada relacionado con php, queda descartado; perdon!!
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #8 (permalink)  
Antiguo 26/10/2013, 12:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: igualar funcion date() con un campo de la bd

Ajá...
Y seré curioso: ¿Qué tiene que ver el IBM Lotus Simphony con PHP, y con la base de datos MySQL?
¿No te parece que sería mas provechoso que busques información en los manuales de PHP y/o MySQL?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 26/10/2013, 12:05
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: igualar funcion date() con un campo de la bd

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Ajá...
Y seré curioso: ¿Qué tiene que ver el IBM Lotus Simphony con PHP, y con la base de datos MySQL?
¿No te parece que sería mas provechoso que busques información en los manuales de PHP y/o MySQL?
Si perdón, ya anteriormente edite el post y le habia aclarado q no era la info q esperaba; por eso puse en negro q "quedaba descartado, xq no era nada relacionado en php"
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #10 (permalink)  
Antiguo 26/10/2013, 12:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: igualar funcion date() con un campo de la bd

Lo que @pateketrueke te trata de explicar en su post es que no tiene ningún sentido ni utilidad analizar el resultado de una query básica como la que quieres, para filtrar registros por fechas, cuando esa capacidad ya existe en el SQL.
En otras palabras, el SQL está diseñado para realizar consultas y filtrado de datos de altísima flexibilidad y con la complejidad requerida, mucho más eficientemente de lo que puedes lograr programaticamente.
Desperdiciar las capacidades del SQL por no documentarse debidamente, es un esfuerzo perdido.
Te recomiendo que en tu caso al menos leas el manual de referencia o un tutorial básico, para trabajar consultas con fechas por medio de MySQL. TE puede sorprender la capacidad de una base para devolverte lo que realmente buscas.

Este es un buen sitio para comenzar, si no quieres meterte con el manual de referencia: MySQL Con clase: Curso

FAQs de PHP

Manejo de fechas en PHP y MySQL
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 26/10/2013, 23:20
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: igualar funcion date() con un campo de la bd

http://www.forosdelweb.com/f18/consu...-fecha-872260/
Buscando y buscando; una palabra clave, cai en este post. Intentare ver si con el codigo que muestra "potro" funciona con lo mio (que creo que es ese, xq lo que quiero es que
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #12 (permalink)  
Antiguo 26/10/2013, 23:30
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 9 meses
Puntos: 5
De acuerdo Respuesta: igualar funcion date() con un campo de la bd

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Este es un buen sitio para comenzar, si no quieres meterte con el manual de referencia: MySQL Con clase: Curso
busque y busque la vuelta, y leyendo en foros, lei que para comparar dos fechas (una almacenada en la bd, yla otra con una actual), era mejor compararla estando en el formato que lo guarda mysql, "yyyy-mm-dd", y con un simple IF ya estaría.

acá como quedó y su resultado.
Código PHP:
<?php 
//CONFIG DB
$host 'localhost';
$db_name 'test';
$user'root';
$pass '';
$tabla'date_';

if(!
function_exists('mysql_connect')){
    echo 
"PHP no ha encontrado la extencion de MYSQL";
    exit();
}

$connectmysql_connect($host$user$pass) or die ("ERROR al conectar la Base de Datos".mysql_error());
$select_dbmysql_select_db($db_name$connect) or die ("ERROR al seleccionar la Base de Datos".mysql_error());
//
$mostrar"SELECT * FROM $tabla";
$resmysql_query($mostrar);

while (
$reg mysql_fetch_array($res)){
    
$d $reg['fecha'];  //en la BD esta guardado como Y-m-d
$fecha_hoy date('Y-m-d'); //lo comparo con la fecha actual de hoy con el mismo formato q en la de mysql
if($d $fecha_hoy){
        echo
"Fecha $d es mayor a $fecha_hoy<p>";
    }elseif
        (
$d $fecha_hoy){
        echo
"Fecha $d es menor a $fecha_hoy<p>";
}  else{
    echo
"fecha $d es igual a $fecha_hoy<p>";
}    
}
mysql_close($connect);
?>
Alguna otra observacion??; bueno para lo que quiero que realice esta bien. Ahora solo me queda un problema para eliminar de una sola pasada registros con un check box, pero eso lo postee en este foro pero en otra parte; asi que....muchisimas gracias x la ayuda brindada.
Si alguien podria decirme como hacer una faq para exponer mi pequeño proyecto a toda la comunidad FDW
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.

Etiquetas: condición, datetime
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 04:15.