Foros del Web » Programando para Internet » PHP »

Problem: Uso del date; fecha (user-actual)

Estas en el tema de Problem: Uso del date; fecha (user-actual) en el foro de PHP en Foros del Web. Hola a todos, primero que nada en una breve explicación de que intento hacer.. (mi formulario que pide datos de nacimiento (día, mes, año, nombre) ...
  #1 (permalink)  
Antiguo 13/07/2011, 17:20
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años
Puntos: 26
Problem: Uso del date; fecha (user-actual)

Hola a todos, primero que nada en una breve explicación de que intento hacer..
(mi formulario que pide datos de nacimiento (día, mes, año, nombre) enviados a edad2.php.




Código HTML:
Ver original
  1. <form method='POST' action='edad2.php' onsubmit='(this)'>
  2.     <table border='3' cellspacing='2' align='center'>
  3.         <tr><td colspan='4' align='center'>Ingrese sus datos<br/>de nacimiento </td>
  4. </tr><tr>
  5. <td width='40' align='center'>Dia</td>
  6. <td width='50' align='center'>Mes</td>
  7. <td width='50' align='center'>Año</td>
  8. <td width='100' align='center'>Nombre</td>
  9. </tr><tr><td align='center'>
  10. <select name='SelDia'>
  11. <option value='ninguna1' selected='selected'>Dia</option>
Código PHP:
Ver original
  1. <?php
  2. for ($i=01;$i<=31;$i++)
  3. {
  4. echo "<option value='$i'>$i</option>";
  5. }
  6. ?>
Código HTML:
Ver original
  1.         </td> <td>
  2.         <select name="SelMes">
  3.         <option value='ninguna2' selected='selected'>Mes</option>
  4. <option value='1'>Enero</option>
  5. <option value='2'>Febrero</option>
  6. <option value='3'>Marzo</option>
  7. <option value='4'>Abril</option>
  8. <option value='5'>Mayo</option>
  9. <option value='6'>Junio</option>
  10. <option value='7'>Julio</option>
  11. <option value='8'>Agosto</option>
  12. <option value='9'>Septiembre</option>
  13. <option value='10'>Octubre</option>
  14. <option value='11'>Noviembre</option>
  15. <option value='12'>Diciembre</option>
  16. </td>
  17. <td align='center'>
  18. <select name='Selanio'>
  19.         <option value='ninguna3' selected='selected'>Año</option>
Código PHP:
Ver original
  1. <?php
  2. $fechaActual=date("Y");
  3. for ($i=1860;$i<=$fechaActual;$i++)
  4. {
  5. echo "<option value='$i'>$i</option>";
  6. }
  7. ?>
Código HTML:
Ver original
  1. </td><td>
  2. <input type='text' name='TXTnombre' maxlength='20' size='20'>
  3. </td></tr>
  4. <tr><td colspan='4' align='right'>
  5. <input type='submit' name='btnEnviar' value='Enviar'>
  6. </td></tr>
  7.        
  8.         </table>
  9. </form>
  10. </body>
  11. </html>
[/HIGHLIGHT]



[lo de arriba esta en una pagina sola..]
-------------------------------------------------------------------------------------------------


(intento de Calculos) de la edad en edad2.php:
-(comprender que soy aprendiz [paciencia])-.

Código PHP:
Ver original
  1. <?php
  2.  
  3. $Diax="0".($_POST['SelDia']);
  4. $Mesx=($_POST['SelMes']);
  5. $Anyox=($_POST['Selanio']);
  6. $Name=($_POST['TXTnombre']);
  7. //Convertido
  8. $AnyoxC=(Int)$Anyox;
  9. $MesxC=(Int)$Mesx;
  10. $DiaxC=(Int)$Diax;
  11.  
  12. //Fechas actuales
  13. $Fecha=date("d-m-Y");
  14.  
  15. $diaz=date("d");
  16. $mez=date("m");
  17. $anyoz=date("Y");
  18.  
  19. //Resta fecha actual menos fecha del Usuario
  20.  
  21. //$U_anyo=$anyoz-$AnyoxC;
  22.  
  23.  
  24.  
  25.  if (!function_exists("edad")) {
  26. function edad($DiaxC,$MesxC,$AnyoxC){
  27.     //fecha actual
  28.     //$dia=date(j);
  29.     //$mes=date(n);
  30.     //$ano=date(Y);
  31.    
  32.     $diaz=date("d");
  33.     $mez=date("m");
  34.     $anyoz=date("Y");
  35.  
  36. //fecha de nacimiento
  37. $dianaz=date("d", strtotime($DiaxC));
  38. $mesnaz=date("m", strtotime($MesxC));
  39. $anonaz=date("Y", strtotime($AnyoxC));
  40. //si el mes es el mismo pero el dia inferior aun no ha cumplido años, le quitaremos un año al actual
  41. if (($mesnaz == $mez) && ($dianaz > $diaz)) {
  42. $anyoz=($anyoz-1);
  43. }print edad;
  44. //si el mes es superior al actual tampoco habra cumplido años, por eso le quitamos un año al actual
  45. if ($mesnaz > $mez) {
  46. $anyoz=($anyoz-1);}
  47. //ya no habria mas condiciones, ahora simplemente restamos los años y mostramos el resultado como su edad
  48. $edad=($anyoz-$AnyoxC);
  49.  
  50. return $edad;
  51.  
  52. }
  53.  
  54. }
  55. ?>






lo que quiero que me devuelva es, una pagina en la cual diga
"tu fecha de nacimiento es: dd/mm/yyyy"
"tienes XY años" (edad justa contando meses días).

Conseguí parte del código en esta web, pero, no se aplicarlo, e tampoco se donde debería aplicar mencionados textos en un print quizá.


PD: siento el lio de variables DX...
Gracias desde ya,
Saludos,
KsrZ
  #2 (permalink)  
Antiguo 13/07/2011, 18:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problem: Uso del date; fecha (user-actual)

Te faltaría usar la función pasandole las variables por ejemplo:
Código PHP:
Ver original
  1. echo edad($var);

Saludos.
  #3 (permalink)  
Antiguo 13/07/2011, 18:38
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años
Puntos: 26
Respuesta: Problem: Uso del date; fecha (user-actual)

Donde debería pesarle las variables a la función?
desde un botón? o..?
  #4 (permalink)  
Antiguo 13/07/2011, 18:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problem: Uso del date; fecha (user-actual)

No, desde tu script, por ejemplo:
Código PHP:
Ver original
  1. $miVar = 'juan';
  2. echo mifunction($miVar);
  3.  
  4. // si quieres de un post:
  5. $var = $_POST['var'];
  6. echo funcion($var);

Saludos.
  #5 (permalink)  
Antiguo 13/07/2011, 20:48
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años
Puntos: 26
Respuesta: Problem: Uso del date; fecha (user-actual)

tiro la toalla xD... no e podido aun
  #6 (permalink)  
Antiguo 14/07/2011, 01:25
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años
Puntos: 26
Respuesta: Problem: Uso del date; fecha (user-actual)

Modifique algunas cosas mas.. ya no tengo errores, pero tampoco me da resultados el trabajo de deberes que tengo que entregar a las clases¬¬...

Pagina que recibe datos:
Cita:
Código PHP:
<?php  /* -------- Edad3.php ---------*/




$mensaje="";
//recibiendo datos
//---------------------------
function chekeardatos ($frm){
$Diaxx=($_POST['SelDia']);
$Mesxx=($_POST['SelMes']);
$Anyoxx=($_POST['Selanio']);
$Name=($_POST['TXTnombre']);

//Convertidos a numeros
$aniox=(Int)$Anyoxx;
$mesx=(Int)$Mesxx;
$diax=(Int)$Diaxx;

//dia de nacido / a fecha
$dia_n=date("d"strtotime($diax));
$mes_n=date("m"strtotime($mesx));
$anio_n=date("Y"strtotime($aniox));

//datos actuales
$anioz=date("Y");
$mesz=date("m");
$diaz=date("d");

//eddades sin tener en cuenta aun los meses y dia del año actual.
$U_anios=($anioz-$anio_n);

$U_Old=($_anios>=71);
$U_menor=($_anios<=17);

$Old=(70);
$Lol=(17);



//si tiene mas de 18(sin tener en cuenta dias/meses actual) 
//y ademas el mes de su nacimiento es mayor o igual al de la fecha actual,
//y ademas su dia de nacimiento es mayor al de la fecha actual.
    
if (($U_anios>$Lol) && ($U_anios<$Old) && ($mesz>$mes_n) && ($dia_n>$diaz)) {
        if ((
$mesz=$mes_n) && ($diaz>$dia_n)){
//nos dira que podemos realizar gestiones comerciales etc
$mensaje= print "Con ".$U_anios." años, usted puede realizar gestiones comerciales y compras on-line libremente.";
}

//sino, chekeara que no tenga mas de 70 años, y si tiene les advertira 
//que no se vallan a gastar toda la jubilación
    
if (($U_Old) && ($mesz>$mes_n) && ($diaz>$dia_n)){
        if ((
$mesz=$mes_n) && ($diaz>$dia_n)){
$mensaje= print "Tenga usted cuidado, no se vaya a gastar toda la jubilación en compras on-line.";
}

    else {

    
$Uanios=($Uanios-1);
$mensaje= Print "Usted no puede realizar transacciones comerciales.<br/>Debe ser mayor a 18 años, y usted tiene ".$Uanios." años.";
}
}
}

}
print 
"<html><body>".$mensaje."</body>\n</html>\n";
?>






Y este es la pagina que envía los datos...(es una sola):
Cita:
Código PHP:
<?php
print "<html><body>";

?>
Código HTML:
<form method='POST' action='Edad3.php' onsubmit="(this)">
	<table border='3' cellspacing='2' align='center'>
		<tr><td colspan='4' align='center'>Ingrese sus datos<br/>de nacimiento </td>
		</tr>
		<tr><td width='40' align='center'>Dia</td> <td width='50' align='center'>Mes</td> <td width='50' align='center'>Año</td><td width='100' align='center'>Nombre</td>
		</tr>
		<tr><td align='center'>
<select name='SelDia'>
<option value='ninguna1' selected='selected'>Dia</option> 
Código PHP:
<?php
for ($i=01;$i<=31;$i++)
{
echo 
"<option value='$i'>$i</option>";
}
?>
Código HTML:
</select>
		</td> <td>
		<select name="SelMes">
		<option value='ninguna2' selected='selected'>Mes</option>
<option value='1'>Enero</option>
<option value='2'>Febrero</option>
<option value='3'>Marzo</option>
<option value='4'>Abril</option>
<option value='5'>Mayo</option>
<option value='6'>Junio</option>
<option value='7'>Julio</option>
<option value='8'>Agosto</option>
<option value='9'>Septiembre</option>
<option value='10'>Octubre</option>
<option value='11'>Noviembre</option>
<option value='12'>Diciembre</option>
</select></td>
		<td align='center'><select name='Selanio'>
		<option value='ninguna3' selected='selected'>Año</option> 
Código PHP:
<?php
$anioz
=date("Y");
for (
$i=1860;$i<=$anioz;$i++)
{
echo 
"<option value='$i'>$i</option>";
}
?>
Código HTML:
</select></td>
		<td><input type='text' name='TXTnombre' maxlength='20' size='20'></td></tr>
		<tr><td colspan='4' align='right'><input type='submit' name='btnEnviar' value='Enviar'></td></tr>
		
		</table>
</form> 
Código PHP:
<?php
print "</body>\n";
print 
"</html>\n";
?>
  #7 (permalink)  
Antiguo 14/07/2011, 09:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problem: Uso del date; fecha (user-actual)

Lo que pasa es que necesitas mandar llamar a la función, por ejemplo si los defines así:
Código PHP:
Ver original
  1. function algo($var) {
  2.      return $var . ' hola!';
  3. }
  4.  
  5. // La llama así:
  6. echo algo("hola");

En tu código solo defines la función pero nunca la utilizas ni haces nada, aparte de que $mensaje solamente es local a la función, necesitas regresarla en tu función haciendo un return $mensaje para imprimirlo.

Saludos.
  #8 (permalink)  
Antiguo 15/07/2011, 23:01
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años
Puntos: 26
Respuesta: Problem: Uso del date; fecha (user-actual)

en fin, mi solución:

Pagina que envía datos:

Código PHP:
<?php
print "<html><body>";

?>
<script>
function checkForm(frm){
    if (frm.TXTnombre.value.length == 0)
    {
        alert("Debe ingresar el nombre de usuario");
        frm.TXTnombre.focus();
        return false;
    }
return true;
}
</script>

<form method='POST' action='edad02.php' onsubmit="return checkForm (this)">
    <table border='3' cellspacing='2' align='center'>
        <tr><td colspan='4' align='center'>Ingrese sus datos<br/>de nacimiento </td>
        </tr>
        <tr><td width='50' align='center'>Dia (01-31)</td> <td width='50' align='center'>Mes (01-12)</td> <td width='50' align='center'>Año</td><td width='100' align='center'>Nombre</td>
        </tr>
        <tr>
        <td align='center'>
        <input type='text' name='TXTdia'></td>
        <td align='center'>
        <input type='text' name='TXTmes'></td>
        <td align='center'>
        <input type='text' name='TXTanio'></td>
        <td align='center'>
        <input type='text' name='TXTnombre' maxlength='16' size='16'></td>
        </tr>
        <tr>
            <td colspan='4' align='center'><input type='submit' name='btnEnviar' value='Enviar'></td>
            </tr>
        </table>
    </form>
    
    <?php
    
    
print "</body></html>";
    
    
?>
Pagina que recibe datos, y devuelve resultado:

Código PHP:
<?php
$dd
=($_POST['TXTdia']);
$mm=($_POST['TXTmes']);
$aaaa=($_POST['TXTanio']);



/**
* Recibe Datos de fecha de nacimiento.
* Devuelve: Un valor entero que es la edad actual de la persona
*/
function CalcularEdad($dd$mm$aaaa)
{
    
// Carga los datos de este instante
    
$now_dd   date("d");
    
$now_mm   date("m");
    
$now_yyyy date("Y");
    
    
$delta_a $now_yyyy $aaaa 1;
    
    
// Ahora voy a analizar las situaciones en las que deberia sumarle uno.
    
    
if ($now_mm >= $mm// Si el mes actual es mayor o igual al del cumple
    
{
        if (
$now_mm $mm// Ya cumplió años, así que debo sumar 1
        
{
            
$delta_a += 1;
        }
        else 
// Si es el mismo mes, debemos pasar a comparar los dias
        
{
            if (
$now_dd >= $dd// Si la fecha actual es superior o igual a la del cumple, hay que sumar 1
            
{
                
$delta_a += 1;
            }
        }
    }
    
    return 
$delta_a;
}


// Código para probar la funcion
// Por ej, hago la llamada: http://localhost/.../edad.php?bdd=14&bmm=09&byyyy=2000

$bdd    $_REQUEST['TXTdia'];
$bmm    $_REQUEST['TXTmes'];
$byyyy    $_REQUEST['TXTanio'];
$bUser    $_REQUEST['TXTnombre'];
$bmensaje="";

$CEdad=CalcularEdad($bdd,$bmm,$byyyy);
$diferenciarEdad=Edades ($CEdad,$bmensaje,$bUser);



function 
Edades ($CEdad,$mensaje,$bUser){


    if ((
$CEdad>=18) && ($CEdad<=70)) //si esta entre 18 y 70 años:
    
{
    
$mensaje=$bUser.": Con sus ".$CEdad." años, usted puede realizar gestiones comerciales y compras on-line libremente.";
    }

    else 
//si no esta entre 18 y 70 años :
    

        if (
$CEdad<18//si es menor que 18:
        
{
        
$mensaje=$bUser.": Usted no puede realizar transacciones comerciales.<br/>Debe ser mayor a 18 años, y usted tiene ".$CEdad." años.";
        }

        else 
//si no es menor que 18, no esta entre 18 y 70, entonces, tiene mas de 70:
        
{
        
$mensaje    =    $bUser.": Tenga usted cuidado, no se vaya a gastar toda la jubilación en compras on-line.";
        }
}
return 
$mensaje;
}
print 
"<html><body>\n";
print 
"Hoy es: <b>".date("d / m / Y - H:i:s")."</b><br/>\n";
print 
"Nombre:<b> "$bUser ."</b><br/>\n";
print 
"Fecha de nacimiento:<b> $bdd / $bmm / $byyyy </b><br/>\n";
print 
"Edad: <b>"$CEdad ."</b> años.<br />\n";
print 
"Mensaje del sistema: <b>"$diferenciarEdad ."</b>\n";
print 
"</body>\n</html>\n";
?>

Etiquetas: date, fecha, html, problem, formulario, variables, usuarios
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:07.