FAQ
Hola a todos.

Estoy tratando de capturar los errores que genera la base de datos
(postgres) y recogerlos mediante un alert() de javascript.

El comportamiento es un tanto extraño y por eso lo pongo aquí.

Primero tengo diseñada una clase de genera el alert() y muestra el
mensaje de error:

<?php
class error{

function error($valor){ ?>
<script language="JavaScript" type="text/javascript">
alert('<?php echo $valor; ?>');
</script>
<?php

}
}

?>

Luego en otro script, llamo a la clase error y recogo el error en caso
de producirse.

<?php
require('error.php');

$delete= "delete from .............!;
$q= pg_query($delete) or die(new error("¡¡¡ERROR!!!!"));
?>

Esto funciona perfectamente. Al fallar el delete, muestra un alert con
el texto ¡¡¡ERROR!!!.

Pero en el caso que subtituya el texto por la función pg_last_error():

$delete= "delete from ".$datos["tabla"]." where id =".$datos["valor"];
$q= pg_query($delete) or die(new error(pg_last_error()));

No funciona. Sin embargo si miro el código se ve que el texto del error
se ha metido dentro del alert():

<script language="JavaScript" type="text/javascript">
alert('ERROR: update o delete en una tabla "clientes" viola la
restriccion de clave foranea "clientesofertas_cliente_fkey" en la tabla
"clientesofertas"
DETAIL: La llave (id)=(1) todavía es referida desde la tabla
«clientesofertas».');
</script>

¿porque no lo ejecuta?. No entiendo que está pasando.

He pensado que podría ser problema de las comillas dobles, pero
aplicando un addslashes() al texto, no lo soluciona.

Es decir:

<?php
class error{

function error($valor){ ?>
<script language="JavaScript" type="text/javascript">
alert('<?php echo addslashes($valor); ?>');
</script>
<?php

}
}

?>

Y el código generado:

<script language="JavaScript" type="text/javascript">
alert('ERROR: update o delete en una tabla \"clientes\" viola la
restriccion de clave foranea \"clientesofertas_cliente_fkey\" en la
tabla \"clientesofertas\"
DETAIL: La llave (id)=(1) todavía es referida desde la tabla
«clientesofertas».');
</script>

¿Alguien sabría decirme que pasa?.
- --


< ¡¡Nos vemos!! >
----------------------------
\
\
.::!!!!!!!:.
.!!!!!:. .:!!!!!!!!!!!!
~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
:$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
$$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
$$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
"*$bd$$$$ '*$$$$$$$$$$$o+#"
"""" """""""

Search Discussions

  • Jose A. Rios at Apr 17, 2008 at 11:18 am
    Intenta eliminando los retornos de carro (desde php, claro)

    El Jueves, 17 de Abril de 2008, Pablo Braulio escribió:
    Hola a todos.

    Estoy tratando de capturar los errores que genera la base de datos
    (postgres) y recogerlos mediante un alert() de javascript.

    El comportamiento es un tanto extraño y por eso lo pongo aquí.

    Primero tengo diseñada una clase de genera el alert() y muestra el
    mensaje de error:

    <?php
    class error{

    function error($valor){ ?>
    <script language="JavaScript" type="text/javascript">
    alert('<?php echo $valor; ?>');
    </script>
    <?php

    }
    }

    ?>

    Luego en otro script, llamo a la clase error y recogo el error en caso
    de producirse.

    <?php
    require('error.php');

    $delete= "delete from .............!;
    $q= pg_query($delete) or die(new error("¡¡¡ERROR!!!!"));
    ?>

    Esto funciona perfectamente. Al fallar el delete, muestra un alert con
    el texto ¡¡¡ERROR!!!.

    Pero en el caso que subtituya el texto por la función pg_last_error():

    $delete= "delete from ".$datos["tabla"]." where id =".$datos["valor"];
    $q= pg_query($delete) or die(new error(pg_last_error()));

    No funciona. Sin embargo si miro el código se ve que el texto del error
    se ha metido dentro del alert():

    <script language="JavaScript" type="text/javascript">
    alert('ERROR: update o delete en una tabla "clientes" viola la
    restriccion de clave foranea "clientesofertas_cliente_fkey" en la tabla
    "clientesofertas"
    DETAIL: La llave (id)=(1) todavía es referida desde la tabla
    «clientesofertas».');
    </script>

    ¿porque no lo ejecuta?. No entiendo que está pasando.

    He pensado que podría ser problema de las comillas dobles, pero
    aplicando un addslashes() al texto, no lo soluciona.

    Es decir:

    <?php
    class error{

    function error($valor){ ?>
    <script language="JavaScript" type="text/javascript">
    alert('<?php echo addslashes($valor); ?>');
    </script>
    <?php

    }
    }

    ?>

    Y el código generado:

    <script language="JavaScript" type="text/javascript">
    alert('ERROR: update o delete en una tabla \"clientes\" viola la
    restriccion de clave foranea \"clientesofertas_cliente_fkey\" en la
    tabla \"clientesofertas\"
    DETAIL: La llave (id)=(1) todavía es referida desde la tabla
    «clientesofertas».');
    </script>

    ¿Alguien sabría decirme que pasa?.
    --


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$

    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P

    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""

    --
    Un Saludo.
    __________________________________________________

    Jose Antonio Rios - mailto:[email protected]
    Linux registered user: #365633

    Cosas de Ranas - http://www.cosasderanas.com

    TheWebAnimals, S.L. - http://www.twa.es/
    Internet, Hosting, Webs, Programacion, Diseño,
    Multimedia, Publicidad...
    __________________________________________________
  • Jose A. Rios at Apr 17, 2008 at 12:01 pm
    Perdón, quise decir los saltos de línea (\n) pero creo que se entendió...

    El Jueves, 17 de Abril de 2008, Jose A. Rios escribió:
    Intenta eliminando los retornos de carro (desde php, claro)

    El Jueves, 17 de Abril de 2008, Pablo Braulio escribió:
    Hola a todos.

    Estoy tratando de capturar los errores que genera la base de datos
    (postgres) y recogerlos mediante un alert() de javascript.

    El comportamiento es un tanto extraño y por eso lo pongo aquí.

    Primero tengo diseñada una clase de genera el alert() y muestra el
    mensaje de error:

    <?php
    class error{

    function error($valor){ ?>
    <script language="JavaScript" type="text/javascript">
    alert('<?php echo $valor; ?>');
    </script>
    <?php

    }
    }

    ?>

    Luego en otro script, llamo a la clase error y recogo el error en caso
    de producirse.

    <?php
    require('error.php');

    $delete= "delete from .............!;
    $q= pg_query($delete) or die(new error("¡¡¡ERROR!!!!"));
    ?>

    Esto funciona perfectamente. Al fallar el delete, muestra un alert con
    el texto ¡¡¡ERROR!!!.

    Pero en el caso que subtituya el texto por la función pg_last_error():

    $delete= "delete from ".$datos["tabla"]." where id =".$datos["valor"];
    $q= pg_query($delete) or die(new error(pg_last_error()));

    No funciona. Sin embargo si miro el código se ve que el texto del error
    se ha metido dentro del alert():

    <script language="JavaScript" type="text/javascript">
    alert('ERROR: update o delete en una tabla "clientes" viola la
    restriccion de clave foranea "clientesofertas_cliente_fkey" en la tabla
    "clientesofertas"
    DETAIL: La llave (id)=(1) todavía es referida desde la tabla
    «clientesofertas».');
    </script>

    ¿porque no lo ejecuta?. No entiendo que está pasando.

    He pensado que podría ser problema de las comillas dobles, pero
    aplicando un addslashes() al texto, no lo soluciona.

    Es decir:

    <?php
    class error{

    function error($valor){ ?>
    <script language="JavaScript" type="text/javascript">
    alert('<?php echo addslashes($valor); ?>');
    </script>
    <?php

    }
    }

    ?>

    Y el código generado:

    <script language="JavaScript" type="text/javascript">
    alert('ERROR: update o delete en una tabla \"clientes\" viola la
    restriccion de clave foranea \"clientesofertas_cliente_fkey\" en la
    tabla \"clientesofertas\"
    DETAIL: La llave (id)=(1) todavía es referida desde la tabla
    «clientesofertas».');
    </script>

    ¿Alguien sabría decirme que pasa?.
    --


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$

    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P

    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""
    --
    Un Saludo.
    __________________________________________________

    Jose Antonio Rios - mailto:[email protected]
    Linux registered user: #365633

    Cosas de Ranas - http://www.cosasderanas.com

    TheWebAnimals, S.L. - http://www.twa.es/
    Internet, Hosting, Webs, Programacion, Diseño,
    Multimedia, Publicidad...
    __________________________________________________

    --
    Un Saludo.
    __________________________________________________

    Jose Antonio Rios - mailto:[email protected]
    Linux registered user: #365633

    Cosas de Ranas - http://www.cosasderanas.com

    TheWebAnimals, S.L. - http://www.twa.es/
    Internet, Hosting, Webs, Programacion, Diseño,
    Multimedia, Publicidad...
    __________________________________________________

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedApr 17, '08 at 10:51a
activeApr 17, '08 at 12:01p
posts3
users2
websitephp.net

2 users in discussion

Jose A. Rios: 2 posts Pablo Braulio: 1 post

People

Translate

site design / logo © 2023 Grokbase