Esta es la continuación de la serie de tutoriales sobre PHP y base de datos con MySQL.
En esta ocación vamos a trabajar en la plantilla que obtuvimos en Crear Tabla HTML con ID y Mostrar Información (PHP,MySQL)
A esta plantilla le vamos a aplicar un poco de estilo para que este mas ordenana. El código de la nueva tabla se encuentra en el archivo completo del código fuente de este post, que lo puedes encontrar mas abajo.
Para poder actualizar nuestro registro debemos obtener los datos de la forma y formar nuestro query. Si ya seguiste el tutorial Método PDO::prepare Obtener Resultados con Parametros ya tienes una idea de que trata el enviar información a un query de una manera segura. Para este tutorial no hay mucha diferencia en cuanto al código, sin embargo, se implementa un método para verificar que se haya hecho la inserción de una manera correcta.
1.- El primer paso que tenemos que hacer es verificar que se haya seleccionado el boton de “Actualizar”, como esta dentro del post de la forma vamos a buscar que exista este boton en el arreglo $_POST:
1 | if (array_key_exists('update', $_POST)) { |
2.- Una vez que estemos seguros que el código se ejecuta de la forma estamos listos para preparar nuestro query ligarlo con el método preprare():
1 2 | $sql = 'UPDATE empleado SET nombre = ?, email = ?, telefono = ? WHERE id_empleado = ?'; $stmt = $conn->prepare($sql); |
3.- Ahora para ejecutar nuestro query usamos execute(). Execute devuelve un valor booleano, true si se ejecuto con éxito o false en cas contrario. Para poder controlar un error vamos obtener su valor del controlador de PDO y lo asignamos a $error el cual va a ser un arreglo asocitaivo. Si hay un error en la consulta $error va a traer el mensaje.
1 2 3 4 5 | $OK = $stmt->execute(array($_POST['nombre'],$_POST['email'],$_POST['telefono'],$_GET['id'])); $error = $stmt->errorInfo(); if (!$OK) { echo $error[2]; } |
4.- Por ultimo si no hay error entonces podemos dar por hecho que la actualización se hizo y ahora estamos listo para mostrar de nuevo nuestra forma con los datos actualizados. Ya que tenemos el código anterior para mostrar los resultados, solo es cuestrión de que enviemos el id en un query string con “searchEmployee-02.php?id=3” y redireccionar con un header.
1 2 3 4 5 | else { echo '<p>El registro se actualizo correctamente</p>'; header("refresh: 2;searchEmployee-02.php?id=".$_GET['id']); exit; } |
Como pueden observar no hay gran cambio en nuestro código para hacer una inserción de un registro, el código completo lo pongo aquí abajo, si quieren ver el código comentado con mas detalles, al final del post pongo el link de descarga del código fuente con mas documentación.
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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | <?php /** * @author Ing. Israel Barragan C. Email: ibarragan at behstant dot com * @since 17-Jul-2013 */ require_once 'Connection.simple.php'; $conn = dbConnect(); $OK = true; $msg = ''; if (isset($_GET['id'])) { $sql = 'SELECT * FROM empleado WHERE id_empleado = ?'; $stmt = $conn->prepare($sql); $results = $stmt->execute(array($_GET['id'])); $row = $stmt->fetch(); if (empty($row)) { $result = "No se encontraron resultados !!"; } } if (array_key_exists('update', $_POST)) { $sql = 'UPDATE empleado SET nombre = ?, email = ?, telefono = ? WHERE id_empleado = ?'; $stmt = $conn->prepare($sql); $OK = $stmt->execute(array($_POST['nombre'],$_POST['email'],$_POST['telefono'],$_GET['id'])); $error = $stmt->errorInfo(); if (!$OK) { echo $error[2]; } else { echo '<p>El registro se actualizo correctamente</p>'; header("refresh: 2;searchEmployee-02.php?id=".$_GET['id']); exit; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Query data sending an ID and Updating a Single record.</title> <meta http-equiv="X-UA-Compatible" content="IE=9,crome" /> <meta name="copyright" content="Datasoft Engineering 2013"/> <meta name="author" content="Reedyseth"/> <meta name="email" content="ibarragan@behstant.com"/> <meta name="description" content="Query data sending an ID" /> <link rel=stylesheet href="../css/style02.css"> <meta name="description" content="Tutorial donde se indica como acceder a la información de un usuario con un Id específico."/> </head> <?php if(!$OK) : echo ""; else : ?> <fieldset style="width:480px" > <legend>Editar Empleado</legend> <form action="" method="post"> <table> <tr> <td><label for="id">Id de empleado:</label></td> <td><input type="text" name="id" id="id"/ disabled="disabled" value="<?php echo $row['id_empleado'];?>"></td> </tr> <tr> <td><label for="nombre">Nombre:</label></td> <td><input type="text" name="nombre" id="nombre"/ value="<?php echo $row['nombre'];?>"></td> </tr> <tr> <td><label for="email">Email:</label></td> <td><input type="text" name="email" id="email" value="<?php echo $row['email'];?>"/></td> </tr> <tr> <td><label for="telefono">Telefono:</label></td> <td><input type="text" name="telefono" id="telefono" value="<?php echo $row['telefono'];?>"/></td> </tr> <tr> <td><input type="submit" name="update" value="Actualizar"/></td> <td><input type="submit" name="delete" value="Eliminar" disabled="disabled"/></td> </tr> </table> </form> </fieldset> <p><a href="phpParameters-06.php">&lt;&lt; Regresar</a></p> <?php endif;?> <body> </html> |
El código con comentarios detallados se encuentra aquí :
El código sin comentarios se encuentra aquí: