Foros del Web » Programando para Internet » PHP »

Problemas al borrar datos de una bd.

Estas en el tema de Problemas al borrar datos de una bd. en el foro de PHP en Foros del Web. Hola, pues ahora molestandolos con este error, que no se a que se deba Estoy realizando un script en donde un administrador puede borrar a ...
  #1 (permalink)  
Antiguo 29/01/2009, 18:47
Avatar de kurokishi  
Fecha de Ingreso: enero-2009
Ubicación: Tenochtitlán
Mensajes: 109
Antigüedad: 15 años, 3 meses
Puntos: 1
Problemas al borrar datos de una bd.

Hola, pues ahora molestandolos con este error, que no se a que se deba
Estoy realizando un script en donde un administrador puede borrar a los usuarios del sistema, Los scripts de alta y modificacion me funcionaron bien, pero este no me deja.
El codigo es el siguiente:

Código PHP:
<?php
session_start
();
$_SESSION['usuario'];
$_SESSION['nivel'];
$_SESSION['nickname'];
    
$con=pg_connect("host=127.0.0.1 port=5432 dbname=Curso user=postgres password=lufy");
    if (!
$con)
    {
    echo 
"Error al conectarse a la Base de Datos";
    }
    else
    {
        if (isset(
$_POST['borrar']))
        {
            if (empty(
$_POST['borrar']))
            {
                echo 
"
                    <html>
                    <head>
                        <link href='../nihongo.css' rel='stylesheet' type='text/css'>
                    </head>
                        <body style='background-color:transparent;' oncontextmenu='return false'>
                            <p class='titulo'>Debe llenar el campo de Número de cuenta.</p>
                        </body>
                    </html>"
;
            }
            else
            {
                
$usuario=$_POST['borrar'];
                
$sql="DELETE c.usuario, c.password, c.nivel, i.usuario, i.nombres, i.pateno, i.materno, i.nickname, a.usuario, a.intentos, a.calificacion, b.usuario, b.intentos, b.calificacion, d.usuario, d.intentos, d.calificacion, e.usuario, e.intentos, e.calificacion, f.usuario, f.intentos, f.calificacion FROM comparacion c, id i, renshu1 a, renshu2 b, renshu3 d, renshu4 e, renshu5 f WHERE a.usuario='$usuario' AND b.usuario='$usuario' AND c.usuario='$usuario' AND d.usuario='$usuario' AND e.usuario='$usuario' AND f.usuario='$usuario'";
    
//aqui uso un JOIN para que borre al usuario de todas las tablas                        
                
if (@pg_query($sql))
                {
                    echo 
"
                    <html>
                    <head>
                        <link href='../nihongo.css' rel='stylesheet' type='text/css'>
                    </head>
                        <body style='background-color:transparent;' oncontextmenu='return false'>
                            <p class='titulo'>Alumno eliminado del sisema</p>
                        </body>
                    </html>"
;
                }
                else
                {
                    echo 
"
                        <html>
                        <head>
                            <link href='../nihongo.css' rel='stylesheet' type='text/css'>
                        </head>
                            <body style='background-color:transparent;' oncontextmenu='return false'>
                                <p class='titulo'>Error al eliminar al alumno</p>
                            </body>
                        </html>"
;
                }
            }
        }
    }
?>
Y siempre me manda al error al borrar al alumno! Ya cheque varias veces el script paro no le veo donde esta mi error.
De antemano gracias y espero que me puedan ayudar.
salu2!
  #2 (permalink)  
Antiguo 29/01/2009, 18:52
Avatar de jfl_freak  
Fecha de Ingreso: enero-2009
Ubicación: Guatemala
Mensajes: 96
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Problemas al borrar datos de una bd.

No se si nos puedes mostrar cual es el error???

saludos
  #3 (permalink)  
Antiguo 29/01/2009, 18:54
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problemas al borrar datos de una bd.

Para que sepas realmente cual es el error mejor ejecuta la consulta sin el if:

Código PHP:
pg_query($sql) or die(pg_last_error());
// Aqui notificas que si se pudo eliminar 
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 29/01/2009, 18:56
Avatar de kurokishi  
Fecha de Ingreso: enero-2009
Ubicación: Tenochtitlán
Mensajes: 109
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Problemas al borrar datos de una bd.

Hola, pues el error que me manda es el siguiente:

Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error at or near "c" LINE 1: DELETE c.usuario, c.password, c.nivel, i.usuario, i.nombres,... ^ in

Lo sigo checando a ver si wncuentro el error.
Salu2!
  #5 (permalink)  
Antiguo 29/01/2009, 18:58
Avatar de jfl_freak  
Fecha de Ingreso: enero-2009
Ubicación: Guatemala
Mensajes: 96
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Problemas al borrar datos de una bd.

Estaba viendo tu consulta, no se si la has probado en consola de tu BD, pero ve que es un rollo, si estas utilizando postgres deberias de ver la forma en modificar tus tablas y ponerles un CASCADE para que la eliminacion sea mas simple.

Aca encontre algo que te puede servir, bueno si el caso es el problema en el DELETE.

saludos
  #6 (permalink)  
Antiguo 29/01/2009, 19:05
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problemas al borrar datos de una bd.

Tal vez sea por incluir los campos, podrias tratar:

Código PHP:
$sql="DELETE FROM comparacion c, id i, renshu1 a, renshu2 b, renshu3 d, renshu4 e, renshu5 f WHERE a.usuario='$usuario' AND b.usuario='$usuario' AND c.usuario='$usuario' AND d.usuario='$usuario' AND e.usuario='$usuario' AND f.usuario='$usuario'"
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 29/01/2009, 19:09
Avatar de kurokishi  
Fecha de Ingreso: enero-2009
Ubicación: Tenochtitlán
Mensajes: 109
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Problemas al borrar datos de una bd.

Pues de hecho puse los campos por que me hacia lo mismo, entonces pense que tal vez era por que no especificaba los camops a borrar (me ha pasado que tenia que copiar mi codigo y volverlo a guardar para que 'funcionara', no se por que me lo hacia, pero me pasaba).
Pues me sale el mismo error.
Seguire checando y les aviso, gracias por responder.
  #8 (permalink)  
Antiguo 29/01/2009, 19:42
Avatar de kurokishi  
Fecha de Ingreso: enero-2009
Ubicación: Tenochtitlán
Mensajes: 109
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Problemas al borrar datos de una bd.

Algo curioso me pasa, estoy probando el script y cuando borro solamente los valores de una tabla si me deja, pero al querer borrar de otras tablas en el mismo query mas datos me saca el error ya mencionado a que se debera
Deberia de hacerlo mediante varios querys para evitar este problema?? (aunque no es muy ortodoxo que digamos)
O si alguien me puede decir el porque solo cuando elimino datos de una tabla lo hace y cuando quiero borrar de las demas no me deja se los agradeceria muchisimo, ya que de igual forma me sirve para seguier aprendiendo.
Gracias por su ayuda.
salu2!
  #9 (permalink)  
Antiguo 29/01/2009, 20:06
Avatar de kurokishi  
Fecha de Ingreso: enero-2009
Ubicación: Tenochtitlán
Mensajes: 109
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Problemas al borrar datos de una bd.

Pues problema resuelto (no de la mejor manera), lo que hice fue cambiar todo mi query y dividirlo en varios, uno por cada tabla. y quedo asi:
Código PHP:
<?php
session_start
();
$_SESSION['usuario'];
$_SESSION['nivel'];
$_SESSION['nickname'];
    
$con=pg_connect("host=127.0.0.1 port=5432 dbname=Curso user=postgres password=lufy");
    if (!
$con)
    {
    echo 
"Error al conectarse a la Base de Datos";
    }
    else
    {
        if (isset(
$_POST['borrar']))
        {
            if (empty(
$_POST['borrar']))
            {
                echo 
"
                    <html>
                    <head>
                        <link href='../nihongo.css' rel='stylesheet' type='text/css'>
                    </head>
                        <body style='background-color:transparent;' oncontextmenu='return false'>
                            <p class='titulo'>Debe llenar el campo de Número de cuenta.</p>
                        </body>
                    </html>"
;
            }
            else
            {
                
$usuario=$_POST['borrar'];
                
$checa="SELECT usuario FROM comparacion WHERE usuario='$usuario'";
                
$query=pg_query($checa);
                
$sql="DELETE FROM  id WHERE usuario='$usuario'";
                
$sql1="DELETE FROM  comparacion WHERE usuario='$usuario'";
                
$sql2="DELETE FROM  renshu1 WHERE usuario='$usuario'";
                
$sql3="DELETE FROM  renshu2 WHERE usuario='$usuario'";
                
$sql4="DELETE FROM  renshu3 WHERE usuario='$usuario'";
                
$sql5="DELETE FROM  renshu4 WHERE usuario='$usuario'";
                
$sql6="DELETE FROM  renshu5 WHERE usuario='$usuario'";
            
            if (
pg_num_rows($query)!=0)    //checo que exista el alumno
                
{
if(@
pg_query($sql) && 
@
pg_query($sql1) && 
@
pg_query($sql2) &&
 @
pg_query($sql3) &&
 @
pg_query($sql4) &&
 @
pg_query($sql5) &&
 @
pg_query($sql6))//todos los querys que utilice
                
{
                    echo 
"
                    <html>
                    <head>
                        <link href='../nihongo.css' rel='stylesheet' type='text/css'>
                    </head>
                        <body style='background-color:transparent;' oncontextmenu='return false'>
                            <p class='titulo'>Alumno eliminado del sisema</p>
                        </body>
                    </html>"
;
                }
                else
                {
                    echo 
"
                        <html>
                        <head>
                            <link href='../nihongo.css' rel='stylesheet' type='text/css'>
                        </head>
                            <body style='background-color:transparent;' oncontextmenu='return false'>
                                <p class='titulo'>Error al eliminar al alumno</p>
                            </body>
                        </html>"
;
                }
                }
            else
                {
                    echo 
"
                        <html>
                        <head>
                            <link href='../nihongo.css' rel='stylesheet' type='text/css'>
                        </head>
                            <body style='background-color:transparent;' oncontextmenu='return false'>
                                <p class='titulo'>Error, alumno no existente en el sistema.</p>
                            </body>
                        </html>"
;
                }
            }
        }
    }
?>
De esta forma ya quedo 'bien' el script, pero no me gusta el tener que utilizar todos esos querys, ya que deberia haber quedado en unos solo!!
Pues gracias a todos los que me orientaron, no se pudo de la otra forma, ni modo (aunque la verdad es que no se el porque )
SALU2!
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 17:02.