actualizar datos con imagen en base de datos con pdo

Para actualizar datos con imagens y archivos, tendremos que proceder de la seguiente forma:

  • 1º-Recopilar los datos en el formulario
  • 2º -Enviar datos a la base de datos depues de modificados

Aqui tratare de explicar la primera parte que es capturar los datos de la base de datos en el formulario

En el listado, neste caso de empleados tendremos que tener un button que nos envie el ID del empleado a actualizar

<a name="" id="" class="btn btn-warning"
href="editar.php?txtidEmpleado=<?php echo $registro['idEmpleado'] ?>"
role="button">atualizar</a>
    

cuando damos clic en ese button enviamos los datos del idEmpleado a una pagina con el nombre de editar.php

en esa pagina como siempre que trabajamos con bases de datos tenemos que nos conectar a esa base de datos

Conexion en PDO con PHP-MySQL


...

Recebir los datos

Lo primero es perguntar que GET no venga vacio (sin nada) e si no pues el numero que trae es el idEmpleado lo vamos a guardar en una variable

        if (isset($_GET['txtidEmpleado'])) {
            $txtId = $_GET['txtidEmpleado'];
    

Tenendo ese dato el seguiente paso es hacer una consulta a la base de datos, para que nos diga todos los campos pertenecentes a ese registro

El codigo es el seguiente:

        $sql = ("SELECT * FROM tbl_empleados WHERE idEmpleado=:id");
        $stmt = $pdo->prepare($sql);
        $stmt->bindParam(':id', $txtId);
        $stmt->execute();
        $registro = $stmt->fetch(PDO::FETCH_LAZY);
        // print_r($registro);
        // exit;
        $nombres = $registro['nombres'];
        $prApellido = $registro['primeroApellido'];
        $sgApellido = $registro['segundoApellido'];
        $foto = $registro['foto'];
        $cv = $registro['cv'];
    
        $idPuesto = $registro['idPuesto'];
        $fecha = $registro['fecha'];
    }
    

Vamos ahora llenar los campos del formulario, con un atributo Value

Es muy importante crear un campo mas para recibir el idEmpleado este tendremos que adicionar otro atributo mas para que sea solo de lectura onlyReady

Los inputs de Foto e CV como son tipo file no se puede llenar con el atributo value entonces para resolver este incoveniente, vamos poner un enlace por encima del CV onde con un echo imprimimos el valor que tiene

Si lo tenemos en una carpeta tenemos que poner la ruta al archivo y seguidamente la impresion, asi de esta forma, si queremos ver (abrir) el archivo con un simple clic lo abrimos

La imagen en vez de capturarmos la url de la misma, vamos capturar la imagen asi que con la etiqueta imagen la capturamos

Nos falta por ultimo capturar e escribir en el campo de busqueda el puesto del empleado

lo hacemos con una consulta, e en el atributo option hacemos una pergunta que es, si existe ese registro que le ponga el atributo select o dicho de otra forma que selecione el puesto

codigo del campo select

<select class="form-select form-select-lg" name="txtPuesto" id="txtPuesto">
<?php foreach ($lista_puestos as $puesto) { ?>
<option <?php echo ($idPuesto == $puesto['idPuesto']) ? "selected" : ""; ?>
    value="<?php echo $puesto['idPuesto'] ?>"><?php echo $puesto['puesto'] ?>
</option>
<?php } ?>
</select>
    

Codigo del formulario y insercion de los datos en sus respectivos campos

        <div class="card border border-success border-3">
        <div class="card-header border ">
            <div>
                <h2>Actualizar de empleados</h2>
            </div>
        </div>
        <div class="card-body">
    
            <form action="" method="post" enctype="multipart/form-data">
    
                <div class="row">
                    <div class="col">
                        <label for="txtId">ID</label>
                        <input class="form-control" type="text" name="txtId" id="txtId" placeholder="idEmpledo"
                            value="<?php echo $txtId ?>">
                    </div>
                    <div class="col">
                        <label for="nombre">Nombre</label>
                        <input class="form-control" type="text" name="txtNombre" id="txtNombre" placeholder="nombres"
                            value="<?php echo  $nombres  ?>">
                    </div>
                    <div class="col">
                        <label for="apellido">1º Apellido</label>
                        <input class="form-control" type="text" name="txtApellido" id="txtApellido"
                            placeholder="primero apellido" value="<?php echo  $prApellido  ?>">
                    </div>
                    <div class="col">
                        <label for="segApellido">2º Apellido</label>
                        <input class="form-control" type="text" name="txtSegApellido" id="txtSegApellido"
                            placeholder="segundo apellido" value="<?php echo  $sgApellido  ?>">
                    </div>
                </div><br>
                <div class="row">
                    <div class="col form-control bg-success" style="padding: 5px;">
                        <label for="foto">Foto</label>
                        <img style="width:80px" class=" form-control" src="./Imagens/<?php echo  $foto  ?>" alt="">
                        <input class="form-control" type="file" name="foto" id="foto" placeholder="foto">
                    </div>
                    <div class="col form-control bg-success" style="padding: 5px;">
                        <label for="Cur">CV (Curriculum Vitae) PDF</label>
                        <a class="form-control" href="./pdf/<?php echo  $cv  ?>" target="_blank"
                            rel="noopener noreferrer"><?php echo  $cv  ?></a>
    
                        <input class="form-control" type="file" name="cur" id="cur" placeholder="Curriculum Vitae">
                    </div>
                </div>
    
                <div class="row">
                    <div class="col">
                        <div class="mb-3">
                            <label for="txtPuesto" class="form-label">Puesto</label>
                            <?php
                            $sql = ("SELECT * FROM tbl_puestos WHERE estatus=1"); //Creamos la consulta de la tabla
                            $stmt = $pdo->prepare($sql); //Preparamos esa consulta
                            $stmt->execute(); //La ejecutamos
                            $lista_puestos = $stmt->fetchAll(PDO::FETCH_ASSOC); //Creamos una variable con todos los registros
    
                            ?>
                            <select class="form-select form-select-lg" name="txtPuesto" id="txtPuesto">
                                <?php foreach ($lista_puestos as $puesto) { ?>
                                <option <?php echo ($idPuesto == $puesto['idPuesto']) ? "selected" : ""; ?>
                                    value="<?php echo $puesto['idPuesto'] ?>"><?php echo $puesto['puesto'] ?>
                                </option>
                                <?php } ?>
                            </select>
                        </div>
                    </div>
                    <div class="col"><br><br>
                        <label for="fecha">Fecha</label>
                        <input type="date" name="fecha" id="fecha" value="<?php echo $fecha ?>">
                    </div>
                </div>
    
                <button class="btn btn-success" type="submit">Actualizar</button>
                <a name="" id="" class="btn btn-warning" href="./index.php" role="button">Cancelar</a>
    
    
            </form>
    
        </div>
    
    </div>
    







Publicar un comentario

0 Comentarios