Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Xedrox en 6 Febrero 2012, 02:32 am



Título: No entiendo este error
Publicado por: Xedrox en 6 Febrero 2012, 02:32 am
Estoy practicando con PHP y MySql y tengo el siguiente error:

Código:
Se pudo conectar correctamente
Notice: Undefined index: nombre in C:\xampp\htdocs\practica2\operacionesBase.php on line 6

Notice: Undefined index: apellido in C:\xampp\htdocs\practica2\operacionesBase.php on line 7

Notice: Undefined index: edad in C:\xampp\htdocs\practica2\operacionesBase.php on line 8

Notice: Use of undefined constant ALTA - assumed 'ALTA' in C:\xampp\htdocs\practica2\operacionesBase.php on line 12

Este es el fuente de operacionesBase.php:

Código:
<?php

include ("conexion.php");

$idTemp=$_POST['id'];
$nombreTemp=$_POST['nombre'];
$apellidoTemp=$_POST['apellido'];
$edadTemp=$_POST['edad'];

switch($_POST['accion'])
{
case Alta:
     $query="insert into alumnos values ('$idTemp','$nombreTemp','$apellidoTemp','$edadTemp')";
     $result=mysql_query($query,$conexion) or die ("Fallo la alta");
     echo "La alta se produjo correctamente";


break;

}


?>

Y este es el codigo html que lo llama, me podrian indicar donde me estoy equivocando??

Código:
<html>
<title>Alta de alumno</title>

<body>
<form action='operacionesBase.php' method='POST'>
ID: <input type='text' name='id'><br>
NOMBRE: <input type='text' name='id'><br>
APELLIDO: <input type='text' name='id'><br>
EDAD: <input type='text' name='id'><br>
<input type='submit' name='accion' value='Alta'>

</form>
</body>


</html>

Gracias
Saludos


Título: Re: No entiendo este error
Publicado por: #!drvy en 6 Febrero 2012, 02:44 am
Hola,

Veras, estas llamando las variables $_POST[], sin asegurarte de si llevan información o están definidas.

Generalmente cuando PHP dice "undefined index", significa que la variable no esta definida y por tanto no la puede usar.

Para asegurarte, de que cada variable esta definida, puedes utilizar la función isset de PHP.

Un ejemplo seria:
Código
  1. <?php
  2. if(isset($_POST['nombre'])){
  3. echo 'Hola, '.$_POST['nombre'];
  4. } else {
  5. echo 'No has puesto tu nombre.';
  6. }
  7. ?>

Así, si el usuario ha enviado el $_POST['nombre'], aparecer "Hola, sunombre"  y sino le dara un error.


Título: Re: No entiendo este error
Publicado por: Xedrox en 6 Febrero 2012, 04:20 am
Hola, gracias por contestar, dos cosas, como funciona esta funcion "_POST" exactamente? Como puedo definir la variable para no tener que usar iiset?

Ademas con "idTemp" no hay problemas, cuando ejecuto en el formulario con el boton antes tengo bien rrellenos todos los campos.

Gracias


Título: Re: No entiendo este error
Publicado por: #!drvy en 6 Febrero 2012, 05:05 am
$_POST, es una función que obtiene la cabecera HTTP POST que envía tu navegador cuando rellenas y envías formularios con el "method="POST"".

No te recomiendo que definas la variable directamente y tampoco que ocultes los errores. Me refiero tu lo que quieres es evitar comprobar si las variables están vacías, pero no lo hagas!. Tu base de datos se va a llenar de *****.

Comprueba siempre que las variables que recibes están bien y están todas metidas.
De todos modos, si aun te quieres evitar comprobar si la variables esta definida o no, pon una @ (arroba) delante de cada $_POST.

Por ejemplo:
Código
  1. $idTemp=@$_POST['id'];
  2. $nombreTemp=@$_POST['nombre'];
  3. $apellidoTemp=@$_POST['apellido'];
  4. $edadTemp=@$_POST['edad'];
  5.  

Así ocultas el error, pero seguirán estando vacías si el usuario no completa el formulario.

El
Código
  1. case Alta:
Es
Código
  1. case "Alta":

Con comillas, ya sean simples o dobles.


Si te fijas en tu formulario, todos los input tienen el mismo nombre. Como esperas que PHP reciba un $_POST['nombre'] si lo que envias es solo ID ?

Código
  1. <title>Alta de alumno</title>
  2.  
  3. <form action='operacionesBase.php' method='POST'>
  4. ID: <input type='text' name='id'><br>
  5. NOMBRE: <input type='text' name='id'><br>
  6. APELLIDO: <input type='text' name='id'><br>
  7. EDAD: <input type='text' name='id'><br>
  8. <input type='submit' name='accion' value='Alta'>
  9.  
  10. </form>
  11. </body>
  12.  
  13.  
  14. </html>

Fíjate, todos tienen "name='id'"....

Saludos


Título: Re: No entiendo este error
Publicado por: Xedrox en 6 Febrero 2012, 21:52 pm
Ahahaha muchas gracias!

Te hago otra consulta, ahora esta fallando la "alta" en la base de datos, podrías decirme si hay algún error de sintaxis?