miiso escribió:
Bueno primeramente las variables que debo de pasar??
$anyo , $sexo??
Es de sobre entenderse que no le entiendo muy bien al código, aunque viene con comentarios, pero en mi archivo donde ingreso datos no se que nombres de variables le voy a poner, yo tengo un codigo que dada una fecha se direcciona a un archivo.
Dices que no entiendes muy bien el código, así que si piensas utilizarlo será mejor que te lo depure un poco. Le he añadido algunos controles adicionales y lo he modulado en tres funciones. No obstante, asegúrate de que hace lo que necesitas, que
la responsabilidad del uso es toda tuya.
Nuevo código en pastebin.caBueno, ahora a ver si logro "explicotearlo" (aunque debería estar bastante claro...)
La función
reducir_a_un_digito($numero) está muy clara. Recibe un número y reduce sus dos últimas cifras a un dígito por el método ese del número KUA. Le he añadido la comprobación de que el número tenga por lo menos dos dígitos y la he cambiado a un bucle while (más elegante).
La función
anyo_para_zodiaco_chino($fechaNacimiento, $fechaComienzoAnyoChino) antes formaba parte de
obtener_kua(), pero me ha parecido que implementar ese proceso por separado contribuye a la modularidad del código, que siempre viene bien. Los dos parámetros de esta función son arrays y cada uno debe contener un año, un mes y un día en ese orden. Por ejemplo:
Para obtener el año zodiacal chino de alguien nacido el 15-01-1987 (yo soy maaaaas viejo

) habría que crear un array para el primer parámetro con la fecha de nacimento:
$param1[0]='1987';
$param1[1]='1';
$param1[2]='15';
Y otro para el segundo con la fecha del año nuevo chino en el año 1987:
$param2[0]='1987';
$param2[1]='1';
$param2[2]='29';
Y llamar a la función así:
$variable = anyo_para_zodiaco_chino($param1, $param2);La tercera función queda casi igual que antes (con la comprobación añadida y con la sustitución del código que ha pasado a formar parte de la función anterior por una llamada a la misma).
En el primer parámetro hay que pasarle una 'f' si el sexo es mujer y cualquier otra cosa si se trata de un hombre. Para los dos siguientes parámetros vale la explicación anterior. Un par de ejemplos de llamadas a esta función serían:
$sexo = 'f';
$numeroKua = obtener_kua($sexo, $param1, $param2); // Para una mujer.
$numeroKua = obtener_kua('h', $param1, $param2); // Para un hombre.
Por lo que veo, en tu archivo
procesar.php se determina el animal del zodiaco en base a dos años, dado que el año chino suele comenzar en enero o febrero. Si utilizas mi función
anyo_para_zodiado_chino(), sólo necesitarías tener en cuenta el año de comienzo para determinar el animal. Es decir, que para el año 1987 (tigre) no necesitas tener en cuenta los 28 primeros días de enero de 1988, porque eso ya lo calcula la función, sino únicamente implementar algo como: "1987 = tigre", "1988 = conejo", y así lo puedes hacer con todos los demás (
una vez que estés realmente convencido de que el código te sirve).
Saludos.