Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Problemas con variables (https://www.clubdelphi.com/foros/showthread.php?t=41975)

nikotina 30-03-2007 13:15:04

Problemas con variables
 
Hola gente. tengo un problema que no puedo solucionar. tengo un form donde cargo tres variables, "doc", "nom" y "ape" guardado como "transacion_alumnos.php". Y lo cargo en otro llamado "agregar.php".
El problema en si es que no me actualiza la DB con dichas variables. es decir, me agrega un registro en blanco. Pero si al mysql_query le paso, por ejemplo, '25027466', 'maciel', 'jose gonzalo' si lo guarda. Es como que si no toma las variables del form. Aqui va el codigo.

espero que puedan ayudarme.
desde ya muchas gracias y un abrazo a todos.

Código PHP:

// "transaccion_alumnos.php"
<html>
<head>
<title> transaccion alumnos </title>
</head>
<body bgcolor="#B7E1E1">

<hr color = "#FFFFFF">
<form action = "agregar.php">
DNI:<br>
<input type="text"  name="doc" /><br>
Apellido:<br>
<input type="text"  name="nom" /><br>
Nombres:<br>
<input type="text"  name="ape" /><br><br><br><br><br><br><br><br>
<hr color ="#800000" heigth "50">
<input type="submit" value = "GUARDAR" />
</form>

</body>
</html>

// agregar.php
<html>
<header>
</header>
<body>
<? 
   
include("conectarse.php");
   
$link=conectarse();
   
$sql"insert into alumnos (dni,apellido,nombres) values ('$doc','$nom','$ape')"
 
   
mysql_query($sql,$link);
   
header("location:transaccion_alumnos.php");
?>
</body>
</html>

// conectarse.php
<htlm>
<head>
<title>EJEMPLO DE CONEXION </title>
</head>
<body>
<?
   
function conectarse()
   {
     if (!(
$link=mysql_connect("localhost","root","")))
         { 
           echo 
"error1";    
           exit();
          } 

     if (!
mysql_select_db("universidad",$link))
         {
             echo 
"error2";
           exit();
          }
    return 
$link;   
   }
   
conectarse();


dec 30-03-2007 14:01:28

Hola,

Se trata, básicamente, de que estás tratando de acceder a variables que sólo estarían declaradas de encontrarse la opción "register globals" de PHP activada, cosa que es raro, puesto que desde cierta versión de PHP esta opción está desactivada por motivos de seguridad, entre otros.

Echa un vistazo al manual de PHP sobre este asunto. También en estos mismos foros vas a encontrar más información al respecto.

- Uso de Register Globals

- Variables predefinidas

nikotina 30-03-2007 16:20:03

gracias Dec
 
Gracias Dec. yo pense que podia ser eso pero no estaba seguro.
Voy a ver como lo soluciono.

dec 30-03-2007 16:27:06

Hola,

Básicamente, se trata de utilizar las variables "superglobales" en lugar de variables locales creadas "ad hoc" en el caso de que la opción "register globals" estuviera activada.

Es decir, en lugar de "$doc" utilizar "$_GET['doc']" y así con el resto de valores/variables. Por otro lado piensa en utilizar el atributo "method" del formulario HTML, puesto que ahora mismo estás enviando los datos del formulario en la propia URL, con el "method GET", que es el utilizado por defecto.

Tal vez sea lo que estás buscando, pero, sabe que puedes usar el método "POST", es decir:

Código PHP:

<form action="agregar.php" method="post"

De modo que ahora puedas encontrar el valor que esperabas en "$doc" en la variable "$_POST['doc']", y de modo que los valores/variables no se transmitan en la URL.

nikotina 30-03-2007 22:33:35

no anda
 
Dec. chekee el register_globals y esta en on. Ademas puse en el form la directiva method = "post" y las variables $doc = $post_['doc'] y tampoco carga los registros en la DB. Que otra cosa pueder ser. Estoy desconsertado.

dec 31-03-2007 04:18:11

Hola,

Lo primero desactivar "register globals", puesto que, precisamente, a partir de cierta versión de PHP se desactiva por defecto al comprometer en ciertos sentidos la seguridad del sitio Web.

Después, antes de intentar hacer la inserción en la base de datos, asegúrate de que te están llegando los datos.

Código PHP:

if(isset[$_POST['doc']){
  
$doc $_POST['doc'];


Por otro lado podrías tratar de que no te "cuelan" vaya usted a saber qué entre los datos que son enviados, porque ten en cuenta que los datos van a formar parte de una consulta SQL que posteriormente vas a ejecutar...

Código PHP:

function Escapar($cadena){
  if(
get_magic_quotes_gpc()) 
    
$cadena stripslashes($cadena);        
  return 
mysql_real_escape_string($cadena$this->enlaceConexionBd);
}

if(isset[
$_POST['doc']){
  
$doc Escapar($_POST['doc']);


Asegúrate, como digo, que antes de realizar la consulta SQL verdaderamente estés recibiendo los datos. Esto es lo primero. Esto puedes hacerlo simplemente "imprimiendo" los datos (las variables) y omitiendo la consulta SQL mientras realizas las pruebas.

Por otro lado, si los datos "llegan" puede que exista algún problema en la consulta SQL. Luego de ejecutar la consulta haz una llamada a la función "mysql_error", puesto que si su resultado es distinto a una cadena vacía el mismo será un mensaje de error que describa el problema con MySQL.

Por ahora no se me ocurre otra cosa... lo siento...

Bueno. Otra cosa. Como supongo que habrás cambiado al menos parte del código fuente que ahora estás utilizando, cópialo por aquí a ver si puede dar alguna pista sobre el problema. :)


La franja horaria es GMT +2. Ahora son las 07:45:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi