Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Dias en Negativo

Estas en el tema de Dias en Negativo en el foro de PHP en Foros del Web. Hola! Hace dias que estoy Tratando de solucionarlo ! El codigo es asi: Código PHP: <?php include( "connect.php" ); $query  =  mysql_query ( "SELECT * FROM usuario WHERE usuario='" . ...
  #1 (permalink)  
Antiguo 06/01/2015, 23:52
 
Fecha de Ingreso: enero-2015
Mensajes: 32
Antigüedad: 9 años, 10 meses
Puntos: 0
Dias en Negativo

Hola!
Hace dias que estoy Tratando de solucionarlo !
El codigo es asi:
Código PHP:
<?php
include("connect.php");
$query mysql_query("SELECT * FROM usuario WHERE usuario='".$_SESSION['usuario']."'") or die(mysql_error());
$data mysql_fetch_array($query);
$id $data['id'];
$fecha $data['fecha'];
$fecha2 time();
function 
diasQueFaltan($fecha){
    return 
ceil((strtotime($fecha)-time())/86400);
}
if(
$nivel == "Vip"){
    if (
$fecha2 > -123){
        if (
$fecha <= $fecha2){
            echo 
'Usted es usuario Vip por ' diasQueFaltan($fecha) . ' dia(s)';
                } else {
                
mysql_query("UPDATE usuario SET nivel='Usuario' WHERE id=$id");
                echo 
"Se Te termino el Vip"
                }
    }
}else {
    echo 
"";
}
?>
La idea de esto ! es que el Usuario Vip vea los dias que le queda. En eso estamos bien. Pero si el usuario deja su cuenta inactiva y vuelve 10 dias despues de que se le termino el vip! lo que tendria que hacer el if es ver y comparar los dias en negativo. Y si llega a ver 1 numero en negativo debe hacer que el usuario pase de Vip a Usuario normal.
Desde ya muchas gracias.
Attm: Angeli Maximiliano
  #2 (permalink)  
Antiguo 07/01/2015, 09:54
 
Fecha de Ingreso: enero-2015
Mensajes: 32
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Dias en Negativo

Por favor alguna ayuda???
  #3 (permalink)  
Antiguo 07/01/2015, 10:08
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Dias en Negativo

Quiero supones que $fecha es un tipo date de mysql, asi que lo que tienes que hacer es solo compara fecha actual con la que esta en la base de datos, si la fecha de la base de datos es mayo a la actual que le mande el mensaje.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #4 (permalink)  
Antiguo 07/01/2015, 10:49
 
Fecha de Ingreso: enero-2015
Mensajes: 32
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Dias en Negativo

vos decis que tengo que hacer asi?

Código PHP:
Ver original
  1. if ($fecha2 > $fecha){
  2.             echo 'Usted es usuario Vip por ' . diasQueFaltan($fecha) . ' dia(s)';
  3.                 } else {
  4.                 mysql_query("UPDATE usuario SET nivel='Usuario' WHERE id=$id");
  5.                 echo "Se Te termino el Vip";  
  6.                 }
  #5 (permalink)  
Antiguo 07/01/2015, 11:07
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Dias en Negativo

Es correcto
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #6 (permalink)  
Antiguo 07/01/2015, 12:01
 
Fecha de Ingreso: enero-2015
Mensajes: 32
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Dias en Negativo

Cita:
Iniciado por hhs Ver Mensaje
Es correcto
Vi que no es así! al final el código quedo así

Código PHP:
if($nivel == "Vip"){
    if (
$fecha2 <= $fecha){
        if (
$fecha >= -123){
            
mysql_query("UPDATE usuario SET nivel='Usuario' WHERE id=$id");
            echo 
"Se Te termino el Vip";
                } else {
                echo 
'Usted es usuario Vip por ' diasQueFaltan($fecha) . ' dia(s)'
                }
    }
}else {
    echo 
"";

Pero me e dado cuenta que el problema de todo acá es la Función

Código PHP:
function diasQueFaltan($fecha){
    return 
ceil((strtotime($fecha)-time())/86400);

Lo que esta haciendo esto! es transformar la fecha en numero. Ahora bien ! La gran pregunta es como yo de esa función hago que entre en if ($fecha >= -123){
Espero que me puedas ayudar!
  #7 (permalink)  
Antiguo 07/01/2015, 14:40
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Dias en Negativo

Si tienes la fecha de termino y la fecha actual ya no requieres hacer esta condición:
Código PHP:
Ver original
  1. if ($fecha >= -123){
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #8 (permalink)  
Antiguo 07/01/2015, 15:02
 
Fecha de Ingreso: enero-2015
Mensajes: 32
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Dias en Negativo

Pero me sale numero negativo cuando expira el vip.
Es una una resta!
me tira los días en retroceso y cuando llega a 0 empieza a sumar los numero negativos!
Yo lo que quiero es que cuando llegue a 0 o este cualquier numero negativo ! que lo Haga usuario!!
  #9 (permalink)  
Antiguo 07/01/2015, 15:53
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Dias en Negativo

Que versión de php estas usando ?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #10 (permalink)  
Antiguo 07/01/2015, 19:21
 
Fecha de Ingreso: enero-2015
Mensajes: 32
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Dias en Negativo

PHP Version 5.3.29
esa tengo!!
  #11 (permalink)  
Antiguo 07/01/2015, 20:33
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 10 meses
Puntos: 306
Respuesta: Dias en Negativo

Deberías ver esto: http://php.net/manual/es/datetime.diff.php
O mejor aún, usar las funciones de mysql (aunque para este foro de php la respuesta anterior es la que vale ;) )
http://www.linuxhispano.net/2010/07/...has-con-mysql/
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--
  #12 (permalink)  
Antiguo 07/01/2015, 22:14
 
Fecha de Ingreso: enero-2015
Mensajes: 32
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Dias en Negativo

Muchas gracias a los dos !! ya se Soluciono!!
El codigo termino siendo asi! Para el que lo quiera usar!!
Código PHP:
Ver original
  1. <?php
  2. include("connect.php");
  3. $query = mysql_query("SELECT * FROM usuario WHERE usuario='".$_SESSION['usuario']."'") or die(mysql_error());
  4. $data = mysql_fetch_array($query);
  5. $id = $data['id'];
  6. $fecha = $data['fecha'];
  7. $fecha2 = date("Y-m-d");
  8.  
  9. $datetime1 = date_create($fecha2);
  10. $datetime2 = date_create($fecha);
  11. $interval = date_diff($datetime1, $datetime2);
  12.  
  13. if($nivel == "Vip"){
  14.     if($datetime1 > $datetime2){
  15.         mysql_query("UPDATE usuario SET nivel='Usuario' WHERE id=$id");
  16.         echo "Se Te termino el Vip";
  17.     }else{
  18.         echo $interval->format('A su vip le faltan %a dias para finalizar');
  19.     }
  20. }else{
  21.     echo "";
  22. }
  23. ?>

Suerte y Gracias de nuevo!!

Etiquetas: dias, fecha, mysql, negativo, select, sql
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 01:05.