entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Editar y Eliminar registros de mysql desde php

Buenas primero que todo me presento mi nombre es victor y solicito ayuda estoy creando un sitio web donde pueda llevar el control de algo
hace los registros bien y todo pero me falta poder editar y borrar los registros he mirado varias cosas de como poder hacerlo pero no me resulta espero de su colaboracion dejare mi codigo para que me puedan orientar gracias.

index.php

?php
session_cache_limiter('nocache,private');
session_name('porcicola');
session_start();

if(empty($_SESSION["uid"]) || empty($_SESSION["pid"]) || empty($_SESSION["correo"]) || empty($_SESSION["usuario"]) || empty($_SESSION["perfil"])){
    header('location:/');
}

?>

<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <title>Registrar Estado</title>
    <link href="../../css/estilos.css" rel="stylesheet" type="text/css">
    <link rel="shortcut icon" type="image/png" href="../../images/favicon.png">
    <link rel="shortcut icon" type="image/png" href="http://eg.com/favicon.png">
</head>

<body>
    <div class="group">
        <form action="registrarEstado.php" method="POST">
            <input class="form-btn-menu" onClick="window.location.href='/app/'" name="menu" type="button" value="Menú">
            <input class="form-btn-cerrar" onClick="window.location.href='/'" name="cerrar" type="button" value="Cerrar Sesión">
            <br>
            <center>
                <h2><em>Registrar Estado</em></h2>
                <label for="estado">Estado <span><em>(requerido)</em></span></label>
                <input type="text" name="estado" class="form-input" required>
            </center>
            <center>
                <input class="form-btn" name="submit" type="submit" value="Registrar">
                <input class="form-btn" onClick="window.location.href='estados.php'" name="estados" type="button" value="Estados">
            </center>
            </p>
        </form>
    </div>
</body>

</html>

aca hago las consultas para traer los datos de la bd

<?php
    session_cache_limiter('nocache,private');
    session_name('porcicola');
    session_start();

    if(empty($_SESSION["uid"]) || empty($_SESSION["pid"]) || empty($_SESSION["correo"]) || empty($_SESSION["usuario"]) || empty($_SESSION["perfil"])){
        header('location:/');
    }

    require_once '../../clases/Conexion.php';
    $cnx = new Conexion();
?>

<!doctype html>

<html lang="es">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Estados</title>
        <link href="../../css/estilos.css" rel="stylesheet" type="text/css">
        <link rel="shortcut icon" type="image/png" href="../../images/favicon.png">

        <link href="/bootstrap/css/jquery.dataTables.min.css" rel="stylesheet">
        <link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">
        <link href="/bootstrap/css/dataTables.bootstrap.min.css" rel="stylesheet">

        <script src="/bootstrap/js/jquery.js"></script>

        <script src="/bootstrap/js/bootstrap.min.js"></script>
        <script src="/bootstrap/js/jquery.dataTables.min.js"></script>
        <script src="/bootstrap/js/dataTables.bootstrap.min.js"></script>
        <script type="text/javascript" charset="utf-8">
            $(document).ready(function() {
                $('#tabla').DataTable();
            } );
        </script>
    </head>
    <body>
        <div class="divBooststrap">
            <input class="form-btn-menu" onClick="window.location.href='/app/'" name="menu" type="button" value="Menú">
            <input class="form-btn-cerrar" onClick="window.location.href='/'" name="cerrar" type="button" value="Cerrar Sesión">
            <br>
            <center><h2><em>LISTA DE ESTADOS</em></h2></center>
            <div class="container">
                <div class="table-responsive">
                    <table id="tabla" class="hover" width="100%">
                        <thead>
                            <tr>
                                <th class="col-md-2">ID</th>
                                <th class="col-md-10">ESTADO</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php
                                $sql = "SELECT * FROM estado ORDER BY estado";
                                $selectEstados = $cnx->ejecutarConsulta($sql, $cnx->consultar);

                            $selectEstados = $cnx->ejecutarConsulta($sql, $cnx->consultar);
                                if(!isset($selectEstados["msg"])){
                                    $html = "";
                                    foreach ($selectEstados as $key => $valor) {
                                        $html.= "<tr>";
                                        $html.= "<td>{$selectEstados[$key]["id_estado"]}</td>";
                                        $html.= "<td>{$selectEstados[$key]["estado"]}</td>";

                                        $html.= "</tr>";

                                    }
                                    echo $html;
                                }
                                else {
                                    echo $selectEstados["msg"];
                                }
                            ?>
                        </tbody>
                    </table>
                </div>
            </div>
            <br>
            <?php
            if ($_SESSION["pid"]==="1") {
            ?>
                <center>
                    <input class="form-btn" onClick="window.location.href='/app/estado/'" name="submit" type="button" value="Atrás">

                </center>
            <?php
            } else if ($_SESSION["pid"]==="2") {
            ?>
                <center>
                    <input class="form-btn" onClick="window.location.href='/app/'" name="submit" type="button" value="Atrás">

                </center>
            <?php
            }
            ?>
        </div>              
        <script type="text/javascript">
            $('#tabla')
            .removeClass( 'display' )
            .addClass('table');
        </script>
    </body>
</html>

y finalmente el insert into para insertar en la bd

?php
session_cache_limiter('nocache,private');
session_name('porcicola');
session_start();

if(empty($_SESSION["uid"]) || empty($_SESSION["pid"]) || empty($_SESSION["correo"]) || empty($_SESSION["usuario"]) || empty($_SESSION["perfil"])){
    header('location:/');
}
else {
    require_once '../../clases/Conexion.php';
    $cnx = new Conexion();

    $estado = str_replace("'", "\'", utf8_decode($_POST['estado']));

    if(!empty($estado)){
        $sql = "INSERT INTO estado (estado)
            VALUES ('{$estado}')";
        $insertEstado = $cnx->ejecutarConsulta($sql);

        if ($insertEstado["estado"]) {
            header('location:success.html');
        } else {
            header('location:fail.html');
        }
    }
    else {
        header('location:/app/estado/');
    }
}
?>

espero de su ayuda Gracias.

1voto

zenosama comentado

pueden ponerle el caso cerrado gracias

1voto

Peter comentado

¿La respuesta de Leonardo es la solución? Si es así, por favor selecciona la respuesta como correcta.

Si no es así, por favor comparte la solución en una respuesta nueva y selecciónala como correcta.

Saludos.

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola @zenosama,

la edición de un registro es muy parecida a la inserción.

Partiendo de que estás listando los datos, y que para editar uno se hará click en un botón de "Modificar", este botón debe estar en un formulario con el ID del registro a modificar en un campo hidden. Así queda un formulario para registro que se ve en pantalla.

Supongamos que el action del formulario es editar.php

Lo que hace editar PHP es recibir el ID del registro, ejecutar una query para obtener solo ese registro, y luego generar un formulario igual al de insertar, pero cargando los valores leídos de la tabla.

El formulario se envía a un script similar al de insertar, pero en este caso, en vez de un INSERT INTO... ejecuta un UPDATE estado ... WHERE campo_clave=$valor_clave, para que se modifique solo ese registro y se le asignen los datos que recibís del formulario.

No se pueden dar muchas presiciones sin la estructura de la tabla, pero siempre es mejor una idea abstracta que un ejemplo concreto a la hora de escribir código.

Luego, no hagas los envíos de los datos con JavaScript. No hay ningún motivo para hacer un window.location. Los formularios deben llevar botones de tipo SUBMIT, con lo que hacerles click enviará el contenido del formulario al ACTION usando el METHOD elegido.

Saludos cordiales

1voto

zenosama comentado

Hola muchas gracias por la respuesta me puedes dar un ejemplo para ver de que manera puedo hacerlo y gracias.

2votos

Leonardo-Tadei comentado

Hola @zenosama,

hay decenas en la web, por ejemplo este.

Buscá "CRUD PHP". Te doy este ejemplo porque usa Programación Estructurada como tu código, ya que hay muchos que están escritos con POO.

Igual, entender el proceso es siempre mucho mejor que ver un ejemplo...

Saludos cordiales!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta