3

Que tal amigos mi problema es que trato de llamar una funcion php en un html y me sale este error: Fatal error: Call to undefined function familia() tengo el include ya declarado llamando al archivo que contiene la funcion pero aun persiste, aqui dejo el codigo de la cabecera:

<?php
    session_start();
    include('Default/head2.php');
    include('../model/buscar.php');
    error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
    if(!isset($_SESSION["id_cedula"]) || $_SESSION["id_cedula"]==null){
    print "<script>alert(\"¡Acceso Invalido!\");window.location='../index.php';</script>";
}?>

este es el codigo donde llamo a la función:

<?php familia(); ?>

y este es el codigo de la funcion:

<?php

$conexion = new mysqli('localhost','root','','empleados');
// error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
$cedula = isset($_POST['ciemp']) ? $_POST['ciemp'] : NULL;
// $cedula = $_POST['ciemp'];
$consulta = "SELECT a.nombre, a.apellido, a.nacionalidad, a.g_sang, a.f_nacimiento, a.l_nacimiento, a.e_civil, a.t_camisa, a.t_pantalon, a.t_calzado, a.zurdo, a.discapacidad, a.direccion, a.email, a.pcontacto, a.parentesco, a.t_pcontacto, b.nomb_familiar_1, b.nomb_familiar_2, b.apell_familiar_1, b.apell_familiar_2, b.parentesco AS parent, b.ced_empleado AS ci FROM empleado AS a, familiares AS b WHERE a.cedula = '$cedula' AND b.ced_empleado = a.cedula";

$result = $conexion->query($consulta);

if($result->num_rows > 0){

    $fila = $result->fetch_array();

    //DATO DE EDAD
        $f_naci = $fila['f_nacimiento'];
        $fecha = time() - strtotime($f_naci);
        $edad = floor($fecha / 31556926);

    //DATO DE PAIS
        $pais1 = $fila['nacionalidad'];
        if ($pais1 == "Venezolano") {
            $pais = "Venezuela";
        }else{
            $pais = "";
        }

    //DATO DE DISCAPACIDAD
        $lat = $fila['zurdo'];
        if ($lat == "N") {
            $l = "Derecho";
        }else{
            $l = "Izquierdo";
        }



    //DATO DE CONYUGUE
        include("conexion2.php");
        $query="SELECT * FROM familiares WHERE ced_empleado = '$cedula' AND parentesco ='1'";
        $resultado = mysql_query($query);
        $rest = mysql_fetch_array ($resultado);
        $nombreCony = $rest['nomb_familiar_1']." ".$rest['nomb_familiar_2']." ".$rest['apell_familiar_1']." ".$rest['apell_familiar_2'];

        //DATO DE HIJOS
        $q="SELECT parentesco FROM familiares WHERE ced_empleado = '$cedula' AND parentesco='2'";
        $r = mysql_query($q);

        $nhij = mysql_num_rows($r);
        if ($nhij > 0) {
            $hijos = "Si";
            if ($hijos == "Si") {
                for ($i=0; $i < $nhij; $i++) { 
                    $n = $i+1;
                }
            }
        }else{
            $hijos = "No";
        }

        //OTRO
        function familia(){
        $qmy = "SELECT f.ced_familiar, f.nomb_familiar_1, f.nomb_familiar_2, f.apell_familiar_1, f.apell_familiar_2, p.desc_parentesco AS parentesco, f.f_nac FROM familiares AS f INNER JOIN parentesco AS p ON f.parentesco = p.cod_parentesco  WHERE ced_empleado = '$cedula'";
        $my = mysql_query($qmy);
        $item = 0;
        if(mysql_num_rows($my)>0){
            while($mostrar = mysql_fetch_array($my)){
                $item = $item+1;
                echo '<tr>
                        <th>'.$item.'</th>
                        <td>'.$mostrar['nomb_familiar_1']." ".$mostrar['nomb_familiar_2']." ".$mostrar['apell_familiar_1']." ".$mostrar['apell_familiar_2'].'</td>
                        <td>
                            <select class="select" name="select">
                                <option value="NULL" selected></option>
                                <option value="value2" >SI</option>
                                <option value="value3">NO</option>
                            </select>
                        </td>
                        <td>'.$mostrar['parentesco'].'</td>
                        <td>'.$mostrar['f_nac'].'</td>
                        <td>'.$mostrar['ced_familiar'].'</td>
                    </tr>';
            }
        }else{
        echo '<tr><td colspan="6">No se encontraron registros...</td></tr>';
        }
}
//ENVIO DE DATOS A FORMULARIO
    $data = new stdClass();
    $data->nombre = utf8_encode($fila['nombre']." ".$fila['apellido']);
    $data->fechanaci = utf8_encode($fila['f_nacimiento']);
    $data->edad = $edad;
    $data->lnaci = utf8_encode($fila['l_nacimiento']);
    $data->nacional = utf8_encode($fila['nacionalidad']);
    $data->gsang = utf8_encode($fila['g_sang']);
    $data->pais = utf8_encode($pais);
    $data->ecivil = $fila['e_civil'];
    $data->nombcunyu = utf8_encode($nombreCony);
    $data->hijos = $hijos;
    $data->canthijos = $n;
    $data->camisa = $fila['t_camisa'];
    $data->pantalon = $fila['t_pantalon'];
    $data->zapato = $fila['t_calzado'];
    $data->lateral = $l;
    $data->discapacidad = $fila['discapacidad'];
    $data->direccion = utf8_encode($fila['direccion']);
    $data->email = utf8_encode($fila['email']);
    $data->nombcontac = utf8_encode($fila['pcontacto']);
    $data->parentesco = utf8_encode($fila['parentesco']);
    $data->tlf = $fila['t_pcontacto'];

echo json_encode($data);}
?>
ijar
  • 31
  • 2
  • 2
    ¿Podrías poner el código de dicha función? – Charlie Dec 19 '17 at 18:56
  • 1
    Buenas bienvenido a **StackOverflow** en español por favor antes de preguntar primero ve [¿Cómo elaboro una buena pregunta?](https://es.stackoverflow.com/help/how-to-ask) y revisa también [Cómo crear un ejemplo mínimo, completo y verificable.](https://es.stackoverflow.com/help/mcve) edita tu pregunta y mejorarla para tener una respuesta que realmente te ayude. – Luis Daniel Rovira Contreras Dec 19 '17 at 19:04
  • 1
    la función `familia` está definida en `buscar.php`? ¿En qué parte ejecutas `familia()`? No la veo en el primer script. Recuerda poner el punto y coma después de `familia();` – ffflabs Dec 19 '17 at 20:25
  • Si, esta definida la funcion. En mi archivo p_datosPersonales.php dentro de un formulario el cual tiene codigo HTML. En el primier script se encuentra enlazado el archivo buscar.php. Aun colocando el punto y coma genera el mismo error. – ijar Dec 19 '17 at 20:33
  • ya coloque el codigo donde se encuentra la funcion @amenadiel – ijar Dec 20 '17 at 13:52
  • No entiendo bien la estructura o enlaces a tus scripts. Dices que la función `familia()` está implementada en `buscar.php` y que haces el llamado de la misma en `p_datosPersonales.php`. Pero mi duda es: ¿En `p_datosPersonales.php` tienes incluído el script de `buscar.php`? – Adriana Hernández Dec 20 '17 at 14:30
  • si, lo unico incluido en `p_datosPersonales.php` es en la parte superior un `include('../model/buscar.php');` y el llamado a la funcion: `funcion();` – ijar Dec 20 '17 at 14:37
  • Sigo sin ver en qué script llamas a `familia()`. Veo donde la defines, pero no dónde la llamas. Por otro lado, en vez de definir la función dentro de dos bloques `if` debiera estar definida en su propio archivo, y recibir como parámetro `$cedula` porque no va a ver esa variable, definida afuera, dentro de la función (a menos que pusieras `use ($cedula)`. Tampoco entiendo por qué tienes dos conexiones, una `mysqli` y otra aparentemente usando el driver deprecado `mysql` – ffflabs Dec 20 '17 at 16:03
  • Te recomiendo que leas sobre [inyección SQL](https://es.stackoverflow.com/q/10518/250) y [cómo evitarla en PHP](https://es.stackoverflow.com/q/18232/250) y [por qué no deberían usarse los métodos mysql_*](https://es.stackoverflow.com/q/75123/250). El código que compartes presenta vulnerabilidades graves de seguridad, puede sufrir ese tipo de ataques y no debería usarse en un entorno de producción. – Alvaro Montoro Dec 20 '17 at 16:39
  • Darle un buen formato al código (p.e. indentación, apertura/cierre de llaves consistente) es de gran ayuda para mantenerlo. Por ejemplo, parece que la función se define dentro de un `if`, si ese es el caso, ¿qué ocurre si no se entra dentro de ese `if`? – Alvaro Montoro Dec 20 '17 at 16:48

1 Answers1

-2

Prueba con

<?php familia(); ?>

Sin el punto y coma no estás mandando a llamar la función para que se ejecute.

akko
  • 2,378
  • 2
  • 27
  • 56