Foros del Web » Programando para Internet » PHP »

Problema con Undefined index

Estas en el tema de Problema con Undefined index en el foro de PHP en Foros del Web. Hola soy nuevo en php y tengo el siguiente problema. Estoy haciendo un formulario de contacto el cual estoy validando con php los campos y ...
  #1 (permalink)  
Antiguo 24/04/2016, 22:37
 
Fecha de Ingreso: abril-2016
Mensajes: 2
Antigüedad: 8 años
Puntos: 0
Pregunta Problema con Undefined index

Hola soy nuevo en php y tengo el siguiente problema. Estoy haciendo un formulario de contacto el cual estoy validando con php los campos y al momento de abrir el archivo me sale este error
Notice: Undefined index: imp in C:\xampp\htdocs\contacto\testcap.php on line 3

estoy tratando de no perder los datos que el usuario ingreso al momento de validar, el problema se arregla al momento de apretar "enviar" (sin necesidad de llenar los campos), alguien me podría ayudar a
quitar este problema.

les dejo el código:



Código PHP:
<?php
session_start
();
$imprimir=$_SESSION['imp'];
?>
<body>
<?php
if(isset($_SESSION['exito']))
{
    echo 
"<center><p><font color='blue'>".$_SESSION['exito']."</font></p></center>";
}else
{
    echo
"";
}
unset(
$_SESSION['exito']);
?>
<form name="frm" action="enviar.php" method="post">
  <table width="auto" border="0">
    <tr>
      <td><span class="red">*</span> Nombre </td>
      <td><input name="nombre" type="text" maxlength="30" onkeypress="return validaLetras(event)" value="<?php echo $imprimir['nombre'];?>"/>
      <?php
      
if (isset($_SESSION['error1']))
      {
          echo 
"<span class='red'>".$_SESSION['error1']."</span>";
      }else
      {
        echo
"";
      }
      unset(
$_SESSION['error1']);
      
?>
      </td>
    </tr>
    <tr>
      <td><span class="red">*</span> Apellidos </td>
      <td><input name="apellidos" type="text" maxlength="40" onkeypress="return validaLetras(event)" value="<?php echo $imprimir['apellidos'];?>" />
      <?php
      
if (isset($_SESSION['error2']))
      {
          echo 
"<span class='red'>".$_SESSION['error2']."</span>";
      }else
      {
        echo
"";
      }
      unset(
$_SESSION['error2']);
      
?></td>
    </tr>
    <tr>
      <td><span class="red">*</span> Rut </td>
      <td><input name="rut" type="text" placeholder="Ej: 18234432-1" maxlength="10" value="<?php echo $imprimir['rut'];?>" />
      <?php
      
if (isset($_SESSION['error3']))
      {
          echo 
"<span class='red'>".$_SESSION['error3']."</span>";
      }else
      {
        echo
"";
      }
      unset(
$_SESSION['error3']);
      
?></td>
    </tr>
    <tr>
      <td><span class="red">*</span> Celular </td>
      <td><input name="celular" type="text" maxlength="9" onkeypress="return numeros(event)" value="<?php echo $imprimir['celular'];?>"/>
      <?php
      
if (isset($_SESSION['error4']))
      {
          echo 
"<span class='red'>".$_SESSION['error4']."</span>";
      }else
      {
        echo
"";
      }
      unset(
$_SESSION['error4']);
      
?></td>
    </tr>
    <tr>
      <td><span class="red">*</span> Email </td>
      <td><input name="email" type="email" maxlength="50" value="<?php echo $imprimir['email'];?>"/>
      <?php
      
if (isset($_SESSION['error5']))
      {
          echo 
"<span class='red'>".$_SESSION['error5']."</span>";
      }else
      {
        echo
"";
      }
      unset(
$_SESSION['error5']);
      
?></td>
    </tr>
    <tr>
      <td><span class="red">*</span> Mensaje </td>
      <td><textarea name="textarea" rows="10" cols="40" placeholder="Escribe tu mensaje aquí" ></textarea>
      <?php
      
if (isset($_SESSION['error6']))
      {
          echo 
"<span class='red'>".$_SESSION['error6']."</span>";
      }else
      {
        echo
"";
      }
      unset(
$_SESSION['error6']);
      
?></td>
    </tr>
    <tr>
      <td></td>
      <td><div class="g-recaptcha" data-sitekey="6Lcl6h0TAAAAAJ_3WtZz5_61O8zpK3gJcNbYdgj9"></div></td>
    </tr>
    <tr>
      <td><span class="red">*</span> Nota </td>
      <td><label>Los campos marcados con <span class="red">*</span> son obligatorios</label></td>
    </tr>
    <tr>
      <td></td>
      <td><input type="submit" name="btn_envio" value="Enviar"/></td>
    </tr>
  </table>
</form>
</body>
y el código del archivo enviar.php

Código PHP:
<?php
session_start
();

$conexion=mysql_connect("localhost","root",""
or die(
"Problemas en la conexion"); 
mysql_select_db("colegios",$conexion) or die("Problemas en la seleccion de la base de datos");

$nombre=$_POST['nombre'];
$apellidos=$_POST['apellidos'];
$rut=$_POST['rut'];
$celular=$_POST['celular'];
$email=$_POST['email'];
$mensaje=$_POST['textarea'];

$_SESSION['imp']=$_POST;

$errores=array();


if(
$nombre=="")
{
    
$errores[]=true;
    
$_SESSION['error1']="Debes ingresar un nombre";
}


if(
$apellidos=="")
{
    
$errores[]=true;    
    
$_SESSION['error2']="Debes ingresar tus apellidos";
}

if(
$rut=="")
{
    
$errores[]=true;    
    
$_SESSION['error3']="Debes ingresar un rut";
}
if (
valida_rut($rut)== false
             { 
             
$errores[]=true;    
    
$_SESSION['error3']="Debes ingresar un rut válido";
             }  

if(
$celular=="")
{
        
$errores[]=true;
    
$_SESSION['error4']="Debes ingresar un número celular";
}
if(!
is_numeric($celular)){
        
$errores[]=true;
    
$_SESSION['error4']="Debes ingresar un número celular";
}

if(
$email=="")
{
        
$errores[]=true;
    
$_SESSION['error5']="Debes ingresar un correo electrónico";
}


if (
trim($_POST['textarea']) == ""){
    
$errores[]=true;
    
$_SESSION['error6']="Debes escribir un mensaje";
    
}


if(
count($errores)>0)
{
header('location:testcap.php');    
}
else
{
mysql_query("insert into contacto(nombre,apellidos,rut,celular,email,mensaje) values ('$_REQUEST[nombre]','$_REQUEST[apellidos]','$_REQUEST[rut]','$_REQUEST[celular]','$_REQUEST[email]','$_REQUEST[textarea]')",
$conexion) or die("Problemas en el select".mysql_error()); 
mysql_close($conexion);
$_SESSION['exito']="Su mensaje se ha enviado con éxito";
header('location:testcap.php');
}
?>
  #2 (permalink)  
Antiguo 24/04/2016, 22:51
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: Problema con Undefined index

Debe ser que no existe el índice imp en la superglobal $_SESSION.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #3 (permalink)  
Antiguo 25/04/2016, 08:05
 
Fecha de Ingreso: abril-2016
Mensajes: 2
Antigüedad: 8 años
Puntos: 0
Respuesta: Problema con Undefined index

Cita:
Iniciado por chronos682 Ver Mensaje
Debe ser que no existe el índice imp en la superglobal $_SESSION.
y cómo lo podría solucionar?
  #4 (permalink)  
Antiguo 25/04/2016, 08:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con Undefined index

Cita:
Iniciado por Claudioldea Ver Mensaje
y cómo lo podría solucionar?
Pues entiende que el error se da porque "intentas leer algo que no existe" ¿cómo puedes leer algo que no sabes si existe o no?

Usando isset() podría ser una solución, consulta el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 25/04/2016, 08:43
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Problema con Undefined index

Cita:
Iniciado por Claudioldea Ver Mensaje
y cómo lo podría solucionar?

Fijate bien que estas definiendo $imprimir con el valor de imp cuando aun no lo has enviado en enviar.php... como quieres que imp exista si no tiene un valor asignado previamente, este se le asigna despues de enviado
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)

Etiquetas: formulario, index, mysql, select, sql, undefined
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 18:55.