Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Error al tratar de guardar los datos de un formulario (https://www.clubdelphi.com/foros/showthread.php?t=81692)

whitesnakevm 08-12-2012 08:12:47

Error al tratar de guardar los datos de un formulario
 
Hola al indicar lo siguientes .. al ejecutarlo me da error
Notice: Undefined index: txt_rut in C:\wamp\www\Snake\Registro.php on line 14
este es el error

Código Delphi [-]
if(isset($_POST["btnguardar"])){

  $rut=$_POST["txt_rut"];
  $contra=$_POST["txt2"];
  $nom=$_POST["txt3"];
  $apel=$_POST["txt4"];
  $dire=$_POST["txt5"];
  $celu=$_POST["txt6"];
  $com=$_POST["cbo1"];
  $tipo=$_POST["cbo2"];
  $insertar="insert into usuarios values('$rut','$contra','$nom','$apel,'$dire',$celu,'$com','$tipo') ";
  $sentencia=mysql_query($insertar,$con); 
  if(!$sentencia){
    die("No se pudo Insertar, Existe un Error");
  }
}

Saludos gracias

dec 08-12-2012 12:41:43

Hola,

Antes de acceder al elemento de un array, es menester averiguar si realmente existe dicho elemento. Esto puede hacerse con "isset", algo más o menos así:

Código PHP:

if ( isset( $_POST'elemKey' ] ) )
{
  
// El elemento existe


De todas formas, me permito aconsejarte que busques información sobre cómo verificar y filtrar este tipo de variables, "$_POST", "$_GET", etc., pues, se trata de variables "de entrada" que pueden contener datos maliciosos, erróneos, etc. Echa un vistazo al capítulo de la ayuda de PHP: Filtrado de datos.

whitesnakevm 08-12-2012 16:28:49

Gracias ... y para evitar el uso de estos elementos ... (ya habia encontrado como iniciarlos) de que otra manera puedo escribir esa parte indicada ?

Agradeceria sus ayuda... anoche estuve mas de 6 horas dandole vuelta al asunto, puesto que soy novato y no conozco mucho del tema !!

Saludos.. Gracias

dec 08-12-2012 17:14:07

Hola,

Si sólo quieres (de momento) asegurar que un elemento determinado exista, puedes utilizar "isset", tal como he puesto en el código de arriba. Debes hacer lo mismo con todos los elementos del Array, pues, el error que obtienes indica eso: que un elemento al que trata de accederse no existe en realidad.

Julián 08-12-2012 22:46:20

Complementando lo dicho por dec me permito indicar que el "mensaje de error" que citas no es un error, sino un notice. EL php te avisa de errorres, warnings y notices, y en este caso, sólo te está informando que la variable $_POST['txt_rut'] no existe, lo cual no produce ningún error, pues puede deberse simplemente a que no se haya rellenado su input correspondiente en el form.

Si buscas en php.net la funcion error_reporting verás que puedes usarla para que, entre otras cosas, no se te muestren los notices.

Un saludo.

dec 09-12-2012 16:53:11

Cita:

Empezado por Julián (Mensaje 451496)
Complementando lo dicho por dec me permito indicar que el "mensaje de error" que citas no es un error, sino un notice. EL php te avisa de errorres, warnings y notices, y en este caso, sólo te está informando que la variable $_POST['txt_rut'] no existe, lo cual no produce ningún error, pues puede deberse simplemente a que no se haya rellenado su input correspondiente en el form.

Si buscas en php.net la funcion error_reporting verás que puedes usarla para que, entre otras cosas, no se te muestren los notices.

Un saludo.

Es cierto, y, si no recuerdo mal, en producción, es decir, una vez nuestro sitio web esté publicado, nunca deben mostrarse este tipo de errores o noticias... es decir que los errores se han de tratar de otra forma y no mostrando su correspodiente mensaje.

De todas formas, una "noticia" puede derivar en algo más grave... y al menos este tipo de ellas (comprobar antes de usarlo si existe cierto elemento de un array) es sencilla de solventar...

whitesnakevm 09-12-2012 19:38:27

como hago eso ? :S

cloayza 11-12-2012 01:11:10

Puedes utilizar la funcion var_dump, que te imprimira el contenido del vector $_POST. Así puedes ver con que llega al script php.
Código Delphi [-]
var_dump($_POST);  


if(isset($_POST["btnguardar"])){

  $rut=$_POST["txt_rut"];
  $contra=$_POST["txt2"];
  $nom=$_POST["txt3"];
  $apel=$_POST["txt4"];
  $dire=$_POST["txt5"];
  $celu=$_POST["txt6"];
  $com=$_POST["cbo1"];
  $tipo=$_POST["cbo2"];
  $insertar="insert into usuarios values('$rut','$contra','$nom','$apel,'$dire',$celu,'$com','$tipo') ";
  $sentencia=mysql_query($insertar,$con); 
  if(!$sentencia){
    die("No se pudo Insertar, Existe un Error");
  }
}

Un abrazo.


La franja horaria es GMT +2. Ahora son las 16:36:24.

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