Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/04/2014, 14:24
Avatar de HackID1
HackID1
 
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 9 meses
Puntos: 17
Pregunta Borrar registro Fkey de 2 tablas Php

Hola !!!!. a todo forosdelweb :)

Bien me surge una duda.
¿Cómo hago para eliminar un cliente de una tabla y en otra tabla se eliminen todos los trabajos realizados a dicho cliente?.

El error que me sucede es que como es FOREIGN KEY no me permite borrarla. :(


En si tengo 2 tablas.

clientes
----------
codcliente (PK)
nombre
email

trabajos
----------
codtrabajos (PK)
codcliente (FK)
descripcion


Ahora he creado un formulario donde puedas insertar: o Codigo del cliente o Nombre. Una vez insertado uno de los 2, se procede a mostrar los datos de la tabla y un botón para eliminar ese registro.


Cuando doy al botón de eliminar registro este no se borra.

Lo he intentado creando 2 consultas, porque de otro modo siempre me sale error de foreign key :( .

Por favor necesito ayuda llevo mirando por Google pero no he dado con la solución y no se como borrar ese dato por php.


Otra duda. como puedo hacer para elegir en mi formulario entre borrar por Nombre o idcliente ?? en el mismo programa, lo he intentado con un if ... else pero no ha funcionado,





Dejo aqui los programas.

----------borrar.php

Código HTML:
Ver original
  1. <h2 align="center" > Cliente eliminar.</h2>
  2.            
  3.             <form action="eliminarcliente2.php" method="post" >
  4.            
  5.                 Elija cliente a eliminar
  6.                 <br/>
  7.                 Obligatorio uno de los 2 campos para realizar la b&uacute;squeda.
  8.                 <br/><br/>
  9.                
  10.                 <label>(*) C&oacute;digo Cliente: </label>
  11.                 <input type="text" name="codcliente" maxlength="50"
  12.                     onfocus="restaurar2()"  />
  13.                 <br/><br/>
  14.                    
  15.                 <label>(*) Nombre: </label>
  16.                 <input type="text" name="nombre" maxlength="50"
  17.                     onfocus="restaurar2()"  />
  18.                 <br/><br/>
  19.                
  20.                 <input name="enviar" type="submit" value="Enviar datos."/>
  21.                
  22.             </form>



Aqui hago un input hidden al final del form para pasar el idcliente por medio de el a la otra página php y asi proceder después al borrado de ese cliente.

------eliminarcliente2.php

Código PHP:
Ver original
  1. <h2 align="center" > Eliminar clientes.</h2>
  2.            
  3.            
  4.             <?php
  5.             /* eliminar cliente 2 */
  6.  
  7.             $codcliente = $_POST['codcliente'] ;
  8.  
  9.  
  10.         if ($codcliente != "" || $codcliente != 0) {
  11.             include('abre_conexion.php');  
  12.  
  13.                 $query = "select * from $tabla_db1 where codcliente = '$codcliente'";
  14.                 $result = mysql_query($query);
  15.  
  16.             while ($registro = mysql_fetch_array($result)){
  17.  
  18.             echo "
  19.  
  20.             <div align='center'>
  21.                 <table border='0' width='600' style='font-family: Verdana; font-size: 8pt' id='table1'>
  22.                     <tr>
  23.                         <td colspan='2'><h3 align='center'>Datos cliente a eliminar </h3></td>
  24.                     </tr>
  25.                     <tr>
  26.                         <td colspan='2'>En los campos puede ver los valores actuales.</td>
  27.                     </tr>
  28.                     <form method='POST' action='eliminarcliente3.php'>
  29.                     <tr>
  30.                         <td width='50%'>&nbsp;</td>
  31.                         <td width='50%'>&nbsp;</td>
  32.                     </tr>
  33.                     <tr>
  34.                         <td width='50%'><p align='center'><b>C&oacute;digo: </b></td>
  35.                         <td width='50%'><p align='center'><input type='text' name='codcliente' size='20' value='".$registro['codcliente']."' readonly='readonly'></td>
  36.                     </tr>
  37.                     <tr>
  38.                         <td width='50%'><p align='center'><b>Fecha Alta: </b></td>
  39.                         <td width='50%'><p align='center'><input type='text' name='fecha_alta' size='20' value='".$registro['fecha_alta']."' readonly='readonly'></td>
  40.                     </tr>
  41.                     <tr>
  42.                         <td width='50%'><p align='center'><b>Nombre: </b></td>
  43.                         <td width='50%'><p align='center'><input type='text' name='nombre' size='20' value='".$registro['nombre']."' readonly='readonly'></td>
  44.                     </tr>
  45.                     <tr>
  46.                         <td width='50%'><p align='center'><b>Apellido: </b></td>
  47.                         <td width='50%'><p align='center'><input type='text' name='apellido' size='20' value='".$registro['apellido']."' readonly='readonly'></td>
  48.                     </tr>
  49. <input type='hidden' name='codcliente' value='$codcliente'>
  50.                     <tr>
  51.                         <td width='100%' colspan='2'>
  52.                         <p align='center'>
  53.                         <input type='submit' value='Eliminar' name='B1'></p>
  54.                         </td>
  55.                     </tr>
  56.                     </form>
  57.                 </table>
  58.             </div>
  59.             ";
  60.             }
  61.             include('cierra_conexion.php');  
  62.         }
  63.         else {
  64.        
  65.             echo "Error en la conexi&oacute;n a la base de datos. " ;
  66.         }
  67.            
  68.             ?>




En este fichero como ven he intentado esa forma ejecutando primero borrar en tabla clientes y luego en tabla trabajos pero no he podido, debido a las FOREIGN KEY.

------------------------eliminarcliente3.php


Código PHP:
Ver original
  1. <?php
  2.                 // Eliminar en funcion del codcliente que recibimos
  3.  
  4.                 $codcliente = $_POST['codcliente'];
  5.                
  6.                 $fecha_alta = $_POST['fecha_alta'] ;
  7.                 $nombre = $_POST['nombre'] ;
  8.                 $apellido = $_POST['apellido'] ;
  9.                
  10.                 include('abre_conexion.php');  
  11.  
  12.                 $sql="  DELETE *
  13.                         FROM trabajos
  14.                         WHERE codcliente = '$codcliente'
  15.                
  16.                     ";
  17.                    
  18.                 $sql=" DELETE *
  19.                         FROM clientes
  20.                         WHERE codcliente = '$codcliente'
  21.                
  22.                     ";
  23.                        
  24.                 if(!mysql_query($sql)) echo mysql_error();
  25.  
  26.                 include('cierra_conexion.php');  
  27.  
  28.                 echo "
  29.                     <div align='center'>
  30.                         <p>Los datos han sido actualizados con exito.</p>
  31.  
  32.                         <p><a href='javascript:history.go(-1)'>VOLVER ATRÁS</a></p>
  33.  
  34.                         <p><a href='javascript:history.go(-2)'>INICIO</a></p>
  35.                     </div>
  36.                 ";
  37.                 ?>


La parte de introducir un nombre y que te salgan los datos de ese nombre , para después presionar el botón borrar no he podido conseguirlo.

Espero puedann ayudarme muchisimas gracias a todos!!! Si me pueden ayudar con eso, de poder elegir entre escribir el idcliente o el nombre (del cliente) en el formulario de borrado lo agradezco no he podido ver la forma.

Saludos!!!
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1