Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/09/2014, 05:51
kavalerian
 
Fecha de Ingreso: junio-2003
Ubicación: Valencia
Mensajes: 334
Antigüedad: 21 años, 6 meses
Puntos: 0
devolver desde una funcion una cadena de texto que llame a otra función

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&nbsp;&nbsp;<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.'&nbsp;&nbsp;<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?>&nbsp;&nbsp;<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
__________________
http://reunga.com
Desarrollo de aplicaciones informáticas