Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Algo parecido al try...except

Hola compas

Tengo un script de conexión a una base de datos mySQL.

Código PHP:
  $Servidor "localhost";
  
$Usuario  "userName";
  
$Clave    "pass";
  
$idcon mysql_pconnect($Servidor$Usuario$Clave); 
Bueno, esto es fácil. Ahora lo que me gustaría es que, si se produce un error en la conexión, me mostrara un página diferente a la que se intenta cargar. He probado esto

Código PHP:
  $idcon mysql_pconnect($Servidor$Usuario$Clave);
  if (
$idcon == 0)
  {
    
header('location: mipagina.php');
  } 
Por supuesto, en la página donde se llama al script de conexión, éste es lo primero que se ejecuta (antes de cualquier etiqueta HTML). El problema está en que, la instrcción mysql_pconnect ya escribe el error en el navegador por lo que la llamada a header no funciona.

Entonces, hay alguna manera de poder realizar esta llamada? Es decir, hay alguna manera de evitar que el error de la conexión devuelva el string de error?

PD: también me miré la instrucción die, pero por lo que he leido, sólo sirve para poder mostrar un string (y el error sigue apareciendo)

Gracias

Última edición por __cadetill fecha: 15-04-2004 a las 15:46:10.
Responder Con Cita
  #2  
Antiguo 15-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Cita:
Empezado por cadetill
El problema está en que, la instrcción mysql_pconnect ya escribe el error en el navegador por lo que la llamada a header no funciona.
Hola Cadetill

Estas seguro que mysql_pconnect escribe el error??? no puedo probarlo ahora, pero estoy seguro (y la documentación me ampara ) que mysql_pconnect se limita a devolver false si no ha podido establecer la conexión (sin escribir directamente el error)...

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 15-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
La función error_reporting de PHP te permite establecer el nivel de errores que han de reportarse. Quizá ajustando esto evites que se escriba el mensaje de mysql_pconnect. Pero lo más recomedable es que antepongas una arroba a la función:

Código PHP:
@mysql_pconnect(...) 
que evita el mensaje para dicha llamada en particular.

// Saludos
Responder Con Cita
  #4  
Antiguo 15-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Hola de nuevo, y gracias por las respuestas

Bueno, no se si mysql_pconnect es quien escribe en el navegador, pero el error te aseguro que sí sale

Por otra parte, he probado lo comentado por Román y me ha funcionado perfectamente, header hace el redireccionamiento apropiado

Pos lo dicho, gracias
Responder Con Cita
  #5  
Antiguo 15-04-2004
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 23
kinobi Va por buen camino
Hola,

además de lo que se ha comentado, recordar que en la (nueva) versión 5, existe ya soporte para la gestión de excepciones:

Código:
  // bloques try .. catch:
  try { 
    ... 
  } 
  catch (<excepción>) {
    <manejardor_excepción>
  } 
  ...

  // lanzar excepciones: 
  throw <excepción>;
Más información: http://www.php.net/zend-engine-2.php

Saludos.

Última edición por kinobi fecha: 15-04-2004 a las 17:18:31.
Responder Con Cita
  #6  
Antiguo 15-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por kinobi
además de lo que se ha comentado, recordar que en la (nueva) versión 5
¿Ya has probado esta versión? Me gustaría conocer tu opinión de ella

// Saludos
Responder Con Cita
  #7  
Antiguo 15-04-2004
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 23
kinobi Va por buen camino
Cita:
Empezado por roman
¿Ya has probado esta versión? Me gustaría conocer tu opinión de ella
no, todavía no, pero estoy preparando una máquina para probarla, junto con el Apache 2

Saludos
Responder Con Cita
  #8  
Antiguo 15-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Cita:
Empezado por roman
Código PHP:
@mysql_pconnect(...) 
que evita el mensaje para dicha llamada en particular.
Esta si no me la sabía... por mas que veo el manual on-line, no le hallo... podes explicar que hace la arroba, o bien donde puede encontrarse mas información al respecto...

Mil gracias.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #9  
Antiguo 15-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por jachguate
o bien donde puede encontrarse mas información al respecto...
¡Vaya! Me costó trabajo encontrarlo pero ya está. Una vez hecho suena lógico: @ es un operador así que hay que buscarlo en el apartado de operadores del manual:

http://www.php.net/manual/es/languag...rorcontrol.php

// Saludos
Responder Con Cita
  #10  
Antiguo 15-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
muchas gracias román. Yo me vi la sección de operadores... pero no cai en la cuenta de donde encontrarlo. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #11  
Antiguo 16-04-2004
Avatar de barman
barman barman is offline
Miembro
 
Registrado: may 2003
Posts: 139
Poder: 21
barman Va por buen camino
Post

Quizas llega un poco tarde, pero en Firebir lo tengo asi y esta controlado

Cita:
$idbase = ibase_connect ( "$host", "$username","$password" ) ;
if ( $idbase == false)
{
errrooooorrr
}
Responder Con Cita
  #12  
Antiguo 26-04-2004
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
Si te salen los errores por pantalla, tienes el php en modo debuging, lo
que esta totalmente desaconsejado para entornos de produccion, ya que es una brecha de seguridad en el servidor web.
Tienes que editar el archivo php.ini
y comentar o eliminar una linea que pondra algo parecido a esto:

error_reporting = E_ALL

Saludos
Miguel
Responder Con Cita
  #13  
Antiguo 26-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Pues gracias a todos por las repuestas

Referente a lo que comenta Mick.... la verdad es que para desarrollo siempre trabajo en local (y esa solución no me sirve porque sino no veo los errores y no se porque falla) y la configuración del servidor... ya se lo dejo a Emilio
Responder Con Cita
  #14  
Antiguo 27-04-2004
Isaac Isaac is offline
Miembro
 
Registrado: feb 2004
Ubicación: Ferrol
Posts: 77
Poder: 21
Isaac Va por buen camino
¿Qué diferencia hay entre "mysql_connect" y "mysql_pconnect"?
__________________
Me llamo Iñigo Montoya. Tú mataste a mi padre. Prepárate a morir

Mi foro: http://gandalfmithrandir.foro.st
Responder Con Cita
  #15  
Antiguo 27-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Mira esta página

Muy recomendable este manual on line sobre PHP
Responder Con Cita
  #16  
Antiguo 27-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Hola Isaac. Te recomiendo crear un nuevo hilo para una nueva pregunta, que nada tiene que ver con el hilo actual. Una vez mas, la lectura de la guia de estilo de los foros, que un usuario con 71 mensajes, ya debe haber leido mas de una vez..

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #17  
Antiguo 27-04-2004
Isaac Isaac is offline
Miembro
 
Registrado: feb 2004
Ubicación: Ferrol
Posts: 77
Poder: 21
Isaac Va por buen camino
Sí, perdón, pero como vi que hablaban del comando ese, pues aproveché
__________________
Me llamo Iñigo Montoya. Tú mataste a mi padre. Prepárate a morir

Mi foro: http://gandalfmithrandir.foro.st
Responder Con Cita
  #18  
Antiguo 09-05-2004
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.635
Poder: 10
Emilio Va por buen camino
La solución que te han dado es la mejor sin lugar a dudas, no obstante cuando tenemos ya salida html y queremos redirigir a otra página, lo único que nos queda es echar mano de JavaScript.

Código PHP:
$idcon = mysql_pconnect($Servidor, $Usuario, $Clave);
if ($idcon == 0) {
    // Antes -> header('location: mipagina.php');
    ?><script>location.href='mipagina.php';</script><? 
}
__________________
Saludos
Emilio
Responder Con Cita
  #19  
Antiguo 10-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Emilio
no obstante cuando tenemos ya salida html y queremos redirigir a otra página, lo único que nos queda es echar mano de JavaScript.
Aunque dependiendo de las circunstancias se podría hacer uso de ob_start y funciones relacioadas para capturar la salida.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 21:30:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi