Modificar, actualizar o editar un registro de nuestra tabla de usuarios responde al proceso de «update» de un CRUD.
La actualización o edición de un registro es similar a la creación salvo las siguientes diferencias:
- Necesitamos el «id» del registro que deseamos modificar.
- Todos los valores que enviamos a la «query» de actualización deberían responder correctamente al tipo de datos asignado en nuestra tabla antes de ser ejecutada, caso contrario, la modificación no se efectuará con éxito.
- El identificador o «id» es el único valor que no se debe modificar, a no ser que la lógica de negocio de tu aplicativo asi lo exiga.
Si observamos la vista del archivo index.php, vemos al lado derecho de cada registro 2 botones: Editar y Eliminar. Si acercamos el mouse al botón «Eliminar» vemos en la barra de información de nuestro navegador que el enlace destino tiene la forma «update.php?id=3» donde «3» es el id del registro que se va a modificar.
El código de nuestro proceso «update» es el siguiente. Recuerda revisar los comentarios:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
<?php //zona horaria por defecto date_default_timezone_set('America/Lima'); //conexion a bbdd $link = mysqli_connect('localhost', 'root', '', 'demo_crud'); //si existe "id" en la url if(isset($_GET['id'])){ $id = $_GET['id'];//le asigno una variable $query1 = "SELECT * FROM users WHERE id =".$id; //cadena de consulta para el elemento $id if($result = mysqli_query($link, $query1)){ //si obtengo resultados ejecutando la consulta anterior while($user = mysqli_fetch_assoc($result)){ //asigno ese resultado a un array asociativo $user $name = $user['name']; //creo variables con los nombres de los campos de la tabla "users" $email = $user['email']; $phone = $user['phone']; } } } if(isset($_POST['sw']) == 1){ //si se ha presionado el boton "Actualizar" //cadena con la orden de actualizacion a la tabla "users" con los valores de los inputs enviados por POST $query2 = "UPDATE users SET name='".$_POST['name']."', email='".$_POST['email']."', phone='".$_POST['phone']."', modified='".$_POST['modified']."' WHERE id=".$_POST['id']; if(mysqli_query($link, $query2)){ //si la consulta se ejecuta con exito echo "La informacion se actualizo con exito"; //mensaje de exito header('Location: index.php'); //redireccion a index.php }else{ //si ocurrio un error echo "Ocurrio un error al intentar actualizar"; //mensaje de error } } //cierro conexion a bbdd mysqli_close($link); ?> <!DOCTYPE html> <html> <head> <title>CRUD basico con PHP y MySQL</title> <link rel="stylesheet" type="text/css" href="styles.css"> </head> <body> <div id="wrapper"> <h3>Editar usuario</h3> <form action="update.php" method="post"> <label for="name">Nombre: </label><br /> <input type="text" name="name" value="<?php if(isset($name)) echo $name; ?>" /><br /><br /> <label for="email">Email: </label><br /> <input type="text" name="email" value="<?php if(isset($email)) echo $email; ?>" /><br /><br /> <label for="phone">Telefono: </label><br /> <input type="text" name="phone" value="<?php if(isset($phone)) echo $phone; ?>" /><br /><br /> <input class="btn-success" type="submit" name="actualizar" value="Actualizar" /><br /><br /> <a class="btn" href="index.php"><< Volver</a> <input type="hidden" name="modified" value="<?php echo date("Y-m-d H:i:s", time()); ?>" /> <input type="hidden" name="id" value="<?php if(isset($id)) echo $id; ?>" /> <input type="hidden" name="sw" value="1" /> </form> </div> </body> </html> |
En la línea 58 vemos un campo oculto llamado «modified» que captura fecha y hora actual para posteriormente guardar ese dato en la tabla como la fecha en que se modificó el registro.
El formulario resultante del código anterior se muestra asi:
En cada input se muestra el valor respectivo del campo de la tabla «users» listo para ser modificado. Al hacer click en el botón «Actualizar» la nueva información que se ingrese será reemplazada y almacenada.
Recuerda que puedes descargar el ejemplo desde Github.
En la próxima publicación explicaremos la última acción de nuestro CRUD en el archivo delete.php.
No dudes en dejar tus comentarios.
Saludos.