PHP - ¿Cómo eliminar datos eliminados de una tabla y guardalos en otra con php & mysql?

 
Vista:
sin imagen de perfil
Val: 63
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

¿Cómo eliminar datos eliminados de una tabla y guardalos en otra con php & mysql?

Publicado por Monica (33 intervenciones) el 09/10/2019 09:39:31
Estoy trabajando con una base datos y php y me gustaría poder eliminar datos de una tabla y guardarlos en otra, de esta forma esos datos no los pierdo, porque los necesito, pero si que los quito de la vista del usuario.

Este es el código que muestra los datos en una tabla al usuario. Que puede eliminar y editar, pero cuando pincha en guardar, quisiera que esos datos se fuesen a otra tabla de la BBDD y se quitasen de esa tabla y por tanto de la vista del usuario. Espero que me podáis ayudar:

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
<p>Resultados <?php echo $datos->num_rows; ?></p>
<div class="row table-responsive">
<table class="display" id="mitabla" border="1"  style="width:100%" >
 
<thead style='background-color:#292929;'>
 
    <th align="center"><font color=#FFFFFF>Marcar</th>
    <th align="left"><font color=#FFFFFF>N&#186; Cliente</th>
    <th align="left"><font color=#FFFFFF>Nombre completo</th>
    <th align="left"><font color=#FFFFFF>Zona de Ventas</th>
    <th align="left"><font color=#FFFFFF>Ramo Inicial</th>
    <th align="left"><font color=#FFFFFF>Ramo Definitivo</th>
    <th align="left"><font color=#FFFFFF>Tipo Contrato</th>
    <th align="left"><font color=#FFFFFF>Fecha Env&#237;o</th>
    <th align="left"><font color=#FFFFFF>Fecha Recepci&#243;n</th>
    <th align="left"><font color=#FFFFFF>Contador &#40;Fechas&#41;</th>
    <th align="left"><font color=#FFFFFF>Comentarios </th>
    <th align="left"><font color=#FFFFFF>Anexo Contrato</th>
    <th align="left"><font color=#FFFFFF>Escalado Distrib.</th>
    <th align="left"><font color=#FFFFFF>&#37; Bonus Distrib.</th>
    <th align="left"><font color=#FFFFFF>Factur Anual Distrib.</th>
    <th align="left"><font color=#FFFFFF>Anotaciones Internas</th>
    <th align="left"><font color=#FFFFFF>Anexo Interno</th>
    <th align="center"><font color=#FFFFFF>Editar</th>
    <th align="center"><font color=#FFFFFF>Borrar</th>
    <th align="center"><font color=#FFFFFF>Guardar</th>
 
</thead>
 
<?php while($d= $datos->fetch_object()):?>
 
 
    <tr>
    <td align="center"><input type="checkbox" name="casilla[]" value="<?php echo $d->id_contrpen; ?>"class="check"></td>
 
    <td align="left"><?php echo $d->noCliente; ?></td>
    <td align="left"><?php echo $d->nombreCliente;?></td>
    <td align="left"><?php echo $d->zv; ?></td>
    <td align="left"><?php echo $d->ramo; ?></td>
    <td align="left"><?php echo $d->ramoDef; ?></td>
    <td align="left"><?php echo $d->tipoContr ; ?></td>
    <td align="right"><?php echo $d->fechaEnvio; ?></td>
    <td align="right"><?php echo $d->fechaRecep; ?></td>
    <td align="left"><?php echo $d->contador; ?></td>
    <td align="left"><?php echo $d->comentarios; ?></td>
    <td align="left"><?php echo $d->anexo; ?></td>
    <td align="left"><?php echo $d->anexoDistrEscal; ?></td>
    <td align="left"><?php echo $d->anexoDistrBonus; ?></td>
    <td align="left"><?php echo $d->anexoDistrFact; ?></td>
    <td align="left"><?php echo $d->anotaciones; ?></td>
    <td align="left"><?php echo $d->anexoInter; ?></td>
    <td align="center"><a href="modificarContrPend.php?id_contrpen=<?php echo $d-> id_contrpen; ?>"><span class="glyphicon glyphicon-pencil"></span></a></td>
    <td align="center"><a href="#" data-href="eliminarContrPend.php?id_contrpen=<?php echo $d->id_contrpen; ?>" data-toggle="modal" data-target="#confirm-delete"><span class="glyphicon glyphicon-trash"></span></a></td>
    <td align="center"><a href="guardarContrPendBackup.php?id_contrpen=<?php echo $d->id_contrpen; ?>" ><span class="glyphicon glyphicon-floppy-disk"></span></a></td>
    </tr>
 
<?php endwhile; ?>
    <?php else:?>
    <h3>No hay Datos</h3>
    <?php endif; ?>

He creado un Trigger que podría hacer el trabajo, pero no me lleva los datos a la otra tabla, crea el registro pero vacio. Esta programado para BFORE DELETE Este es el trigger:

DROP TRIGGER IF EXISTS Contratos_Pendientes_Backup;CREATE DEFINER=cpses_djt2tjlsec@localhost TRIGGER Contratos_Pendientes_Backup BEFORE DELETE ON contratospendientes FOR EACH ROW INSERT INTO contratospendientesBackup (id_contrpen, noCliente, nombreCliente, zv, ramo, ramoDef, tipoContr, fechaEnvio, fechaRecep, contador, comentarios, anexo, anexoDistrEscal, anexoDistrBonus, anexoDistrFact, anotaciones, anexoInter, created_at) VALUES (contratospendientes.noCliente, contratospendientes.nombreCliente, contratospendientes.zv, contratospendientes.ramo, contratospendientes.ramoDef, contratospendientes.tipoContr, contratospendientes.fechaEnvio, contratospendientes.fechaRecep, contratospendientes.contador, contratospendientes.comentarios, contratospendientes.anexo, contratospendientes.anexoDistrEscal, contratospendientes.anexoDistrBonus, contratospendientes.anexoDistrFact, contratospendientes.anotaciones, contratospendientes.anexoInter)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

¿Cómo eliminar datos eliminados de una tabla y guardalos en otra con php & mysql?

Publicado por joel (1269 intervenciones) el 09/10/2019 18:06:47
Hola Monica, creo que el planteamiento es erroneo, ya que mover datos de una tabla a otra es un error, ya que para las posibles busquedas futuras, siempre vas a tener el problema de las dos tablas.

La solución pasa por poner un campo en la tabla que determina que ese registro esta borrado, y cuando hagas las consultas, hacer referencia a los registros que no tienen ese campo marcado.

Por ejemplo, si añades el campo: eliminado tinyint default 0
En tu busqueda, solo tienes que añadir WHERE eliminado=0... y solo te mostrara los no eliminados.

No se si me he sabido explicar correctamente...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 63
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

¿Cómo eliminar datos eliminados de una tabla y guardalos en otra con php & mysql?

Publicado por Monica (33 intervenciones) el 09/10/2019 18:21:23
Hola Joel,
SI, entiendo lo que dieces, pero quiero que se vayan a otra tabla, no para que se borren, si no para que desaparezcan de la principal y la otra sea un histórico, de forma que en la página habrá un botón de histórico que abrirá esa tabla.
Quizás lo esté planteando mal como lo hacía hasta ahora, pero lo que quiero es tener un histórico de los registros de la tabla principal.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

¿Cómo eliminar datos eliminados de una tabla y guardalos en otra con php & mysql?

Publicado por joel (1269 intervenciones) el 09/10/2019 19:02:18
El histórico lo tienes igual revisando la tabla con el valor eliminado=1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Cómo eliminar datos eliminados de una tabla y guardalos en otra con php & mysql?

Publicado por Express (8 intervenciones) el 09/10/2019 18:39:16
Una forma muy util es haciendo el trigger en sql. En PHP lo que puedes hacer es que cuando vallas a eliminar un elemento primero hagas una consulta que en la que selecciones todos los datos de la tabla que tengan el identificador del registro que quieres eliminar. Luego esos mismos datos que obtubiste en la consulta select los insertas con una consulta insert en la otra tabla.


ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
//tu usas la clase para conectarte a la base de datos que quieras
 
$query1 = "Select * from `tabla` where `id`='" . $_GET['id']
 
$result = $NewConn->ExecuteQuery($query1);
 
$row = $NewConn->GetRows($result);//guardas los datos de la consulta en una variable
//hacer la consulta de insertar en la tabla2
$query3 = "INSERT INTO `tabla2`( `id`, `campo1`, `campo2`, `campo3`, `campo4`, `campo5`,`campo6`) VALUES ('row[0]',row[1]',row[2]',row[3]',row[4]',row[5]',row[6]')";
 
$result3 = $NewConn->ExecuteQuery($query3);
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 63
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

¿Cómo eliminar datos eliminados de una tabla y guardalos en otra con php & mysql?

Publicado por Monica (33 intervenciones) el 10/10/2019 11:07:05
Cuando en la tabla pincho en borrar se ejecuta el archivo eliminar.php que tiene este código
1
2
3
4
5
6
7
8
<?php
session_start();
require 'funcs/funcs.php';
require 'funcs/conexion.php';
 
$id_contrpen = $_GET['id_contrpen'];
$sql = "DELETE FROM contratospendientes WHERE id_contrpen = '$id_contrpen'";
$resultado = $mysqli->query($sql);

Que elimina el registro de la tabla y de la base de datos.
Y lo he cambiado por esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
session_start();
require 'funcs/funcs.php';
require 'funcs/conexion.php';
 
$id_contrpen = $_GET['id_contrpen'];
 
$sql = "SELECT * FROM contratospendientes WHERE id_contrpen = '$id_contrpen'";
$resultado = $mysqli->query($sql);
$row = $mysqli->GetRows($resultado);//guarda los datos de la consulta en una variable
//hacer la consulta de insertar en la contratospendientesBackup
$sql1 = "INSERT INTO contratospendientesBackup (noCliente, nombreCliente, zv, ramo, tipoContr, fechaEnvio, fechaActual, fechaRecep, contador, comentarios, anexo, anexoDistrEscal, anexoDistrBonus, anotaciones, anexoInter, eliminado) VALUES ('$noCliente', '$nombreCliente','$zv', '$ramo', '$tipoContr', '$fechaEnvio', '$fechaRecep', '$contador', '$comentarios', '$anexo', '$anexoDistrEscal', '$anexoDistrBonus', '$anotaciones', '$anexoInter', '$eliminado')";
$resultado1 = $mysqli->query($sql1);
?>

Pero no me devuelve nada, da error de página. Lo estoy haciendo mal?
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 63
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

¿Cómo eliminar datos eliminados de una tabla y guardalos en otra con php & mysql?

Publicado por Monica (33 intervenciones) el 10/10/2019 13:17:14
He hecho otra cosa. He creado un formulario con
1
<form class="form-horizontal" method="POST" action="guardarContrPendBackup.php" >
Se abre un formulario con los datos del registro y al pinchr en guardar es este otro archivo el que debería de hacer el trabajo de guardar en la otra tabla
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
<?php
require 'funcs/funcs.php';
require 'funcs/conexion.php';
 
$id_contrpen = $_POST['id_contrpen'];
$noCliente = $_POST['noCliente'];
$nombreCliente= $_POST['nombreCliente'];
$zv = $_POST['zv'];
$ramo = $_POST['ramo'];
$tipoContr = $_POST['tipoContr'];
$fechaEnvio = $_POST['fechaEnvio'];
$fechaActual = $_POST['fechaActual'];
$fechaRecep = $_POST['fechaRecep'];
$contador = $_POST['contador'];
$comentarios = $_POST['comentarios'];
$anexo = $_FILES['archivo'];
$anexoDistrEscal = $_POST['anexoDistrEscal'];
$anexoDistrBonus = $_POST['anexoDistrBonus'];
$anotaciones = $_POST['anotaciones'];
$anexoInter = $_POST['anexoInter'];
 
$resultado = $mysqli->query($sql);
$sql = "INSERT INTO contratospendientesBackup (noCliente, nombreCliente, zv, ramo, tipoContr, fechaEnvio, fechaActual, fechaRecep, contador, comentarios, anexo, anexoDistrEscal, anexoDistrBonus, anotaciones, anexoInter, eliminado) VALUES ($noCliente', '$nombreCliente','$zv', '$ramo', '$tipoContr', '$fechaEnvio', 'fechaActual', '$fechaRecep', '$contador', '$comentarios', '$anexo', '$anexoDistrEscal', '$anexoDistrBonus', '$anotaciones', '$anexoInter', '$eliminado')";
$resultado = $mysqli->query($sql);
?>
 
<div class="row">
    <div class="row" style="text-align:center"> <br>
	<?php if($resultado) { ?>
		<h3>REGISTRO GUARDADO</h3>
	<?php } else { ?>
		<h3>ERROR AL GUARDAR</h3>
	<?php } ?>
<a href="contratospendientes.php" class="btn btn-primary">Volvera la tabla de datos</a>
     </div>
</div>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Cómo eliminar datos eliminados de una tabla y guardalos en otra con php & mysql?

Publicado por Express (8 intervenciones) el 10/10/2019 16:58:42
Creo que la opción de que cuando se pase de una tabla para la otra sea transparente para el usuario es la mejor opción. o sea este código y no el otro que posteaste.

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
<?php
 
session_start();
 
require 'funcs/funcs.php';
 
require 'funcs/conexion.php';
 
 
 
$id_contrpen = $_GET['id_contrpen'];
 
 
 
$sql = "SELECT * FROM contratospendientes WHERE id_contrpen = '$id_contrpen'";
 
$resultado = $mysqli->query($sql);
 
$row = $mysqli->GetRows($resultado);//guarda los datos de la consulta en una variable
 
//hacer la consulta de insertar en la contratospendientesBackup
 
$sql1 = "INSERT INTO contratospendientesBackup (noCliente, nombreCliente, zv, ramo, tipoContr, fechaEnvio, fechaActual, fechaRecep, contador, comentarios, anexo, anexoDistrEscal, anexoDistrBonus, anotaciones, anexoInter, eliminado) VALUES ('$noCliente', '$nombreCliente','$zv', '$ramo', '$tipoContr', '$fechaEnvio', '$fechaRecep', '$contador', '$comentarios', '$anexo', '$anexoDistrEscal', '$anexoDistrBonus', '$anotaciones', '$anexoInter', '$eliminado')";
 
$resultado1 = $mysqli->query($sql1);
 
?>

Así que este ejemplo creo que es la mejor variante. Si pudieras decirme que tipo de error es el que da seria mas fácil ayudarte. podrías poner "echo $mysqli->query($sql1);" y así me dices que error es el que te arrojó. creo que error debe estar en la consulta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 63
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

¿Cómo eliminar datos eliminados de una tabla y guardalos en otra con php & mysql?

Publicado por Monica (33 intervenciones) el 10/10/2019 17:19:25
Cuando lo hago con el código que te puse me sale "error al guardar" pero no me dice el error exacto.
Al poner tu código me da error de página "esta página no funciona HTTP error 500"


Te adjunto la secuencia de lo que debería pasar.
secuencia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Cómo eliminar datos eliminados de una tabla y guardalos en otra con php & mysql?

Publicado por Express (8 intervenciones) el 10/10/2019 17:38:32
Ponle un echo a las 3 variables donde guardas las consultas de seleccionar la fila que quieres eliminar, la de insertar para la otra tabla y la de eliminar.
echo " \n"; //si quieres pones esto, es un separador para que no tengas problemas en encontrar donde empiezan y terminan las consultas
echo $sql1;
echo " \n";
echo $sql2;
echo " \n";
echo $sql3;
echo " \n";

cuando ejecutes la pagina copia la consulta y trata de ejecultarla en tu servidor de base datos en la parte donde pones el codigo sql. y mira a ver que error te devuelven las consultas.
primero la consulta de select, después insertar y luego la de eliminar. sigo pensando que la sintaxis de la consulta debe estar mal.

no se si me entiendes esto es para que verifiques que las consultas sql que construiste estén bien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 63
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

¿Cómo eliminar datos eliminados de una tabla y guardalos en otra con php & mysql?

Publicado por Monica (33 intervenciones) el 11/10/2019 11:52:15
Ya he dado con el error, me faltaba una ' en uno de los campos y además el campo "anexo" lo tenía como $anexo = $_FILE['archivo']; y no como $anexo = $_POST['archivo']; ya que está como "texto" en el formulario y no como "File".

Ahora el registro se copia correctamente en la otra tabla pero no desaparece de la principal. Así que ahora me pondré con ese punto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 63
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

¿Cómo eliminar datos eliminados de una tabla y guardalos en otra con php & mysql?

Publicado por Monica (33 intervenciones) el 11/10/2019 12:15:50
He conseguido que el registro se elimine y se guarde en la otra tabla.
1
2
3
4
5
6
$sql = "Delete From contratospendientes where id_contrpen = '$id_contrpen'";
$resultado = $mysqli->query($sql);
 
$sql1 = "INSERT INTO contratospendientesBackup (noCliente, nombreCliente, zv, ramo, tipoContr, fechaEnvio, fechaActual, fechaRecep, contador, comentarios, anexo, anexoDistrEscal, anexoDistrBonus, anotaciones, anexoInter ) VALUES ('$noCliente', '$nombreCliente','$zv', '$ramo', '$tipoContr', '$fechaEnvio', 'fechaActual', '$fechaRecep', '$contador', '$comentarios', '$anexo', '$anexoDistrEscal', '$anexoDistrBonus', '$anotaciones', '$anexoInter')";
$resultado1 = $mysqli->query($sql1);
?>

Ese es el código que he utilizado.
Muchísimas gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar