Foros del Web » Programando para Internet » PHP »

Que alguien me ayude novato triste y enloquecido

Estas en el tema de Que alguien me ayude novato triste y enloquecido en el foro de PHP en Foros del Web. Bueno primero que todo, me alegra pertenecer a este foro de verdad encuentro cosas muy utiles desde hace un buen rato . ------------------------- Problema ------------------------- ...
  #1 (permalink)  
Antiguo 05/03/2008, 11:35
Avatar de kassem  
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años, 2 meses
Puntos: 0
Que alguien me ayude novato triste y enloquecido

Bueno primero que todo, me alegra pertenecer a este foro de verdad encuentro cosas muy utiles desde hace un buen rato .
------------------------- Problema-------------------------
Ok! pues desde hace un tiempo he venido desarrollando una web que maneja Donantes en un banco de sangre, el caso es que necesito que cada donante tenga su cuenta que muestre el historial de Donación como por ejemplo:

Datos personales (nombre, apellido, sexo, teléfono etc..) ok la idea es que cuando el donante entre a su cuenta pueda ver un historial de sus donaciones algo asi como

--SU ULTIMA DONACIÓN FUE <?php TAL DIA ?> y SU PROXIMA DONACION ES <?php TAL DIA ?>

En este caso hay algo de que los hombres donan cada 2 meses y las mujeres cada 3 meses.

Los donantes cuando son registrados se guardan con un campo fecha tipo (DATETIME) el administrador que inserta el donante no introduce esta fecha, esta es insertada en el Query con un Now() .

ok vamos bien.

---------------------- Haciendo la consulta-------------------------

Teniendo en cuenta de que si tomo esta fecha inicial y le sumo los 2 meses para los hombres y 3 meses para las mujeres dependiendo del campo sexo como haría para que cuando el donante haga su consulta esa fecha haga la operación de sumar los meses pero que se actualice cuando haya terminado el tiempo.

En pocas palabras que cuando se haya terminado el tiempo lapso 2 o 3 meses (dependiendo sexo) haga un UPDATE en el registro del donante....



----------------------------------------------------------------------------------------------------


AMIGOS NO SE QUE LES PARECE MI PROBLEMA PERO DE VERDAD QUE NECESITO AYUDA PARA ESTO Y SE QUE MUCHOS DE USTEDES TIENEN MUCHO PERO MUCHO POTENCIAL PARA ESTAS COSAS HABER QUE SOLUCIÓN ME PUEDEN DAR YA SEA POR OTRO MECANISMO

SE LOS AGRADECERÍA EN EL ALMA GRACIAS...
-------------------------------------------------------------------------------------------------------
  #2 (permalink)  
Antiguo 05/03/2008, 11:45
 
Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 20 años, 7 meses
Puntos: 3
Re: Que alguien me ayude novato triste y enloquecido

Hola!

Antes de nada más que un problemad de PHP creo que es un problema más bien de base de datos...

La consulta para actualizar a los hombres sería algo así:

update donantes set fecha = date_add(fecha, INTERVAL 2 MONTH) where now() > date_add(fecha, INTERVAL 2 MONTH) and sexo = 'mujer';

Esa consulta actualizaría a los hombres cuyo campo fecha + 2 meses sea menor a la fecha actual, y les actualizará el campo fecha a la fecha de alta +2meses.

Te refieres a esto?
  #3 (permalink)  
Antiguo 05/03/2008, 12:23
Avatar de kassem  
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Que alguien me ayude novato triste y enloquecido

ok amigo pero esto se actualizaría en el momento de que el cliente hiciera la consulta

cierto?
  #4 (permalink)  
Antiguo 05/03/2008, 12:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Que alguien me ayude novato triste y enloquecido

Lo mejor es a la hora de insertar el registro, así posteriormente cuando tu lo veas ya tendrá la fecha definida y no se actualizara hasta que hagas tu próximo ingreso.

Saludos.
  #5 (permalink)  
Antiguo 05/03/2008, 13:06
Avatar de kassem  
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Que alguien me ayude novato triste y enloquecido

kaS_aPPeaL y Gator V, Soy novato en php pero quiero saber porque cuando hago la consulta de la fecha sale esto ---> Su fecha de donación es el Resource id #4


<?php
include("conex.php");

if (!$conex)
{
die('No se pudo conectar al servidor: ' . mysql_error());
}

mysql_select_db("hemocentro", $conex);


$id=$_POST['id'];

mysql_query("UPDATE donantes set fecha = date_add(fecha, INTERVAL 2 MONTH) where now() > date_add(fecha, INTERVAL 2 MONTH) and sexo = 'masculino'", $conex);

$x= mysql_query ("SELECT fecha FROM donantes WHERE id='$id'", $conex);


if ($x)
{

echo "Su fecha de donación es el $x";

}
else
{
echo "Tu documento no es valido.";

}


mysql_close($conex);
?>
  #6 (permalink)  
Antiguo 05/03/2008, 13:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Que alguien me ayude novato triste y enloquecido

Te aparece eso porque no estas seleccionando el valor, solo envías el query:
Código PHP:
$xmysql_query ("SELECT fecha FROM donantes WHERE id='$id'"$conex) or die( mysql_error() );

$row mysql_fetch_row$x );

if (
$row)
{

echo 
"Su fecha de donación es el" $row[0];

}
else
{
echo 
"Tu documento no es valido.";


Saludos.

PD. Cuando publiques código PHP hazlo entre las etiquetas [PHP] y [/PHP]
  #7 (permalink)  
Antiguo 05/03/2008, 13:57
Avatar de kassem  
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Que alguien me ayude novato triste y enloquecido

Gator V muchas gracias amigo ahhh se me olvidava con respecto esto:


Código PHP:
mysql_query("UPDATE donantes set fecha = date_add(fecha, INTERVAL 2 MONTH) where now() > date_add(fecha, INTERVAL 2 MONTH) and sexo = 'masculino'"$conex); 

¿El script solo hace el update cuando el lapso de la fecha inicial es mayor de 2 meses?.
  #8 (permalink)  
Antiguo 05/03/2008, 14:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Que alguien me ayude novato triste y enloquecido

Así es, y cuando el sexo es Masculino.

Te recomiendo si tienes dudas de SQL, vayas al foro de Bases de Datos.

Saludos.
  #9 (permalink)  
Antiguo 05/03/2008, 14:08
Avatar de kassem  
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Que alguien me ayude novato triste y enloquecido

ok! gracias a todos

ojala todos los foros fueran como este...
  #10 (permalink)  
Antiguo 05/03/2008, 16:13
Avatar de kassem  
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años, 2 meses
Puntos: 0
Gator v ayúdame una vez mas !!! lo siento amigo pero no dejo de darte problemas



si te acuerdas arriba en el otro código decía esto:

Código PHP:
 mysql_query("UPDATE donantes set fecha = date_add(fecha, INTERVAL 2 MONTH) where now() > date_add(fecha, INTERVAL 2 MONTH) and sexo = 'masculino'"$conex); 
pues el now() lo cambie por CURDATE() y el campo DATETIME lo cambie por un DATE

Mira me encontré este script en la web que sirve para sumar y restar fechas bueno es este amigo.



Código PHP:
<?php function suma_fechas($fecha,$ndias)
            

{
            

      if (
preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha))
            

              list(
$dia,$mes,$año)=split("/"$fecha);
            

      if (
preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha))
            

              list(
$dia,$mes,$año)=split("-",$fecha);
        
$nueva mktime(0,0,0$mes,$dia,$año) + $ndias 24 60 60;
        
$nuevafecha=date("d-m-Y",$nueva);
            

      return (
$nuevafecha);  
            

}

$datemysql_query ("SELECT fecha1 FROM donantes WHERE id='$id'"$conex) or die( mysql_error() );

$row2 mysql_fetch_row$date );


$f11=suma_fechas($row260);
            

      echo 
"$row2[0] más 60 días es  $f11<br>";
      


mysql_close($conex);
?>
La idea es coger esa fecha inicial del registro y calcularle al Donante su próxima Donación.

Claro la idea real es hacer que el script calcule o sume la próxima donación dependiendo de que la donación es de 2 meses para los hombres y 3 meses para las mujeres.

NO TIENE QUE SER ESTA PUEDA QUE HAYA OTRA FORMA

Ayudame amigo o alguien que vea esto.

GRACIAS

ahh si donde encontré el script decía esto..



función para sumar días a una fecha. Su fundamento es pasar todo a segundos (timestamp), realizar la suma y volver a convertir el resultado a formato de fecha.

Última edición por GatorV; 05/03/2008 a las 17:12
  #11 (permalink)  
Antiguo 05/03/2008, 17:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Que alguien me ayude novato triste y enloquecido

Prueba asi el código:
Código PHP:
<?php function suma_fechas($fecha,$ndias)
            

{
            

      if (
preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha))
            

              list(
$dia,$mes,$año)=split("/"$fecha);
            

      if (
preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha))
            

              list(
$dia,$mes,$año)=split("-",$fecha);
        
$nueva mktime(0,0,0$mes,$dia,$año) + $ndias 24 60 60;
        
$nuevafecha=date("d-m-Y",$nueva);
            

      return (
$nuevafecha);  
            

}

$datemysql_query ("SELECT fecha1 FROM donantes WHERE id='$id'"$conex) or die( mysql_error() );

$row2 mysql_fetch_row$date );


$f11=suma_fechas($row2[0], 60); // En esta linea hice el cambio
            

      
echo "$row2[0] más 60 días es  $f11<br>";
      


mysql_close($conex);
?>
Saludos.
  #12 (permalink)  
Antiguo 05/03/2008, 17:38
Avatar de kassem  
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Que alguien me ayude novato triste y enloquecido

No se amigo si hace el proceso pero me sale esto:


Tu ultima fecha de donación fue el 2008-03-05 16:37:58

2008-03-05 más 60 días es 2010-10-28


no me funciona..


jajajaja tendria que dar

2008-03-05 más 60 es 04-05-2008
  #13 (permalink)  
Antiguo 05/03/2008, 17:45
Avatar de kassem  
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Que alguien me ayude novato triste y enloquecido

mira este script el si lo calcula perfectamente



Código PHP:
<?php



function suma_fechas($fecha,$ndias)
            

{
            

      if (
preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha))
            

              list(
$dia,$mes,$año)=split("/"$fecha);
            

      if (
preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha))
            

              list(
$dia,$mes,$año)=split("-",$fecha);
        
$nueva mktime(0,0,0$mes,$dia,$año) + $ndias 24 60 60;
        
$nuevafecha=date("d-m-Y",$nueva);
            

      return (
$nuevafecha);  
            

}
echo 
'<head>
            

              <title>'
.$_SERVER[PHP_SELF].'</title>
            

      </head>
            

      <html>
            

      <body>'
;

$f1="05/03/2008"/* Cuando cambiamos esto por la variable se daña debe pasar algo */
/* $f2="30-01-1992"; */
$f11=suma_fechas($f160);
            

      echo 
"$f1 más 60 es  $f11<br>";
/* $f11=suma_fechas($f1, -40);
            

      echo "$f1 menos 60 es  $f11<br>";
$f21=suma_fechas($f2, 365);
            

      echo "$f2 más 365 es  $f21<br>";
$f21=suma_fechas($f2, -365);
            

      echo "$f2 menos 365 es  $f21<br>";
             */

echo "<a href=$_SERVER[PHP_SELF]>Recargar la Página</a>";
echo 
'</body>
            

      </html>'
;
?>
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 00:54.