Foros del Web » Programando para Internet » PHP »

Modificar registros mediante formulario

Estas en el tema de Modificar registros mediante formulario en el foro de PHP en Foros del Web. Muy buenas: Soy nuevo en esto y estoy intentando realizar un script que me permita seleccionar un registro de una bd, mostrarme los campos (editables) ...
  #1 (permalink)  
Antiguo 12/09/2012, 03:17
 
Fecha de Ingreso: febrero-2011
Ubicación: Madrid
Mensajes: 9
Antigüedad: 13 años, 2 meses
Puntos: 0
Modificar registros mediante formulario

Muy buenas:

Soy nuevo en esto y estoy intentando realizar un script que me permita seleccionar un registro de una bd, mostrarme los campos (editables) en una tabla, editarlos y luego que se modifiquen en la bd.

Tengo varias consultas:

- Al seleccionar uno de los registros y cargar el archivo editar.php, me sale:

Notice: Undefined index: action in C:\xampp\htdocs\editar.php on line 9

No entiendo a qué se debe este error.

- Al ya modificar algún dato, le doy a guardar y me sale:


Notice: Undefined index: id in C:\xampp\htdocs\editar.php on line 7

No se ha podido ejecutar la consulta. Compruebe si la sintaxis de la misma es correcta.

Y no consigo que me modifique el registro. Si hago un echo de la consulta sql, no consigo recuperar el campo IdPolideportivo. Pero, en cambio, si hago un echo de este campo, sí que me lo escribe.



Lo estoy haciendo con dos archivos php. Os pego el código aquí:

modificar.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">
<head>
<title>Proyecto de fin de carrera</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="css/estilos.css" rel="stylesheet" type="text/css" />
</head>
<body>
<BR><BR><BR><BR><BR><BR>

<?php
include('config.php');

$consulta="SELECT * FROM $tabla order by IdPolideportivo ASC";
$datos= mysql_query($consulta,$conexion) or die("<p>No se ha podido ejecutar la consulta. Compruebe si la sintaxis de la misma es correcta.<p>");


echo "<H1> Listado de los ". $tabla;
echo "<BR><BR>";

?>
<table class='tabla'>

<?php while ($registro = mysql_fetch_assoc($datos))

{ ?>
<tr>
<td><?php echo $registro['Nombre']; ?></td>
<td><a href="editar.php?id=<?php echo $registro['IdPolideportivo']; ?> ">Editar</a></td>
</tr>
<?php }
mysql_free_result($datos);

?>

</table>
<BR><BR>



<BR><BR>
<A HREF="/principal.html">Volver</A>

</body>
</html>

-------------------------------------------------------------------------------------------------------

editar.php

<html>
<body>
<?php
include('config.php');
$idempresa = ($_GET["id"]);
$action = ($_GET["action"]);
if ($action == "edit") {
$id = ($_POST["id"]);
$nombre = ($_POST["Nombre"]);
$direccion = ($_POST["Direccion"]);
$distrito = ($_POST["Distrito"]);
$sql = "UPDATE $tabla SET ";
$sql.= "nombre='".$nombre."', direccion='".$direccion."', distrito='".$distrito."' ";
$sql.= "WHERE idPolideportivo=6 ";
mysql_query($sql, $conexion);
}

// consultamos los datos

$consulta="SELECT * FROM $tabla WHERE IdPolideportivo =".$idempresa;
$datos= mysql_query($consulta,$conexion) or die("<p>No se ha podido ejecutar la consulta. Compruebe si la sintaxis de la misma es correcta.<p>");

$registro = mysql_fetch_assoc($datos);
$total = mysql_num_rows($datos);
if ($total == 0) {
// si no hay datos redireccionamos al listado
header("location: listado.php");
exit;
}
?>
<form method="post" action="editar.php?action=edit">
<strong>Nombre</strong>
<input type="text" name="Nombre" value="<?php echo $registro['Nombre']; ?>" />
<strong>Dirección</strong>
<input type="text" name="Direccion" value="<?php echo $registro['Direccion']; ?>" />
<strong>Distrito</strong>
<input type="text" name="Distrito" value="<?php echo $registro['Distrito']; ?>" />
<input type="text" id="id" name="id" value="<?php echo $registro['IdPolideportivo']; ?>" />
<button type="submit">Guardar</button>
<button type="reset">Limpiar</button>
</form>
</body>
</html>

La base de datos tiene unos cuantos registros y el campo IdPolideportivo es de tipo INT. ¿Se os ocurre qué puede estar fallando?

Gracias!!!!!
  #2 (permalink)  
Antiguo 12/09/2012, 06:12
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 18 años
Puntos: 58
Respuesta: Modificar registros mediante formulario

comprueba que existen las variables GET antes de asignarlas a otra variable
Código PHP:
Ver original
  1. $idempresa = ($_GET["id"]);//mal
  2. if(isset($_GET["id"])){//bien
  3. $idempresa = $_GET["id"];
  4. //realizar la consulta
  5. }
  #3 (permalink)  
Antiguo 12/09/2012, 06:18
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Modificar registros mediante formulario

hola buenas.

basicamente te esta diciondo que no estan definidas esas variables cuando ejecutas el codigo
veo por ejemplo que $action en editar.php, la recibes por $_GET y $id por $_POST

en modificar.php no envias nada por $_POST por lo que es normal que en editar.php este vacio, y se la consulta a la bd no te debuelve ningun campo y no rellena nada en la siguiente linea es normal que te de los errores.
<a href="editar.php?id=<?php echo $registro['IdPolideportivo']; ?> ">

comprueba que recibes los datos bien en editar.php

Etiquetas: formulario, html, mediante, modificar, mysql, registro, registros, sql, tabla
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 16:22.