Foros del Web » Programando para Internet » PHP »

Pasar Variable por post a función

Estas en el tema de Pasar Variable por post a función en el foro de PHP en Foros del Web. Saludos amigos, tengo una duda, tengo un formulario mediante el cual intento pasar una varible por metodo post a una función, el detalle es que ...
  #1 (permalink)  
Antiguo 24/04/2006, 08:37
 
Fecha de Ingreso: noviembre-2004
Mensajes: 159
Antigüedad: 20 años
Puntos: 0
Exclamación Pasar Variable por post a función

Saludos amigos, tengo una duda, tengo un formulario mediante el cual intento pasar una varible por metodo post a una función, el detalle es que dentro de la función existe una consulta que debe recibir el valor de esa variable pero no lo recibe (se esta perdiendo).


archivo gb.class.php

Código PHP:

//esta es la funcion a la cual quiero hacerle llegar el valor de esa variable.

 
function get_entries($entry,$last_entry) {


  
// $ valor es la variable que recibe por metodo post
      
        
$valor = (isset($_POST['valor']));
        global 
$GB_UPLOAD$GB_PG;
        
        
$entry intval($entry);
        
$last_entry intval($last_entry);
        
        
$img = new gb_image();
        
$img->set_border_size($this->db->VARS["img_width"], $this->db->VARS["img_height"]);
        
$LANG = &$this->db->LANG;
        
$id $this->total-$entry;
        
$HOST '';
        
$COMMENT '';
        
$GB_ENTRIES '';
        
$i=0;
        
$template['entry'] = $this->template->get_template($this->db->GB_TPL['entry']);
        
$template['com'] = $this->template->get_template($this->db->GB_TPL['com']);
        
$template['url'] = $this->template->get_template($this->db->GB_TPL['url']);
        
$template['icq'] = $this->template->get_template($this->db->GB_TPL['icq']);
        
$template['aim'] = $this->template->get_template($this->db->GB_TPL['aim']);
        
$template['email'] = $this->template->get_template($this->db->GB_TPL['email']);
        
$template['image'] = $this->template->get_template($this->db->GB_TPL['image']);     
        
$result $this->db->query("select x.*, y.p_filename, y.width, y.height from ".$this->db->table['data']." x left join ".$this->db->table['pics']." y on 



// se supone $valor es el valor que recibe desde mi formulario por metodo post
// pero no lo recibe... 


(x.id=y.msg_id and y.book_id=2 )  
              where x.type='$valor' order by x.id desc limit $entry, $last_entry"
        
);
        





while (
$row $this->db->fetch_array($result)) {
            
$row['email2'] = "";
            
$DATE $this->db->DateFormat($row['date']);
            
$MESSAGE nl2br($row['comment']);
            
            
            if (
$row['p_filename'] && ereg("^img-",$row['p_filename'])) {
                if (
file_exists("$this->path/$GB_UPLOAD/t_$row[p_filename]")) {
                    
$row['p_filename'] = "t_$row[p_filename]";
                }
                
$new_img_size $img->get_img_size_format($row['width'], $row['height']);
                eval(
"\$USER_PIC = \"".$template['image']."\";");
            } else {
                
$USER_PIC '';
            }
            if (
$this->db->VARS["smilies"] == 1) {
                
$MESSAGE $this->db->emotion($MESSAGE);
            }
            if (!
$row['location']) {
                
$row['location'] = "-";
            }
            
$bgcolor = ($i 2) ? $this->db->VARS["tb_color_2"] : $this->db->VARS["tb_color_1"];
            
$i++;
            if (
$row['url']) {
                eval(
"\$URL = \"".$template['url']."\";");
            } else {
                
$URL '';
            }
            if (
$row['icq'] && $this->db->VARS["allow_icq"]==1) {
                eval(
"\$ICQ = \"".$template['icq']."\";");
            } else {
                
$ICQ '';
            }
            if (
$row['aim'] && $this->db->VARS["allow_aim"]==1) {
                eval(
"\$AIM = \"".$template['aim']."\";");
            } else {
                
$AIM '';
            }
            if (
$row['email']) {
                
/* E-mail Hack */
                
$row['email2'] = str_replace("@""(at)"$row['email']);
                
$row['email2'] = str_replace(".""(dot)"$row['email2']); 
                
$row['email'] = "javascript:getEmail('".$this->db->encryptEmail("mailto:".$row['email'])."')";              
                eval(
"\$EMAIL = \"".$template['email']."\";");
            } else {
                
$EMAIL '';
            }
            if (
$this->db->VARS["allow_gender"]==1) {
                
$GENDER = ($row['gender']=="f") ? "&nbsp;<img src=\"$GB_PG[base_url]/img/female.gif\" width=\"12\" height=\"12\">" "&nbsp;<img src=\"$GB_PG[base_url]/img/male.gif\" width=\"12\" height=\"12\">";
            } else {
                
$GENDER '';
            }
            if (
$this->db->VARS["show_ip"] == 1) {
                
$hostname = ( eregi("^[-a-z_]+"$row['host']) ) ? "Host" "IP";
                
$HOST "$hostname: $row[host]\n";
            }
            
$this->db->query("select * from ".$this->db->table['com']." where id='$row[id]'  order by com_id asc");
            while (
$com $this->db->fetch_array($this->db->result)) {
                
$com['comments'] = nl2br($com['comments']);
                eval(
"\$COMMENT .= \"".$template['com']."\";");
            }          
            
$GB_COMMENT = (IS_MODULE && eregi("\?",$GB_PG["comment"])) ? "$GB_PG[comment]&gb_id=$row[id]" "$GB_PG[comment]?gb_id=$row[id]"
            eval(
"\$GB_ENTRIES .= \"".$template['entry']."\";");
            
$COMMENT "";
            
$id--;
        }
        
$TPL['GB_ENTRIES'] = $GB_ENTRIES;
        return 
$TPL;
    }

}

?> 
Esta clase esta contenida como (include) en un archivo Index.php

Es decir Index.php incluye a gb.class.php que es la que esta arriba


Index.php

He recortado partes no necesarias del codigo dejando solo las que van a trabajar.

Código PHP:

if (IS_MODULE) {

    if (!
eregi("modules.php"$_SERVER['PHP_SELF'])) {
        die (
"You can't access this file directly...");
    }
    
$ModName basename(dirname__FILE__ ));

    
ob_start();
    include(
"header.php");

    
$GB_PG["base_url"] .= "/modules/$ModName";

    
$GB_SELF basename($_SERVER['PHP_SELF']);
    
$GB_PG["index"]    = "$GB_SELF?op=modload&name=$ModName&file=index";
    
$GB_PG["admin"]    = "$GB_SELF?op=modload&name=$ModName&file=index&agbook=admin";
    
$GB_PG["comment"]  = "$GB_SELF?op=modload&name=$ModName&file=index&agbook=comment";
    
$GB_PG["addentry"] = "$GB_SELF?op=modload&name=$ModName&file=index&agbook=addentry";

    if (!isset(
$agbook)) {
        
$agbook '';
    }

    switch (
$agbook) {

                case 
"addentry":
            include_once 
$include_path."/lib/vars.class.php";
            include_once 
$include_path."/lib/add.class.php";
            include_once 
$include_path."/lib/phrase.class.php";
            
$gb_post = new addentry($include_path);
            if (isset(
$_POST["gb_action"])) {
                
                
                
$gb_post->type = (isset($_POST["gb_type"])) ? $_POST["gb_type"] : '';
                
$gb_post->name = (isset($_POST["gb_name"])) ? $_POST["gb_name"] : '';
                
$gb_post->email = (isset($_POST["gb_email"])) ? $_POST["gb_email"] : '';
                
$gb_post->url = (isset($_POST["gb_url"])) ? $_POST["gb_url"] : '';
                
$gb_post->comment = (isset($_POST["gb_comment"])) ? $_POST["gb_comment"] : '';
                
$gb_post->location = (isset($_POST["gb_location"])) ? $_POST["gb_location"] : '';
                
$gb_post->icq = (isset($_POST["gb_icq"])) ? $_POST["gb_icq"] : 0;
                
$gb_post->aim = (isset($_POST["gb_aim"])) ? $_POST["gb_aim"] : '';
                
$gb_post->gender = (isset($_POST["gb_gender"])) ? $_POST["gb_gender"] : '';
                
$gb_post->userfile = (isset($_FILES["userfile"]["tmp_name"]) && $_FILES["userfile"]["tmp_name"] != "") ? $_FILES '';
                
$gb_post->user_img = (isset($_POST["gb_user_img"])) ? $_POST["gb_user_img"] : '';
                
$gb_post->preview = (isset($_POST["gb_preview"])) ? 0;
                
$gb_post->private = (isset($_POST["gb_private"])) ? 0;
                
$gb_post->token = (isset($_POST["gb_token"])) ? $_POST["gb_token"] : '';
                
$gb_post->gb_captcha = (isset($_POST["gb_captcha"])) ? $_POST["gb_captcha"] : '';
                echo 
$gb_post->process($_POST["gb_action"]);
            } else {
                echo 
$gb_post->process();
            }
            
$gb_post->db->close_db();
            break;

        default:
            
            include_once 
$include_path."/lib/vars.class.php";
            include_once 
$include_path."/lib/gb.class.php";
            
$gb = new guestbook($include_path);
            
$entry = (isset($_GET["entry"])) ? $_GET["entry"] : 0;
            
$entry = (isset($_POST["entry"])) ? $_POST["entry"] : $entry;
            
            
            
            
            echo 
$gb->show_entries(intval($entry));
            
$gb->db->close_db();
    }
    
ob_end_flush();
    
$base_path dirname(dirname($include_path));
    
chdir("$base_path");
    include(
"$base_path/footer.php");

} else {
    include_once 
$include_path."/lib/vars.class.php";
    include_once 
$include_path."/lib/gb.class.php";
    
$gb = new guestbook($include_path);
    
$entry = (isset($_GET["entry"])) ? $_GET["entry"] : 0;
    
$entry = (isset($_POST["entry"])) ? $_POST["entry"] : $entry;
    
            
            
    echo 
$gb->show_entries(intval($entry));
    
}
?> 
aqui esta mi formulario desde donde propago la variable $valor.

Código HTML:
//y este es mi formulario

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<p>Select Type </p>
<form id="form1" name="form1" method="post" action="index.php">
  <label>
  <select name="valor" size="1" id="valor">
    <option value="false">Please Select</option>
    <option value="0">0</option>
    <option value="2">2</option>
  </select>
  </label>
  <p>
    <label>
    <input type="submit" name="Submit" value="Enviar" />
    </label>
  </p>
</form>
<p>&nbsp;</p>
</body>
</html> 
Alguien me puede decir que estoy haciendo mal? porque el valor de esa variable no se esta propagando bien...

Muchas gracias

A. Acosta
  #2 (permalink)  
Antiguo 24/04/2006, 08:58
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 11 meses
Puntos: 1
Ahí donde pones:

$valor = (isset($_POST['valor']));

coloca un valor constante y ve si funciona. Así al menos sabrás si es culpa de tu formulario o bien, de la forma de manejar tu variable y acotamos el problema.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #3 (permalink)  
Antiguo 24/04/2006, 10:00
 
Fecha de Ingreso: noviembre-2004
Mensajes: 159
Antigüedad: 20 años
Puntos: 0
no Uamistad, no es culpa del formulario, es la forma en como manejo mi variable.. la funcion no la esta recibiendo y me muestra siempre un resultado en la consulta asi tenga otros valores que registren mas resultados ...
  #4 (permalink)  
Antiguo 24/04/2006, 10:03
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 8 meses
Puntos: 33
¿Porque no se lo pasas como parametro dentro de la funcion?
  #5 (permalink)  
Antiguo 24/04/2006, 10:11
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 18 años, 7 meses
Puntos: 2
No se si será el error, pero la instrucción:

$valor = (isset($_POST['valor']));

le va a dar a $valor un valor booleano, no el contenido de la variable $_POST['valor']. Creo que debería ser así:

Código PHP:
<?
$valor 
$_POST['valor'];
?>
Saludos.
  #6 (permalink)  
Antiguo 24/04/2006, 10:26
 
Fecha de Ingreso: noviembre-2004
Mensajes: 159
Antigüedad: 20 años
Puntos: 0
Listo Amigo, notwen , funcion... :D tenias razon le estaba dando un valor booleano :S

Pero tambien me interesaria saber como pasarlo como parametro a una funcion creo que el amigo Mauled planteo esa respuesta... Si es posible que nos des un detalle o un ejemplo del mismo..

Muchas gracias amigos..

Saludos

A. Acosta
  #7 (permalink)  
Antiguo 24/04/2006, 10:36
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 18 años, 7 meses
Puntos: 2
Para pasarlo como parámetro basta con modificar la definición de la función:

Código PHP:
<?
function get_entries($entry,$last_entry,$valor) {
echo 
"El valor es: $valor";
....
?>
}
Y luego llamar a la función como a cualquier otra:

Código PHP:
<?
...
$resultado get_entries($tu_dato$otro_dato$_POST['valor']);
...
?>
Saludos.
  #8 (permalink)  
Antiguo 24/04/2006, 10:55
 
Fecha de Ingreso: noviembre-2004
Mensajes: 159
Antigüedad: 20 años
Puntos: 0
De acuerdo

Entendido!! muchas gracias!!

Hasta una proxima oportunidad

Saludos

A. Acosta.
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 21:58.