Foros del Web » Programando para Internet » PHP »

Borrar tablas relacionadas.

Estas en el tema de Borrar tablas relacionadas. en el foro de PHP en Foros del Web. Hola, espero que esten bien, tengo un problema. Como hago para borrar los registros de estas dos tablas relacionadas. Tabla musica. id, idg, album, artista, ...
  #1 (permalink)  
Antiguo 21/10/2012, 15:32
 
Fecha de Ingreso: octubre-2012
Ubicación: Caracas, Venezuela
Mensajes: 31
Antigüedad: 12 años, 1 mes
Puntos: 0
Borrar tablas relacionadas.

Hola, espero que esten bien, tengo un problema.
Como hago para borrar los registros de estas dos tablas relacionadas.
Tabla musica.
id, idg, album, artista, canciones, ano, imagen.
Tabla generos.
idg, genero1, genero2, genero3, genero4.

Codigo.
Código PHP:
<?php 

$id 
$_GET['id'];  
        

require (
"funciones2.php");

$idc conectar();



$sql="SELECT * FROM musica m, generos g  WHERE m.idg = g.idg";


$res ejecutar($sql,$idc);

$fila getRegistro ($res);

 
$sql "DELETE generos FROM generos g, musica m WHERE g.idg = m.idg";
 
 
$res ejecutar($sql,$idc);
$sql "SELECT * FROM musica WHERE id=$id";

$res ejecutar($sql,$idc);

$fila getRegistro ($res);

$sql "DELETE FROM musica WHERE id=$id";

$res ejecutar($sql,$idc);


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sistema de rock</title>
<link href="formato1.css" rel="stylesheet" type="text/css" />
</head>
<body>


   <?php 
if ($res)
    echo 
"ELIMINACIÓN EXITOSA";
else
    echo 
"ERROR";
?>

<br/>
<br/>

</body>
</html>
<?php 
cerrar 
($idc);
?>
No me borra los registros relacionados de la tabla generos con musica, es decir solo los de musica.
Por favor que estoy haciendo mal o que me hace falta, para que me borre los registros relacionados por estas dos tablas, por supuesto solo el que selecciono eliminar al listarlo.
Saludos. Hablamos.
  #2 (permalink)  
Antiguo 21/10/2012, 15:38
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años
Puntos: 168
Respuesta: Borrar tablas relacionadas.

Código PHP:
Ver original
  1. $sql = "DELETE generos FROM generos g, musica m WHERE g.idg = m.idg";

DELETE borra datos de 1 tabla, no de 2, tendrás que hacerlo por separado
  #3 (permalink)  
Antiguo 21/10/2012, 16:31
 
Fecha de Ingreso: octubre-2012
Ubicación: Caracas, Venezuela
Mensajes: 31
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Borrar tablas relacionadas.

Disculpa amigo, me borra los registros de la tabla musica, pero no la de generos.
No entiendo lo que me dijstes. Puedes explicarme mas detalladamente, como soluciono mi problema, porque amigo e intentado de todo y nada, estoy cansado de intentar y no logro, borrar el registro que esta en la dos tablas relacionadas, al mismo tiempo.
  #4 (permalink)  
Antiguo 21/10/2012, 16:36
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años
Puntos: 168
Respuesta: Borrar tablas relacionadas.

La sentencia DELETE borra datos de tablas, pero de a 1 A LA VEZ, vos en una sola sentencia queres borrar datos de generos y musica y no es así como funciona, es de 1 o la otra, pero no las 2 al mismo tiempo, es por eso que te digo que tenes que hacer las sentencias por separado, 1 DELETE para la tabla generos y otro DELETE para la tabla musica.
  #5 (permalink)  
Antiguo 21/10/2012, 17:22
 
Fecha de Ingreso: octubre-2012
Ubicación: Caracas, Venezuela
Mensajes: 31
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Borrar tablas relacionadas.

Ok amigo te entiendo pero me da dos errores, te los muestro:

Código PHP:
<?php 

$id 
$_GET['id'];  
$idg $_POST['idg'];  
//$idg = $_GET['idg'];          
//$idg = isset($_GET["idg"])? $_GET["idg"]: '';  

require ("funciones2.php");

$idc conectar();


$sql "SELECT * FROM musica WHERE idg=$idg";
//$sql="SELECT * FROM musica m, generos g  WHERE m.idg = g.idg";

$res ejecutar($sql,$idc);

$fila getRegistro ($res);
$sql "DELETE FROM musica WHERE idg=$idg"
//$sql = "DELETE generos FROM generos g, musica m WHERE g.idg = m.idg";
 
$res ejecutar($sql,$idc);

$sql "SELECT * FROM musica WHERE id=$id";

$res ejecutar($sql,$idc);

$fila getRegistro ($res);

$sql "DELETE FROM musica WHERE id=$id";

$res ejecutar($sql,$idc);


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sistema de rock</title>
<link href="formato1.css" rel="stylesheet" type="text/css" />
</head>
<body>


   <?php 
if ($res)
    echo 
"ELIMINACIÓN EXITOSA";
else
    echo 
"ERROR";
?>

 
<br/>
<br/>

</body>
</html>
<?php 
cerrar 
($idc);
?>
Notice: Undefined index: idg in C:\wamp\www\Edward-Relaciones\eliminar.php on line 4
Call Stack
# Time Memory Function Location
1 0.0032 143944 {main}( ) ..\eliminar.php:0

( ! ) Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\Edward-Relaciones\funciones2.php on line 22
Call Stack
# Time Memory Function Location
1 0.0032 143944 {main}( ) ..\eliminar.php:0
2 0.0053 155752 getRegistro( ) ..\eliminar.php:18
3 0.0053 155800 mysql_fetch_array ( ) ..\funciones2.php:22
ELIMINACIÓN EXITOSA

Y no borra el registro de la tabla generos.
  #6 (permalink)  
Antiguo 21/10/2012, 17:27
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años
Puntos: 168
Respuesta: Borrar tablas relacionadas.

y bueno ahi te dice que la variable idg no está definida, o tal vez no tenga valores, fijate que te está llegando con idg.
var_dump($idg); a ver que valores tiene, al parece no la reconoce.

Y mysql_fetch_array no le está llevando algo con valores, el parametro que le lleva tendrá valor NULL, hace lo mismo para la variable que le pasas a esa función con var_dump a ver que tiene.

Igual no veo ninguna función fetch_array asi que supongo que está dentro del script que incluis.
  #7 (permalink)  
Antiguo 21/10/2012, 17:37
 
Fecha de Ingreso: octubre-2012
Ubicación: Caracas, Venezuela
Mensajes: 31
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Borrar tablas relacionadas.

Amigo de esta forma solo me muestra el problema del indice de idg, te lo muestro.
Código PHP:
<?php 

$id 
$_GET['id'];  
//var_dump($idg);  
//$idg = $_POST['idg'];          
//$idg = isset($_GET["idg"])? $_GET["idg"]: '';  

require ("funciones2.php");

$idc conectar();


$sql "SELECT * FROM generos WHERE idg=$idg";
//$sql="SELECT * FROM musica m, generos g  WHERE m.idg = g.idg";
$sql "SELECT * FROM musica WHERE id=$id";
$res ejecutar($sql,$idc);

$fila getRegistro ($res);
$sql "DELETE FROM generos WHERE idg=$idg"
//$sql = "DELETE generos FROM generos g, musica m WHERE g.idg = m.idg";
 
$sql "DELETE FROM musica WHERE id=$id";

//$res = ejecutar($sql,$idc);

//$sql = "SELECT * FROM musica WHERE id=$id";

//$res = ejecutar($sql,$idc);

//$fila = getRegistro ($res);

//$sql = "DELETE FROM musica WHERE id=$id";

$res ejecutar($sql,$idc);


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sistema de rock</title>
<link href="formato1.css" rel="stylesheet" type="text/css" />
</head>
<body>


   <?php 
if ($res)
    echo 
"ELIMINACIÓN EXITOSA";
else
    echo 
"ERROR";
?>

 
<br/>
<br/>

</body>
</html>
<?php 
cerrar 
($idc);
?>
SCREAM: Error suppression ignored for
( ! ) Notice: Undefined variable: idg in C:\wamp\www\Edward-Relaciones\eliminar.php on line 13
Call Stack
# Time Memory Function Location
1 0.0005 142824 {main}( ) ..\eliminar.php:0

( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined variable: idg in C:\wamp\www\Edward-Relaciones\eliminar.php on line 19
Call Stack
# Time Memory Function Location
1 0.0005 142824 {main}( ) ..\eliminar.php:0
ELIMINACIÓN EXITOSA
  #8 (permalink)  
Antiguo 21/10/2012, 17:39
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años
Puntos: 168
Respuesta: Borrar tablas relacionadas.

( ! ) Notice: Undefined variable: idg in C:\wamp\www\Edward-Relaciones\eliminar.php on line 13
Call Stack

seguis con el mismo problema pero ahora peor,
Código PHP:
Ver original
  1. //$idg = $_POST['idg'];

si comentas la parte donde la definis a la variable idg es obvio que te va a decir que no está definida, piensa un poco lo que haces.
  #9 (permalink)  
Antiguo 21/10/2012, 18:10
 
Fecha de Ingreso: octubre-2012
Ubicación: Caracas, Venezuela
Mensajes: 31
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Borrar tablas relacionadas.

Amigo, no me muestra error, pero no me borra el registro de la tabla generos, que tengo relacionada con las tablas.
Solo me borra el registro en musica y no en generos.

Código PHP:
<?php 

$id 
$_GET['id'];  
//var_dump($idg);  
          
$idg = isset($_POST["idg"])? $_POST["idg"]: '';  

require (
"funciones2.php");

$idc conectar();



$sql "SELECT * FROM generos WHERE idg=$idg";
 
$sql "SELECT * FROM musica WHERE id=$id";


//$sql="SELECT * FROM musica m, generos g  WHERE m.idg = g.idg";

$res ejecutar($sql,$idc);

$fila getRegistro ($res);



$sql "DELETE FROM generos WHERE idg=$idg"
$sql "DELETE FROM musica WHERE id=$id";

//$sql = "DELETE generos FROM generos g, musica m WHERE g.idg = m.idg";
$res ejecutar($sql,$idc);

 
//$sql = "SELECT * FROM musica WHERE id=$id";
// $sql = "SELECT * FROM musica WHERE id=$id";



//$sql = "SELECT * FROM musica WHERE id=$id";

//$res = ejecutar($sql,$idc);

//$fila = getRegistro ($res);

//$sql = "DELETE FROM musica WHERE id=$id";
// $sql = "DELETE FROM musica WHERE id=$id";

//$sql = "DELETE FROM musica WHERE id=$id";
//$res = ejecutar($sql,$idc);


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sistema de rock</title>
<link href="formato1.css" rel="stylesheet" type="text/css" />
</head>
<body>


   <?php 
if ($res)
    echo 
"ELIMINACIÓN EXITOSA";
else
    echo 
"ERROR";
?>

 
<br/>
<br/>

</body>
</html>
<?php 
cerrar 
($idc);
?>
  #10 (permalink)  
Antiguo 21/10/2012, 18:23
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años
Puntos: 168
Respuesta: Borrar tablas relacionadas.

Pero fijate lo que estas haciendo

Código PHP:
Ver original
  1. $sql = "DELETE FROM generos WHERE idg=$idg";  
  2. $sql = "DELETE FROM musica WHERE id=$id";

primero a sql le asignas como valor esto "DELETE FROM generos WHERE idg=$idg";
y luego le asignas el valor "DELETE FROM musica WHERE id=$id";
el simbolo = es de asignación, por lo tanto borra el valor anterior que tenía.
Hace 2 variables distintas algo como
Código PHP:
Ver original
  1. $sql1 = "DELETE FROM generos WHERE idg=$idg";  
  2. $sql2 = "DELETE FROM musica WHERE id=$id";

o sino hace algo como
Código PHP:
Ver original
  1. $sql = "DELETE FROM generos WHERE idg=$idg";  
  2. $res1 = ejecutar($sql,$idc);
  3.  
  4. $sql = "DELETE FROM musica WHERE id=$id";
  5. $res2 = ejecutar($sql,$idc);

supongo que ejecutar es una función que definis en el script que incluis, no tengo ni idea de que función usas para ejecutar la consulta, tal vez sea mysql_query, pero en fin, creo que no deberías tener problemas.
  #11 (permalink)  
Antiguo 21/10/2012, 18:45
 
Fecha de Ingreso: octubre-2012
Ubicación: Caracas, Venezuela
Mensajes: 31
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Borrar tablas relacionadas.

Te dejo el otro codigo, estoy tratando de acomodarlo, como me dices.

Código PHP:
<?php
function conectar() {
    
$idc mysql_connect ("localhost""root""");
    if (!
$idc)
        die (
"Error en la conexion al MYSQL");
    if (!
mysql_select_db ("bd_prueba3"$idc))
        die(
"Error en la seleccion de la BD");
        
mysql_query ("SET NAMES 'utf8'");
        return 
$idc;
    
    }

function 
ejecutar ($sql,$idc){
    return 
mysql_query($sql,$idc);
    }

function 
totalRegistros ($res){
    return 
mysql_num_rows ($res);
    }
    
function 
getRegistro ($res){
    return 
mysql_fetch_array ($res);
    }



function 
cerrar ($idc){
    
mysql_close($idc);
    }


?>
  #12 (permalink)  
Antiguo 21/10/2012, 18:53
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años
Puntos: 168
Respuesta: Borrar tablas relacionadas.

Si esta bien, solo hacelo como te dije antes, y no tenes que tener problemas.
  #13 (permalink)  
Antiguo 22/10/2012, 07:45
 
Fecha de Ingreso: octubre-2012
Ubicación: Caracas, Venezuela
Mensajes: 31
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Borrar tablas relacionadas.

Amigo, buenos dias, hice lo que me dijistes, pero me da un error, que no logro resolver.

Eliminar

Código PHP:
<?php 

$id 
$_GET['id'];  
//var_dump($idg);  
          
$idg = isset($_POST["idg"])? $_POST["idg"]: '';  

require (
"funciones2.php");

$idc conectar();



$sql "SELECT * FROM generos WHERE idg=$idg";
$res2 ejecutar($sql,$idc);
$fila getRegistro ($res2);
$sql "SELECT * FROM musica WHERE id=$id";
$res1 ejecutar($sql,$idc);
$fila getRegistro ($res1);





//$sql="SELECT * FROM musica m, generos g  WHERE m.idg = g.idg";

//$res = ejecutar($sql,$idc);
//$res2 = ejecutar($sql,$idc);
//$fila = getRegistro ($res);
//$fila = getRegistro ($res2);


$sql "DELETE FROM generos WHERE idg=$idg"
$res2 ejecutar($sql,$idc);
$sql "DELETE FROM musica WHERE id=$id";
$res1 ejecutar($sql,$idc);
//$sql = "DELETE generos FROM generos g, musica m WHERE g.idg = m.idg";
//$res = ejecutar($sql,$idc);
//$res2 = ejecutar($sql,$idc);
 //$sql = "SELECT * FROM musica WHERE id=$id";
// $sql = "SELECT * FROM musica WHERE id=$id";



//$sql = "SELECT * FROM musica WHERE id=$id";

//$res = ejecutar($sql,$idc);

//$fila = getRegistro ($res);

//$sql = "DELETE FROM musica WHERE id=$id";
// $sql = "DELETE FROM musica WHERE id=$id";

//$sql = "DELETE FROM musica WHERE id=$id";
//$res = ejecutar($sql,$idc);


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sistema de rock</title>
<link href="formato1.css" rel="stylesheet" type="text/css" />
</head>
<body>


   <?php 
if ($res1)
    echo 
"ELIMINACIÓN EXITOSA";
elseif (
$res2)
    echo 
"ELIMINACIÓN EXITOSA";
    
else    echo 
"ERROR";



?>

 
<br/>
<br/>

</body>
</html>
<?php 
cerrar 
($idc);
?>
El funciones2

Código PHP:
<?php
function conectar() {
    
$idc mysql_connect ("localhost""root""");
    if (!
$idc)
        die (
"Error en la conexion al MYSQL");
    if (!
mysql_select_db ("bd_prueba3"$idc))
        die(
"Error en la seleccion de la BD");
        
mysql_query ("SET NAMES 'utf8'");
        return 
$idc;
    
    }

function 
ejecutar ($sql,$idc){
    return 
mysql_query($sql,$idc);
    }
function 
ejecutar2 ($sql,$idc){
    return 
mysql_query($sql,$idc);
    }

function 
totalRegistros2 ($res2){
    return 
mysql_num_rows ($res2);
    }
function 
totalRegistros ($res1){
    return 
mysql_num_rows ($res1);
    }
function 
getRegistro2 ($res2){
    return 
mysql_fetch_array ($res2);
    }    
function 
getRegistro ($res1){
    return 
mysql_fetch_array ($res1);
    }




function 
cerrar ($idc){
    
mysql_close($idc);
    }


?>
El error.

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\Edward-Relaciones\funciones2.php on line 30
Call Stack
# Time Memory Function Location
1 0.0085 144048 {main}( ) ..\eliminar.php:0
2 0.0201 157416 getRegistro( ) ..\eliminar.php:16
3 0.0201 157464 mysql_fetch_array ( ) ..\funciones2.php:30
ELIMINACIÓN EXITOSA

Por favor, me podrian ayudar, que no logro resolver este problema.
Saludos, Hablamos.

Etiquetas: html, registro, sql, tabla, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:57.