Foros del Web » Programando para Internet » PHP »

Problema al recoger una variable

Estas en el tema de Problema al recoger una variable en el foro de PHP en Foros del Web. Hola buenas, explico mi problema. Yo tenía unos scripts que siempre me funcionaron para añadir campos a las bases de datos de manera simple. Estos ...
  #1 (permalink)  
Antiguo 23/06/2011, 06:24
Avatar de Mugiwarakun  
Fecha de Ingreso: junio-2011
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 0
Problema al recoger una variable

Hola buenas, explico mi problema.

Yo tenía unos scripts que siempre me funcionaron para añadir campos a las bases de datos de manera simple. Estos scripts consisten en un único archivo php que funciona así:

Código PHP:
$opcion $opcion;

switch(
$opcion) {

case 
0: function rellenar_formulario(); break;
case 
1: function validar_formulario(); break;
default: 
loquesea(); break;


Lo que sucede es que, al acceder a la página por defecto siempre me coge 0 ya que no existía valor inicial y se me iba a la función para rellenar el formulario y este, una vez rellenado, llamaba a esta misma página con el esquema formulario.php?opcion=1 y se iba a la otra función.

Por alguna razón que desconozco esto ya no me funciona, me habla siempre de "undefined variable", error que he mirado por decenas de webs pero nadie tenía el código al estilo del mío.

¿Alguna solución? gracias.
  #2 (permalink)  
Antiguo 23/06/2011, 06:48
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años, 6 meses
Puntos: 27
Respuesta: Problema al recoger una variable

Creo que deberias iniciar opcion:

$opcion=0;

antes del switch
  #3 (permalink)  
Antiguo 23/06/2011, 06:54
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 10 meses
Puntos: 209
Respuesta: Problema al recoger una variable

$opcion = $opcion; ?????
y donde declaraste inicialmente $opcion ?
  #4 (permalink)  
Antiguo 23/06/2011, 07:04
Avatar de Mugiwarakun  
Fecha de Ingreso: junio-2011
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Problema al recoger una variable

Mirad un ejemplo de código que funcionaba:

Código PHP:
$paramj $valorj; (Aquí no usé el mismo nombrepero en otro archivo si).

switch (
$paramj)
  {
      case 
0:
            
rellenar_formj();
            break;
    case 
1:
            
validar_formj();
            break;
    default:
            echo 
"Esta opción no vale.";
            exit;
  } 
Con esto yo accedía a la página y por defecto me entraba en 0 ya que no existe una declaración previa de $valorj.
  #5 (permalink)  
Antiguo 23/06/2011, 07:09
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 10 meses
Puntos: 209
Respuesta: Problema al recoger una variable

lo que pasa es que si pones a $opcion = 0 siempre va a entrar al case 0

y puedes recoger el valor de opcion por get
aunq creo q mejor pones el codigo de la pagina que te envia allí
  #6 (permalink)  
Antiguo 23/06/2011, 07:20
Avatar de Mugiwarakun  
Fecha de Ingreso: junio-2011
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Problema al recoger una variable

Ya lo he solucionado, menuda tontería, el problema era que tenía "register_globals" en off en el php.ini, ya funciona como debería.
  #7 (permalink)  
Antiguo 23/06/2011, 07:39
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 10 meses
Puntos: 209
Respuesta: Problema al recoger una variable

ufff no me parece bueno ponerlo en on.. !!!
  #8 (permalink)  
Antiguo 23/06/2011, 08:04
Avatar de Mugiwarakun  
Fecha de Ingreso: junio-2011
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Problema al recoger una variable

Es sólo a nivel local para hacer estos scripts simples para añadir campos a bases de datos.
  #9 (permalink)  
Antiguo 23/06/2011, 08:09
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 9 meses
Puntos: 96
Respuesta: Problema al recoger una variable

Saludos

Estoy totalmente de acuerdo con iviamontes, desde la version 4.3 de php (sino estoy mal) fue deshabilitada para tener un mejor seguridad (ya que es un hueco de seguridad desde que no se sepa controlar as variables que se declaran)
__________________
:.:Nano.:: @nano_hard - Retornando al foro

Última edición por Nano_; 23/06/2011 a las 08:14
  #10 (permalink)  
Antiguo 23/06/2011, 10:19
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 10 meses
Puntos: 209
Respuesta: Problema al recoger una variable

Cita:
Iniciado por Mugiwarakun Ver Mensaje
Es sólo a nivel local para hacer estos scripts simples para añadir campos a bases de datos.
amigo si te acostumbras a trabajar mal en local, que puede asegurarte que después trabajes bien ???
mejor haz tus códigos siempre buenos y ya harás de eso una practica sana y lo harás sin darte cuenta, es mi consejo...
  #11 (permalink)  
Antiguo 19/07/2011, 11:00
Avatar de Mugiwarakun  
Fecha de Ingreso: junio-2011
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Problema al recoger una variable

No había visto esta respuesta.

Yo sé que hay que controlar bien las variables, sencillos controles para la variable, tipo de si el campo está vacío, caracteres introducidos, etc, pero bueno.

Me da curiosidad el tema del get, me gustaría saber poder hacer esto sin register globals.

El código es así:

Código PHP:
//error_reporting(0);
    
    //First we create the database connection that we are going to work with.
    
    
$connection = @mysql_connect("localhost""user""password");
    
mysql_select_db("food"$connection);

    
//Second we take a variable to choose if wi8e fill out the formularie or if we are adding the data.

    
$val $opc;
    
    switch(
$val)
    {
            case 
0:
                
fillouttype();
                break;
            case 
1:
                
addtype();
                break;
            default:
                echo(
"Error.");
                exit;    
    }
    
    
//Function to fill the formularie out.
    
    
function fillouttype()
    {
            global 
$connection;
            
               echo 
'<form action="add-type-of-food.php?opc=1" method="post" name="typeoffood">
                           Description Spanish: <input type="text" name="description_es" maxlength="20" /><br />
                        Description English: <input type="text" name="description_en" maxlength="20" /><br />
                        Description Japanese: <input type="text" name="description_jp" maxlength="20" />&nbsp;
                        Romaji: <input type="text" name="romaji" maxlength="20" /><br /><br />
                        Previously Added: <select name="previouslyadded"><option selected>Verify</option>'
;

                
$addedtypes mysql_query("SELECT description FROM type_es ORDER BY description"$connection);
                
                for(
$x 0$x mysql_num_rows($addedtypes); $x++)
                {
                        echo 
'<option>'.mysql_result($addedtypes$x"description").'</option>';
                }

            echo 
'</select><br /><br /><input type="submit" value="Submit!" name="submit" /></form>';
            
            
mysql_close($connection);
    }
    
    
//Function to add the data to the database.
    
    
function addtype()
    {
            global 
$connection$description_es$description_en$description_jp$romaji;
            
            if(
$description_es == '' || $description_en == '' || $description_jp == '' || $romaji == '')
            {
                        echo 
'You must fill all the fields out. Please come back and do it.<br />
                              <input type="button" value="Come Back!" onclick="javascript:history.go(-1)" />'
;
                        exit;
            }
            
            
$tables = array("type_es""type_en""type_jp");
            
$description_value = array($description_es$description_en$description_jp);
            
            foreach(
$tables as $value => $content)
            {
                        if(
$content == "type_jp")
                        {
                                
mysql_query("INSERT INTO ".$content." VALUES ('', '".$description_value[$value]."', '".$romaji."')"$connection);        
                        }
                        else
                        {
                                
mysql_query("INSERT INTO ".$content." VALUES ('', '".$description_value[$value]."')"$connection);    
                        }    
            }
            
            echo 
"<input type=\"button\" value=\"Add other!\" onclick=\"javascript:location.href='add-type-of-food.php'\" />";
            
            
mysql_close($connection); 

Etiquetas: recoger, variables
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 22:40.