Editar Registros con Función PHP y MySQL: Ejemplos
Editar Registros con Función PHP y MySQL. En este artículo nos enfocaremos en la modificación de datos ya almacenados en la base de datos utilizando una función PHP para que la edición sea de manera dinámica, sin embargo, pareciera que es muy complicado, pero nosotros detallaremos lo sencillo que es implementar funciones.
Si bien necesitamos de estructuras HTML para manejar una interfaz más amena, en este ejemplo de edición necesitaremos los siguientes campos: Nombre, Apellidos lo cual nos apoyaremos en formularios. Ahora nos damos cuenta que tienes que procesar y agregar todos los elementos del formulario para modificar en nuestra DB de manera personalizada. Normalmente se utiliza la consulta SQL siguiente:
Editar Registros con Función PHP y MySQL
UPDATE table_name SET column1=value, column2=value2,... WHERE some_column=id_value
Ejemplo real de usabilidad
$consulta = "UPDATE mi_tabla SET nombres='Juan' WHERE id=2";
Ahí lo tenemos, pero ahora para volver más dinámico nuestras consultas veremos la aplicación de funciones estructuradas para tal fin.
Ejemplo #01 Utilizando funciones para edición
a) Crear la base de datos y su respectiva tabla
CREATE TABLE IF NOT EXISTS `tabla_demo` ( `id` int(11) NOT NULL auto_increment, `nombres` varchar(25) NOT NULL, `apellidos` varchar(35) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ; -- -- Volcar la base de datos para la tabla `tabla_demo` -- INSERT INTO `tabla_demo` (`id`, `nombres`, `apellidos`) VALUES (3, 'Juan Jose', 'Albarracin Flores'), (4, 'Meliza Estela', 'Loza Morales'), (5, 'Mario', 'Ruiz Sotomayor'), (6, 'Luisa Eugenia', 'Candia Quintana'), (7, 'Nohelia Maria', 'Valdivia Valdivia'), (8, 'Nilda Elena', 'Castillo Garcia'), (11, 'Miguel', 'Cervantes sidra');
b) la conexión con el servidor de base de datos
function db_query($query) { $connection = mysqli_connect("localhost","root","root","baul"); $result = mysqli_query($connection,$query); return $result; }
c) La consulta de Actualización a partir de una ID dentro de la Clausula WHERE
function edit($tblname,$form_data,$field_id,$id){ $sql = "UPDATE ".$tblname." SET "; $data = array(); foreach($form_data as $column=>$value){ $data[] =$column."="."'".$value."'"; } $sql .= implode(',',$data); $sql.=" where ".$field_id." = ".$id.""; return db_query($sql); }
d) Nuestro HTML para mostrar formularios de edición
<body> <div class="main-wrapper"> <h1>Editar Registros con Función PHP </h1> <br><br> <?php include("function.php");?> <table border="1" width="100%"> <tr> <th width="41%">Nombres</th> <th width="47%">Apellidos</th> <th width="12%">Opcion</th> </tr> <?php $sql = "select * from tabla_demo"; $result = db_query($sql); while($row = mysqli_fetch_object($result)){ ?> <tr> <td><?php echo $row->nombres;?></td> <td><?php echo $row->apellidos;?></td> <td> <a class="btn btn-primary" href="editar.php?id=<?php echo $row->id; ?>"> <i class="fa fa-pencil fa-lg" aria-hidden="true"></i></a> </td> </tr> <?php } ?> </table> </div> </body>
Resultado en el Navegador
Ventana de edición de registros.
Descargar editar Registros con PHP y MySQL
Referencia
Hola, Nestor, junto con saludare te quería felicitar por el ejemplo anterior,,, completamente claro, y muy eficiente, denota gran experiencia en el tema.
felicitaciones.
Muchas gracias por su Web. Muy buena página. Quise ejecutar el archivo y me sale el error siguiente:
Fatal error: Uncaught TypeError: mysqli_fetch_object(): Argument #1 ($result) must be of type mysqli_result, bool given in C:\xampp\htdocs\Ejemplo_Completo_3\index.php:55 Stack trace: #0 C:\xampp\htdocs\Ejemplo_Completo_3\index.php(55): mysqli_fetch_object(false) #1 {main} thrown in C:\xampp\htdocs\Ejemplo_Completo_3\index.php on line 55
De antemano, gracias.
Saludos
Debes abrir los archivos desde un servidor local
buenas quiero agregar unos campos en una variable nueva en la base de datos del unms y no he podido puedes ayudarme esta en php
private function getHeaderLine(): array
{
return [
‘RIF’,
‘Number’,
‘Status’,
‘Created date’,
‘Due date’,
‘Currency’,
‘Total’,
‘Taxes’,
‘Discount’,
‘Amount paid’,
‘Amount due’,
‘Client firstname’,
‘Client lastname’,
‘Client company name’,
‘Client address’,
];
}
private function getInvoiceLine(array $invoice): array
{
return [
$invoice[‘number’], (es aqui agregue rif arriba)
$invoice[‘number’],
$this->formatInvoiceStatus($invoice[‘status’]),
$invoice[‘createdDate’],
$invoice[‘dueDate’],
$invoice[‘currencyCode’],
$invoice[‘total’],
$this->sumTaxes($invoice[‘taxes’]),
$invoice[‘discount’] ?? 0,
$invoice[‘amountPaid’],
$invoice[‘total’] – $invoice[‘amountPaid’],
$invoice[‘clientFirstName’],
$invoice[‘clientLastName’],
$invoice[‘clientCompanyName’],
$this->formatClientAddress($invoice),
];
}
private function formatInvoiceStatus(int $status): string
{
Hola, estoy tratando de descargar el archivo, pero no se encuentra ninguno…
Hola Carlos
Gracias por informar sobre el inconveniente, hemos reparado el error y ahora ya puedes descargar
Saludos
Excelente explicación amigo. Me sirvió de mucho…
Muchas Gracias por tu ayuda! muy excelente tu codigo!
Warning: mysqli_fetch_object() expects parameter 1 to be mysqli_result, boolean given in C:\AppServ\www\editor\function.php on line 2
Cuales mi error?
Hola Victor
Este error ocurre porque el resultado de la consulta falló, y entonces el resultado devuelto fue «FALSE» en lugar de un «RESULTADO».
Lo que debes hacer es añadir un código para depurar y ver que esta ocurriendo en la consulta. El error lo puedes visualizar utilizando «mysqli_error».
Ejemplo de uso «mysqli_error»:
$sql = ‘SELECT * FROM paises’;
$rec = mysqli_query($conexion,$sql);
if (!$rec) {
echo(«Error: %s\n», mysqli_error($conexion));
}
Sabes como se colocaria la Ventana de edición de registros dentro de una ventana modal??
Que libreria estas utilizando para generar esos iconos.
Veo que solo declaras lo siguiente.
<a class="btn btn-primary" href="editar.php?id=id; ?>»>
Alguna respuesta?
Gracias de antemano.
Si no me equivoco es Font Awesome Icons, buscalo en Google y lo implementas en tus sitios web, muy facil de usar, saludos..
Gracias por su respuesta, buen dato!