Buenos días a tod@s.
Tengo un campo input de formulario y un botón. Cuando pulso sobre este último me aparece un calendario y cuando pulso sobre cualquiera de los días ese valor pasa al campo input.
Mas o menos el código es así:
Código PHP:
<p>
<label>Fecha de Alta <a onclick="show_calendar()" style="cursor: pointer;"><small><img src="images/calendario.jpg" /></small></a><br />
<input readonly="readonly" class="text" type="text" name="per_fecha_alta" id="per_fecha_alta" value="<?php echo convierte_fecha_a_spanish($personal["per_fecha_alta"])?>" />
<div id="calendario" class="calendario_izquierda" style="display:none;position:relative;background-color: white"><?php calendar_html(); ?></div>
</label>
</p>
Como veis en este código se llama a otra función: calendar_html().
Como este tipo de campos son bastante comunes en el programa que estoy usando he pensado en hacer una función a la que llamo y esta me debería devolver el código de arriba, de esta
forma yo solo llamo a la función y automáticamente me carga el texto por pantalla, y así me evito escribir tantas veces siempre lo mismo.
La llamada a la función quedaría así:
echo muestra_campo_fecha("Fecha de Alta", convierte_fecha_a_spanish($personal["per_fecha_alta"]), "per_fecha_alta");
Y la función sería algo así:
function muestra_campo_fecha($p_texto, $p_valor, $p_nombre_campo){
Código PHP:
$v_html = '<p>
<label>'.$p_texto.' <a onclick="show_calendar()" style="cursor: pointer;"><small><img src="images/calendario.jpg" /></small></a><br />
<input readonly="readonly" class="text" type="text" name="'.$p_nombre_campo.'" id="'.$p_nombre_campo.'" value="'.$p_valor.'" />
<div id="calendario" class="calendario_izquierda" style="display:none;position:relative;background-color: white">'.calendar_html().'</div>
</label>
</p>';
return $v_html;
}
El problema es que calendar_html llama es otra función y es ahí cuando se me estropea todo el código. ¿Exsite alguna función propia de php para estos casos?
Para salir del paso he podido hacer una especie de arreglo y en vez de llamar a una función primero defino las varialbes y después llamo a un include, quedaría de esta forma:
Código PHP:
<?php
$v_texto = "Fecha de Nacimiento";
$v_valor = $personal["per_fecha_nacimiento"];
$v_campo = "per_fecha_nacimiento";
include("fechas.php");
?>
Donde fechas.php lleva únicamente el siguiente código:
Código PHP:
<p>
<label><?php echo $v_texto; ?> <a onclick="show_calendar()" style="cursor: pointer;"><small><img src="images/calendario.jpg" /></small></a><br />
</label>
<input readonly="readonly" class="text" type="text" name="<?php echo $v_campo; ?>" id="<?php echo $v_campo; ?>" value="<?php echo convierte_fecha_a_spanish($v_valor)?>" />
<div id="calendario" class="calendario_izquierda" style="display:none;position:relative;background-color: white"><?php calendar_html(); ?></div>
</p>
Pero aunque funcione perfectamente no lo veo limpio y me gustaría saber si alguien sabe como hacer que funcione el problema que tengo, en resumidas cuentas sería:
¿como devolver desde una funcion una cadena de texto que llame a otra función?
Muchas gracias