Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] recoger post por función

Estas en el tema de recoger post por función en el foro de PHP en Foros del Web. Quiero recoger los post de un formulario, si tienen contenido que devuelva el contenido, si estan vacios que devuelvan un valor por defecto o la ...
  #1 (permalink)  
Antiguo 07/06/2014, 13:15
Avatar de Durgeoble  
Fecha de Ingreso: marzo-2003
Mensajes: 462
Antigüedad: 21 años, 1 mes
Puntos: 2
recoger post por función

Quiero recoger los post de un formulario, si tienen contenido que devuelva el contenido, si estan vacios que devuelvan un valor por defecto o la cadena "vacio"
Código PHP:
function recogepost($posteado$defecto) {
    if (
is_null($_post['$posteado'])) {
        echo 
"$defecto";
    } else {
        if (
is_null($defecto)) {
            
$devuelve 'vacio';
        } else {
            
$devuelve htmlspecialchars($_POST['$posteado']);
        }
        echo 
"$devuelve$";
    }

sin embargo, no funciona, he probado la función de las siguientes formas
Código PHP:
$lnombre recogepost('nombre'$cname);
$lnombre recogepost(nombre$cname); 
evidentemente hago algo mal ¿pero que?
__________________
Todas mis respuestas funcionaran correctamente en aquellos navegadores que respeten los estandares.
  #2 (permalink)  
Antiguo 07/06/2014, 13:29
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: recoger post por función

En la primera comparación, estás usando $_post en vez de $_POST y, no debes usar comillas simples para delimitar el nombre del campo, como es una variable, es mejor que omitas las comillas o, si ya es por gusto, entonces usar comillas dobles.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 07/06/2014, 14:05
Avatar de Durgeoble  
Fecha de Ingreso: marzo-2003
Mensajes: 462
Antigüedad: 21 años, 1 mes
Puntos: 2
Respuesta: recoger post por función

Vaya, la respuesta ha sido rápida, sin embargo continua sin funcionar, de hecho no devuelve nada visible.

Código PHP:
function recogepost($posteado$defecto) {
    if (
is_null(htmlspecialchars($_POST[$posteado]))) {
        echo 
"$defecto";
    } else {
        if (
is_null($defecto)) {
            
$devuelve 'vacio';
        } else {
            
$devuelve htmlspecialchars($_POST[$posteado]);
        }
        echo 
"$devuelve";
    }

__________________
Todas mis respuestas funcionaran correctamente en aquellos navegadores que respeten los estandares.
  #4 (permalink)  
Antiguo 07/06/2014, 14:08
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: recoger post por función

Para que devuelva algo tienes que especificarlo dentro de la función:

return $devuelve;
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 08/06/2014, 12:45
Avatar de Durgeoble  
Fecha de Ingreso: marzo-2003
Mensajes: 462
Antigüedad: 21 años, 1 mes
Puntos: 2
Respuesta: recoger post por función

Código PHP:
function recogepost($posteado$defecto '') {
    
/* comprueba si existe el dato y si su valor es '' */
    
if (isset($_POST[$posteado])) {
        if (
$_POST[$posteado] != '') {
            
$devuelve htmlspecialchars($_POST[$posteado]);
        }
        
/* si no tiene valor el post pone el que le hemos puesto, si no ponemos nada pone error */ else {
            if (
$defecto != '') {
                
$devuelve $defecto;
            } else {
                
$devuelve 'error';
            }
        }
    }
    
/* si no existe el campo post pedido devuelve no seteado */ else {
        
$devuelve 'no_seteado';
    }
    return 
$devuelve;

Al final este código me funciona
__________________
Todas mis respuestas funcionaran correctamente en aquellos navegadores que respeten los estandares.

Etiquetas: post
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 06:36.