Foros del Web » Programando para Internet » PHP »

Llamada a una función, dentro de otra función

Estas en el tema de Llamada a una función, dentro de otra función en el foro de PHP en Foros del Web. Hola a todos! a ver si me podéis echar una manita para solucionar un problemita. Tengo un formulario con dos campos: un campo proyecto que ...
  #1 (permalink)  
Antiguo 13/04/2011, 03:18
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años, 7 meses
Puntos: 3
Llamada a una función, dentro de otra función

Hola a todos! a ver si me podéis echar una manita para solucionar un problemita.
Tengo un formulario con dos campos: un campo proyecto que se insertará en la tabla de proyectos y un campo interlocutor que obtengo de un desplegable.

Ademas del dato insertado en la tabla de proyectos, tengo otra tabla llamada proyectos_interlocutores donde se guardan los identificadores de ambos.
Por tanto, he creado otra función que me de el id único del interlocutor, ya que el del proyecto lo obtengo con mysql_insert_id().

Esta es la función que obtiene el identificador del interlocutor. Si hago un $query, dentro de esta función, se ve que toma los datos correctamente, sin embargo, el problema es que no se asigna a la variable $identificadorinterlocutor de la siguiente función.

Código:
    public  function obtenerIdInterlocutor($interlocutor){
	$query="Select Id_inerlocutor FROM interlocutores WHERE interlocutor='$interlocutor';";
	$consulta=new Consulta($query);
	   if(!$consulta){ 
		throw new Exception("Error al obtener el identificador: ".$interlocutor);
             }

    }
Y esta la función que recoge los datos del formulario e inserta en las dos tablas.

Código:
    public static function crearProyecto($nombreproyecto, $interlocutor){
        $query="INSERT INTO proyectos ( proyecto ) VALUES ('$nombreproyecto');";
            $consulta = new Consulta($query);
            	$query;
                if(!$consulta) {
                    throw new Exception("Error al crear el Proyecto: ".$nombreproyecto);
                }
	$id = $consulta->ultimo_identificador();
	$fecha_actual = date("d-m-Y");
	
	$identificadorinterlocutor=Proyecto::obtenerIdInterlocutor($interlocutor);
	echo $identificadorinterlocutor;
echo $identificadorinterlocutor;

	$query2="INSERT INTO interlocutor_proyecto (idinterlocutor,idproyecto, responsablehabitual, fechainicio) VALUES ('$identificadorinterlocutor', '$id', 1, '$fecha_actual');";
	    $consulta2=new Consulta($query2);
	    if(!$consulta2) {
                    throw new Exception("Error al asignar el". $interlocutor." al proyecto ".$proyecto);
                }
        return $id;
    }
Gracias!
  #2 (permalink)  
Antiguo 13/04/2011, 07:20
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 50
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: Llamada a una función, dentro de otra función

no tienes puesto todo el codigo pero creo que si haces

$id_interlocutor = $consulta->ultimo_identificador();

despues de

$consulta2=new Consulta($query2);

es decir justo debajo de esa linea o mas adelante pero siempre despues de esa ya obtendrias el otro id, porque por

lo que parece la funcion ultimo_identificador de la clase consulta lo que hace es un return de mysql_insert_id() por lo

tanto una vez hagas el nuevo insert ya esa funcion te retorna el id de la ultima insercion en la BD

si no fuese esto aclara un poco mas el problema.

saludos
  #3 (permalink)  
Antiguo 13/04/2011, 08:08
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años, 7 meses
Puntos: 3
Respuesta: Llamada a una función, dentro de otra función

gracias por contestar!
igual no me he explicado bien! en el formulario tengo 2 campo:
  • El primero sería una caja de texto donde introduzco el nombre del proyecto
  • El segundo un desplegable donde eliijo un interlocutor asignado al proyecto
Primero se anexa el contenido de la caja proyecto a una tabla de proyectos.
En la segunda tabla, lo que quiero es introducir el identificador del proyecto que obtengo gracias a "$id = $consulta->ultimo_identificador(); " que efectivamente es "mysql_insert_id();", y el identificador del Interlocutor que ha asignado, que obtengo a través de una consulta a una tabla de interlocutores.

Si en la función obtenerIdInterlocutor($interlocutor) hago un echo $query, veo que hace correctamente la consulta, sin embargo mi problema es que ese valor no lo asigna a $identificadorinterlocutor!

Código:
$identificadorinterlocutor=Proyecto::obtenerIdInterlocutor($interlocutor);
Gracias de nuevo!
  #4 (permalink)  
Antiguo 13/04/2011, 09:45
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 50
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: Llamada a una función, dentro de otra función

en el formulario donde metes los datos del proyecto el interlocutor lo elijes de un desplegable no ?, en este caso puedes pasar el id del interlocutor en el value de cada option del desplegable y ya lo tendrias sin necesidad de ninguna consulta, si no es asi por favor comenta un poco mas la estructura de tu formulario.

saludos.
  #5 (permalink)  
Antiguo 14/04/2011, 03:02
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años, 7 meses
Puntos: 3
Respuesta: Llamada a una función, dentro de otra función

efectivamente....
muchas gracias!!
  #6 (permalink)  
Antiguo 14/04/2011, 08:42
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 50
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: Llamada a una función, dentro de otra función

has solucionado ya el problema ?

saludos.
  #7 (permalink)  
Antiguo 14/04/2011, 10:04
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años, 7 meses
Puntos: 3
Respuesta: Llamada a una función, dentro de otra función

si si elier_rp.
gracias de nuevo!

Etiquetas: llamada
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 12:15.