Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Función que se imprime siempre que llama

Estas en el tema de Función que se imprime siempre que llama en el foro de PHP en Foros del Web. Código PHP: function  lang ( $message , $arrayvalues = "" ){     global  $con ;     if ( $message [ 0 ]== "m" ){          $message = substr ...
  #1 (permalink)  
Antiguo 07/07/2016, 10:25
 
Fecha de Ingreso: junio-2010
Mensajes: 106
Antigüedad: 13 años, 10 meses
Puntos: 1
Función que se imprime siempre que llama

Código PHP:
function lang($message,$arrayvalues=""){
    global 
$con;
    if (
$message[0]=="m"){
        
$message=substr($message1);
        
$message_query=mysqli_fetch_array(mysqli_query($con,"SELECT * FROM lang WHERE id_lang='".$message."'"),MYSQLI_ASSOC);
        echo 
urls_amigables($message_query [strtoupper(whichlangIm())]);
    } else {
        
$message_query=mysqli_fetch_array(mysqli_query($con,"SELECT * FROM lang WHERE id_lang='".$message."'"),MYSQLI_ASSOC);
        echo 
vsprintf($message_query [strtoupper(whichlangIm())],$arrayvalues);
    }
    
}
if (
$page==lang('m5')) {
            echo 
"HELOOOOOOOO";

Tengo esta función que busca en la base de datos cual es el mensaje y idioma correcto de cada id que se le passa. El problema viene cuando quiero usar esta funcion para otras cosas como comparar, por ejemplo, en el caso de el if final, primero imprime en pantalla el resultado de lang('m5') y luego muestra HELOOOO.

No creo que tuviera que ser asi, lang() es uno de los strings de dentro de la comparación, por lo que no entiendo porque me lo muestra en pantalla cada vez que lo solicito para alguna cosa.

Espero que se me haya entendido bien.

Espero que me puedan ayudar porque no se donde puede estar la confusión.
Saludos.
  #2 (permalink)  
Antiguo 07/07/2016, 10:32
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Información Respuesta: Función que se imprime siempre que llama

Hola Zipus,

para poder usar la funcion en comparaciones necesitas que la funcion te devuelva algo, ahora mismo lo unico que hace es imprimir por pantalla usando echo.

Para que una funcion de devuelva algo necesitas la clausula return, ejemplo:

Código PHP:
function sumar($a$b){
    return 
$a+$b;
}

if(
4==sumar(2,2))
    echo 
"Si es igual a 4";
else
    echo 
"No es igual a 4"
Saludos!
__________________
El problema de nuestra época consiste en que sus hombres no quieren ser útiles sino importantes.

Winston Churchill
  #3 (permalink)  
Antiguo 07/07/2016, 11:31
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Función que se imprime siempre que llama

Te recomiendo que consultes el manual: http://php.net/manual/es/language.functions.php
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #4 (permalink)  
Antiguo 07/07/2016, 11:34
 
Fecha de Ingreso: junio-2010
Mensajes: 106
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Función que se imprime siempre que llama

Código PHP:

function lang($message,$arrayvalues=""){
    global 
$con;
    if (
$message[0]=="m"){
        if (
$message[1]=="r"){
            
$message=substr($message2);
            
$message_query=mysqli_fetch_array(mysqli_query($con,"SELECT * FROM lang WHERE id_lang='".$message."'"),MYSQLI_ASSOC);
            return 
urls_amigables($message_query [strtoupper(whichlangIm())]);
        } else {
            
$message=substr($message1);
            
$message_query=mysqli_fetch_array(mysqli_query($con,"SELECT * FROM lang WHERE id_lang='".$message."'"),MYSQLI_ASSOC);
            echo 
urls_amigables($message_query [strtoupper(whichlangIm())]);
        }
    } else {
        
$message_query=mysqli_fetch_array(mysqli_query($con,"SELECT * FROM lang WHERE id_lang='".$message."'"),MYSQLI_ASSOC);
        echo 
vsprintf($message_query [strtoupper(whichlangIm())],$arrayvalues);
    }
    
}
function 
determine_content($page){
    if (
$page==lang('mr5') ) {
        echo 
"OKEEEY";
    }
}
determine_content("sobre-nosotros"); 
El problema sigue sucediendo, se imprime en pantalla lang('mr5') como si no le importara para nada que esta dentro de un if, en el qual ya se tiene en cuenta lo de return. Es como si alguien le dijera que cuando php recorra esta parte del script esta funcion debe imprimirse en pantalla si o si.

Saludos!
  #5 (permalink)  
Antiguo 08/07/2016, 06:58
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Función que se imprime siempre que llama

Claro lo que hace que imprima en pantalla son los echo. Aún que puede que no sea esa función, puede que en las funciones que utilizas dentro de esa como urls_amigables() también muestran con n echo o print o similar
__________________
Unset($vida['malRollo']);
  #6 (permalink)  
Antiguo 08/07/2016, 08:46
 
Fecha de Ingreso: junio-2010
Mensajes: 106
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Función que se imprime siempre que llama

Muchas gracias! Efectivament era eso, no me habia fijado :S

Etiquetas: echo, funcion, pantalla
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:26.