Foros del Web » Programando para Internet » PHP »

Mensaje de cumpleaños - fecha de nacimiento

Estas en el tema de Mensaje de cumpleaños - fecha de nacimiento en el foro de PHP en Foros del Web. Hola Ronruby, como que ya estamos encaminados por la solucion, pero como que me falta unos cuantas variables como: //$ultimoDiaDelMes=(28||29||30||31);???? //$cincoDiasMenosCantidadYaContada=(($ultimoDiaDelMe s-$hoy)+(????)); - Para el ...

  #31 (permalink)  
Antiguo 23/01/2009, 15:54
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Mensaje de cumpleaños - fecha de nacimiento

Hola Ronruby, como que ya estamos encaminados por la solucion, pero como que me falta unos cuantas variables como:
//$ultimoDiaDelMes=(28||29||30||31);????
//$cincoDiasMenosCantidadYaContada=(($ultimoDiaDelMe s-$hoy)+(????));

- Para el caso que el mes no cambia ya esta funcionando a la perfeccion, lo que me falta cuando pasa de mes. Este es mi codigo:
Código php:
Ver original
  1. <!-- <?php
  2. include('conec.php');
  3. conectarse();
  4. $dia1=date('j');
  5. $mes1=date('n');
  6.  
  7. $mes=date('m');
  8. $hoy=date('d');
  9. $hoy=$hoy+1;
  10. $cincoDias=$hoy+7;   //PARA EL EJEMPLO COLOK 7 DIAS
  11. //$ultimoDiaDelMes=(28||29||30||31);
  12. $proximoMes=$mes+1;
  13. $primerDiaProximoMes=1;
  14. //$cincoDiasMenosCantidadYaContada=(($ultimoDiaDelMes-$hoy)+(????));
  15.  
  16. $sql="SELECT alupat,alunom FROM datos WHERE DAYOFMONTH(alunac)='$dia1' AND MONTH(alunac)='$mes1'";
  17. $sql2="SELECT alupat,alunom FROM datos WHERE MONTH(alunac) = '$mes' AND (DAYOFMONTH(alunac) BETWEEN '$hoy' AND '$cincoDias')";
  18.  
  19. $registros=mysql_query($sql) or die("Error1:" .mysql_error() );
  20. $registros2=mysql_query($sql2) or die("Error2:" .mysql_error() );
  21. if(mysql_num_rows($registros)==0)
  22. {
  23. echo "no hay cumples por el momento";
  24. }else
  25. {
  26. ?>
  27. <html>
  28. <head>
  29. <title>Top</title>
  30. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  31. </head>
  32. <body background="titlebar-active.png">
  33. <table>
  34.     <?php
  35.     while($row=mysql_fetch_assoc($registros))
  36.     {
  37.     ?>
  38. <tr>
  39. <td><?php echo "Hoy cumple años ".ucwords(strtolower($row['alunom']))." ".ucwords(strtolower($row['alupat'])) ?></td>
  40. </tr>
  41.     <?php
  42.     }
  43.     ?>
  44.     <?php
  45.     while($row2=mysql_fetch_assoc($registros2))
  46.     {
  47.     ?>
  48. <tr>
  49. <td>
  50. <?php echo "Proximos cumpleaños: ".ucwords(strtolower($row2['alunom']))." ".ucwords(strtolower($row2['alupat'])) ?></td>
  51. </tr>
  52.     <?php
  53.     }
  54.     ?>
  55. </table>
  56. <?php
  57. }
  58. ?>
  59. </body>
  60. </html> -->

Me faltan declarar bien las variables para el segundo caso, ademas la consulta revisarla

Gracias
  #32 (permalink)  
Antiguo 23/01/2009, 16:04
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Mensaje de cumpleaños - fecha de nacimiento

$ultimoDiaDelMes = date('t');
$cincoDiasMenosCantidadYaContada = $cincoDias - ($ultimoDiaDelMes - $dia1);

Nota: Antes de empezar a definir todas esas variables asegurate que el mes aumenta. Para ahorrarte definir variables innecesarias que no vallas a usar.

Ah, tambien tienes que tener en cuenta otro caso mas aparte de los dos que te dije.
Si el mes aumenta, pero el dia final es el 1er dia del mes que viene, no hay porque usar BETWEEN.
  #33 (permalink)  
Antiguo 23/01/2009, 17:23
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Mensaje de cumpleaños - fecha de nacimiento

Hola a todos, este es el codigo trabajado:
Código php:
Ver original
  1. <!-- <?php
  2. include('conec.php');
  3. conectarse();
  4. $dia1=date('j');
  5. $mes1=date('n');
  6.  
  7. $mes=date('m');
  8. $hoy=date('d');
  9. $hoy=$hoy+1;
  10. $cincoDias=$hoy+15;
  11. $ultimoDiaDelMes=date('t');
  12. $proximoMes=$mes+1;
  13. //print_r($proximoMes);
  14. $primerDiaProximoMes=1;
  15. $cincoDiasMenosCantidadYaContada=$cincoDias-($ultimoDiaDelMes - $primerDiaProximoMes);
  16.  
  17. $sql="SELECT alupat,alunom FROM datos WHERE DAYOFMONTH(alunac)='$dia1' AND MONTH(alunac)='$mes1'";
  18. $sql2="SELECT alupat,alunom FROM datos WHERE MONTH(alunac)='$mes' AND (DAYOFMONTH(alunac) BETWEEN '$hoy' AND '$cincoDias')";
  19. $sql3="SELECT alupat,alunom FROM datos
  20.       WHERE (MONTH(alunac)='$mes' AND (DAYOFMONTH(alunac) BETWEEN '$hoy' AND 'ultimoDiaDelMes'))
  21.       OR (MONTH(alunac)='$proximoMes' AND (DAYOFMONTH(alunac) BETWEEN '$primerDiaProximoMes' AND '$cincoDiasMenosCantidadYaContada'))";
  22.  
  23. $registros=mysql_query($sql) or die("Error1:" .mysql_error() );
  24. $registros2=mysql_query($sql2) or die("Error2:" .mysql_error() );
  25. $registros3=mysql_query($sql3) or die("Error3:" .mysql_error() );
  26. ?>
  27. <html>
  28. <head>
  29. <title>Top</title>
  30. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  31. </head>
  32. <body background="titlebar-active.png">
  33. <table>
  34.     <?php
  35.     while($row=mysql_fetch_assoc($registros))
  36.     {
  37.     ?>
  38. <tr>
  39. <td><?php echo "Hoy cumple años ".ucwords(strtolower($row['alunom']))." ".ucwords(strtolower($row['alupat'])) ?></td>
  40. </tr>
  41.     <?php
  42.     }
  43.     ?>
  44.     <?php
  45.     while($row2=mysql_fetch_assoc($registros2))
  46.     {
  47.     ?>
  48. <tr>
  49. <td><?php echo "Proximos cumpleaños: ".ucwords(strtolower($row2['alunom']))." ".ucwords(strtolower($row2['alupat'])) ?></td>
  50. </tr>
  51.     <?php
  52.     }
  53.     ?>
  54.     <?php
  55.     while($row3=mysql_fetch_assoc($registros3))
  56.     {
  57.     ?>
  58. <tr>
  59. <td><?php echo "Proximos cumpleaños: ".ucwords(strtolower($row3['alunom']))." ".ucwords(strtolower($row3['alupat'])) ?></td>
  60. </tr>
  61.     <?php
  62.     }
  63.     ?>
  64. </table>
  65. </body>
  66. </html> -->
Solo falta la ultima parte que menciona Ronruby: (Ah, tambien tienes que tener en cuenta otro caso mas aparte de los dos que te dije.
Si el mes aumenta, pero el dia final es el 1er dia del mes que viene, no hay porque usar BETWEEN.
)...esto te refieres a que si un usuario tiene de fecha nac: 2009/02/01???.
De ser asi,
1. se utilizaria otra consulta ($sql4???)
2. que between no hay que usar
Y otra cosa k no me esta cuadrando es k las impresiones salen de la sgte manera:
Proximos cumpleaños: Paulina Luisa Delgado
Proximos cumpleaños: Victor Alexander Salazar
Proximos cumpleaños: Santos Grimaneza Vega
Proximos cumpleaños: Camila Siccha
Me solicitan que impriman: Proximos cumpleaños: Usuario1,Usuario2,Usuario3,Usuario4

Gracias,
  #34 (permalink)  
Antiguo 23/01/2009, 21:43
Avatar de enyalon  
Fecha de Ingreso: agosto-2008
Mensajes: 28
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Mensaje de cumpleaños - fecha de nacimiento

Con respecto a las impresiones.
Cita:
Próximos cumpleaños: Usuario1,Usuario2,Usuario3,Usuario4
Lo que debes hacer es sacar el echo "Próximos cumpleaños: del while y así no se repetirá.
Cita:
<tr>

<td>
Código PHP:
<?php
    
echo "Próximos cumpleaños: ";
    while(
$row3=mysql_fetch_assoc($registros3))
    { echo 
ucwords(strtolower($row3['alunom']))." ".ucwords(strtolower($row3['alupat'])).", "}
?>
</td>

</tr>
  #35 (permalink)  
Antiguo 24/01/2009, 00:12
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Mensaje de cumpleaños - fecha de nacimiento

Cita:
Solo falta la ultima parte que menciona Ronruby: (Ah, tambien tienes que tener en cuenta otro caso mas aparte de los dos que te dije.
Si el mes aumenta, pero el dia final es el 1er dia del mes que viene, no hay porque usar BETWEEN. )...esto te refieres a que si un usuario tiene de fecha nac: 2009/02/01???.
Si quieres puedes obviar esa parte. Aunque no se como funcionara el script si la consulta dice BETWEEN '$fecha' AND '$fecha' (Con la misma fecha), pero supongo que no habra ningun problema. Me alegra ver que funcione :P. No lo habia probado, solo estaba teorizando.

En cuanto a lo de las repeticiones, pues haz lo que te dice enyalon, saca el "Proximos cumpleaños" del bucle while, y luego imprime el nombre + ", ". Pero recuerda de eliminar la ultima ", " usando substr().
  #36 (permalink)  
Antiguo 26/01/2009, 10:16
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Mensaje de cumpleaños - fecha de nacimiento

Hola amigos,
dejo el codigo para que quizas tener algunas modificaciones y poder mejorarlo,
Código php:
Ver original
  1. <!-- <?php
  2. include('conec.php');
  3. conectarse();
  4. $dia1=date('j');
  5. $mes1=date('n');
  6.  
  7. $mes=date('m');
  8. $hoy=date('d');
  9. $hoy=$hoy+1;
  10. $cincoDias=$hoy+15;
  11. $ultimoDiaDelMes=date('t');
  12. $proximoMes=$mes+1;
  13. //print_r($proximoMes);
  14. $primerDiaProximoMes=1;
  15. $cincoDiasMenosCantidadYaContada=$cincoDias-($ultimoDiaDelMes - $primerDiaProximoMes);
  16.  
  17. $sql="SELECT alupat,alunom FROM datos WHERE DAYOFMONTH(alunac)='$dia1' AND MONTH(alunac)='$mes1'";
  18. $sql2="SELECT alupat,alunom FROM datos WHERE MONTH(alunac)='$mes' AND (DAYOFMONTH(alunac) BETWEEN '$hoy' AND '$cincoDias')";
  19. $sql3="SELECT alupat,alunom FROM datos
  20.       WHERE (MONTH(alunac)='$mes' AND (DAYOFMONTH(alunac) BETWEEN '$hoy' AND 'ultimoDiaDelMes'))
  21.       OR (MONTH(alunac)='$proximoMes' AND (DAYOFMONTH(alunac) BETWEEN '$primerDiaProximoMes' AND '$cincoDiasMenosCantidadYaContada'))";
  22.  
  23. $registros=mysql_query($sql) or die("Error1:" .mysql_error());
  24. $registros2=mysql_query($sql2) or die("Error2:" .mysql_error());
  25. $registros3=mysql_query($sql3) or die("Error3:" .mysql_error());
  26. ?>
  27. <html>
  28. <head>
  29. <title>Top</title>
  30. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  31. </head>
  32. <body background="titlebar-active.png">
  33. <table>
  34. <tr>
  35. <td>
  36.     <?php
  37.     if(mysql_num_rows($registros)==0)
  38.     {
  39.     echo" ";
  40.     }else
  41.     {
  42.     echo "Hoy cumple años: ";
  43.     while($row=mysql_fetch_assoc($registros))
  44.     {
  45.             $nombres=$row['alunom'];
  46.         $trozos=explode(" ",$nombres);
  47.         echo ucwords(strtolower($trozos[0]))." ".ucwords(strtolower($row['alupat'])).", ";    ///LINEA 47
  48.     }
  49.     }
  50.     ?>
  51. </td>
  52. </tr>
  53. <tr>
  54. <td>
  55.     <?php
  56.     if(mysql_num_rows($registros2)==0||mysql_num_rows($registros3)==0)
  57.     {
  58.     echo" ";
  59.     }else
  60.     {
  61.     echo "Proximos cumpleaños: ";
  62.     while($row2=mysql_fetch_assoc($registros2))
  63.     {
  64.         $nombres2=$row2['alunom'];
  65.         $trozos2=explode(" ",$nombres2);
  66.         echo ucwords(strtolower($trozos2[0]))." ".ucwords(strtolower($row2['alupat'])).", ";
  67.         while($row3=mysql_fetch_assoc($registros3))
  68.         {
  69.         $nombres3=$row3['alunom'];
  70.         $trozos3=explode(" ",$nombres3);
  71.         echo ucwords(strtolower($trozos3[0]))." ".ucwords(strtolower($row3['alupat'])).", ";
  72.         }
  73.     }
  74.     }
  75.     ?>
  76. </td>
  77. </tr>
  78. </table>
  79. </body>
  80. </html> -->
Lo que quisiera es saber como eliminar la ultima ",", segui las sugerencias de Ronruby pero no la doy...este pedazo de codigo reemplaze en la linea 47:
Código php:
Ver original
  1. <!--        echo substr("ucwords(strtolower($trozos[0]))." ".ucwords(strtolower($row['alupat'])).", "",0,-1); -->
pero sale el sgte error:
Parse error: syntax error, unexpected '"' in /data/members/free/tripod/es/h/s/i/hsiccha/htdocs/top.php on line 47

Gracias de antemano por sus colaboraciones,
  #37 (permalink)  
Antiguo 26/01/2009, 11:36
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Mensaje de cumpleaños - fecha de nacimiento

Tendrá que ver las comillas dobles dentro de comillas dobles???

Código php:
Ver original
  1. <!-- echo substr("ucwords(strtolower($trozos[0]))." ".ucwords(strtolower($row['alupat'])).", "",0,-1); -->

Saludos,
  #38 (permalink)  
Antiguo 26/01/2009, 13:26
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Mensaje de cumpleaños - fecha de nacimiento

Necesito de su ayuda por favor, que estoy errado:
Código php:
Ver original
  1. <!--        $prueba='ucwords(strtolower($trozos[0]))." ".ucwords(strtolower($row['alupat'])).", "';
  2.         echo substr($prueba,0,-1); -->
Este es el msje de error:
Parse error: syntax error, unexpected T_STRING in /data/members/free/tripod/es/h/s/i/hsiccha/htdocs/top.php on line 47

Saludos,
  #39 (permalink)  
Antiguo 29/01/2009, 13:12
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Mensaje de cumpleaños - fecha de nacimiento

Tremendo lio que tienes, ¿desde cuando puedes meter FUNCIONES de PHP dentro de comillas?

No te elimina la ultima "," porque tu al separar no solo agregas ",". Tu agregas ", " ¿notas el espacio? Por eso el substr tiene que ser de 0 a -2.

Código PHP:
$prueba=ucwords(strtolower($trozos[0])).' '.ucwords(strtolower($row['alupat'])).', ';
echo 
substr($prueba,0,-2);

//Tambien deberias considerar usar sprintf() para que el codigo sea mas entendible.
$prueba .= sprintf('%s %s, '
                            
ucwords(strtolower($trozos[0])), 
                            
ucwords(strtolower($row['alupat']))
                   ); 
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 19:39.