Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] ¿Como hago para que la función retorne 2 variables?

Estas en el tema de ¿Como hago para que la función retorne 2 variables? en el foro de PHP en Foros del Web. Buenas noches! estoy utilizando esta función llamada "validar_datos" para validar que el campo no este vacio o existe en la base de datos entonces el ...
  #1 (permalink)  
Antiguo 26/01/2015, 11:06
 
Fecha de Ingreso: septiembre-2011
Mensajes: 233
Antigüedad: 13 años, 3 meses
Puntos: 1
¿Como hago para que la función retorne 2 variables?

Buenas noches! estoy utilizando esta función llamada "validar_datos" para validar que el campo no este vacio o existe en la base de datos entonces el error es true y el mensaje, pero como hago para que esa función me retorne el mensaje también? porque ahorita solo se está retornando el error, este es el código que estoy utilizando:

Código PHP:
$respuesta=false;
$mensajeError="No se puede ejecutar la aplicación";

require_once 
'libreria.php';
    
    
//verificar que existan las variables post
    
if(isset($_POST) && !empty($_POST))
    {
        
$clase = new poo();    
        switch (
$_POST['accion']) {
            case 
'addHab':
                if(
validar_datos($clase))
                {
                    foreach (
$_POST as $ind => $valor) {
                        $
$ind=trim($valor);
                    }
                    
//aqui va la parte de insertar
                    
{
                        
$respuesta=true;
                        
$mensajeError="Se ha agregado el registro.";
                    }
                    else{
                        
$mensajeError="Error! No se ha agregado el registro.";
                    }
                }
                else{
                    
$mensajeError=$mensaje;//aqui no me retorna el valor del mensaje de la función validar
                
}
                

                break;
            
            default:
                
$mensajeError="Esa acción no se encuentra disponible.";
                break;
        }
    }

    function 
validar_datos(&$clase)
    {
        foreach (
$_POST as $ind => $valor) {
            $
$ind=trim($valor);
        }
        
$error=false;

        if(!empty(
$cedula_txt))
        {
            if(
is_numeric($cedula_txt))
            {
                if(
strlen($cedula_txt)==OR strlen($cedula_txt)==7)
                {
                    if(
$clase->Existe(1,"censodemografico","Cedula",$cedula_txt)) 
                    {
                        
$error=true;
                        
$mensaje"La cédula ya existe";
                    }
                }
                else
                {
                    
$error=true;
                    
$mensaje=  "La cédula debe de tener 7 o 8 dígitos";
                }
            }
            else
            {
                
$error=true;
                
$mensaje=  "Cédula no válida";
            }
        }
        else
        {
            
$error=true;
            
$mensaje"La Cédula no puede estar vacía";
        }
        return !
$error;
    } 
Como hago para que retorne además el error también el mensaje?, se puede hacer eso?
  #2 (permalink)  
Antiguo 26/01/2015, 11:17
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: ¿Como hago para que la función retorne 2 variables?

Utiliza arreglos para eso: http://php.net/manual/es/language.types.array.php
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 27/01/2015, 01:31
Avatar de toledo_nocturno  
Fecha de Ingreso: agosto-2011
Ubicación: Under the northen star
Mensajes: 86
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: ¿Como hago para que la función retorne 2 variables?

Muy buenas,

Hasta donde yo se, las funciones por definicion devuelven UN solo valor como maximo. En este caso, como lo que te interesa saber es:
a) si hay error o no
b) que error exactamente en caso de haberlo
Podrias hacer un manejo mas especifico del control de excepciones de la base de datos, y retornar el error. Si no hay nada, ya sabes que es un TRUE, y si hay algo, estas retornando especificamente el error que te haya dado a nivel de BBDD.

Espero que te sea de ayuda!
__________________
diseño web | Clan Rol
  #4 (permalink)  
Antiguo 27/01/2015, 02:20
 
Fecha de Ingreso: septiembre-2014
Mensajes: 180
Antigüedad: 10 años, 3 meses
Puntos: 14
Respuesta: ¿Como hago para que la función retorne 2 variables?

Como te han comentado, utiliza un array como retorno. Algo como:

Código PHP:
Ver original
  1. function miFuncion()
  2. {
  3.     $error = true    //Variable que indica si hay error o no
  4.     $mensaje = "Mi mensaje"    //Mensaje que quieras retornar
  5.  
  6.     return array($error, $mensaje);
  7. }

Luego, para recuperar el valor tanto del error como del mensaje tienes que llamar a la función usando "list" (http://php.net/manual/es/function.list.php):

list($error, $mensaje) = miFuncion();

Con esto consigues que en estas dos variables tengas en $error el primer valor del array que devuelve miFuncion() y en $mensaje tengas el segundo.

Creo que esta idea te puede servir ;)
__________________
Unelink.es - VPS, servidores dedicados, hosting y dominios. 10 años a tu lado.
  #5 (permalink)  
Antiguo 27/01/2015, 14:00
 
Fecha de Ingreso: septiembre-2011
Mensajes: 233
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: ¿Como hago para que la función retorne 2 variables?

Cita:
Iniciado por json Ver Mensaje
Como te han comentado, utiliza un array como retorno. Algo como:

Luego, para recuperar el valor tanto del error como del mensaje tienes que llamar a la función usando "list" (http://php.net/manual/es/function.list.php):

list($error, $mensaje) = miFuncion();

Con esto consigues que en estas dos variables tengas en $error el primer valor del array que devuelve miFuncion() y en $mensaje tengas el segundo.
Hola gracias por responderme. Aplique la solución que me comento hhs y json y si me funcionó.
  #6 (permalink)  
Antiguo 28/01/2015, 02:41
 
Fecha de Ingreso: septiembre-2014
Mensajes: 180
Antigüedad: 10 años, 3 meses
Puntos: 14
Respuesta: ¿Como hago para que la función retorne 2 variables?

__________________
Unelink.es - VPS, servidores dedicados, hosting y dominios. 10 años a tu lado.

Etiquetas: registro, retorne, variable
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 05:56.