Respecto al tema de los warnings: Hay cuatro maneras:
1) Hacerlo línea por línea colocando @ delante de las funciones que puedan generar un error. Por supuesto que esa práctica es poco recomendable, ya que aparte de ser más sacrificada, no captura *todos* los warnings (pueden haber muchos en cualquier código) ni los errores ni las advertencias (notices). Se utilizará esa práctica en casos desesperados para programas muy pequeños sino domésticos. 2) Más fácil y mejor: modificar la configuración del php. En el archivo php.ini (donde sea que se encuentre, claro que se puede averiguar rápidamente dónde está haciendo correr un phpinfo()), cambiar en el grupo de parámetros Error handling and logging: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Error handling and logging ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; . . . error_reporting = E_ALL & ~E_NOTICE & _WARNING . . . Reinicias el apache y voila! 3) Hacer lo mismo, pero sin modificar el archivo de configuración del php, sino el conjunto de archivos del sitio en particular, colocando las instrucciones en un archivo .htaccess La complejidad en este caso reside más en la configuración del apache para que reconozca y use el modrewrite (que es el módulo para usar .htaccess) 4) Hacer lo mismo pero dentro del código php, es decir, colocar el tipo de notificaciones que deseamos en un archivo de configuración que describa el nivel de mensajes e incluso la rutina de manejo de errores (p.e. mensajes "personalizados" del sitio). Para definir el nivel de errores que deseamos capturar: error_reporting( E_ALL & ~E_NOTICE & _WARNING ); Luego definimos la función que manejará los errores cuando sean encontrados: $error_handler = set_error_handler( 'MiFuncionDeCapturaDeErrores' ); . . . Finalmente hacemos la función que maneje los errores: /* Los parámetros los puedes llamar como quieras, pero deberás recibir la misma cantidad y tendrán la semántica señalada */ function MiFuncionDeCapturaDeErrores( $numero_de_error, $mensaje_de_error, $nombre_archivo, $num_linea, $vars ) { /* Aquí proceso un mensaje (o no = modo silencioso) de acuerdo al número de error, etc. */ if ( $numero_de_error == 234 ) { //Aguante a lo macho! return; // Nada hace, nada dice. Es el modo marido abnegado } if ( $numero_de_error == 235 ) { //Escandalosa y sufrida muerte echo '<h1>Por Dios! como pudiste cometer tal falla!!</h1>'; . . . echo 'Finalmente este es el bendito error que espero no vuelva a suceder :-) ' . $mensaje_de_error; die(); } /* Etc. */ /* Puedes perfeccionar el tema (únicamente en tiempo de desarrollo JAMÁS en tiempo de producción!) mostrando backtrace para señalar más detalles como el archivo donde se produjo el error, las llamadas a diferentes procedimientos que se han presentado, etc. El backtrace se hace con: */ $debug = debug_backtrace(); foreach( $debug as $key => $values ) { if ( isset( $values['file'] ) // && $key > 0 && $values['function'] <> 'user_error' ) { $line = "\n<span style=\"color: #0a0;\">" . $values['file'] . '</span>'; if ( $values['function'] <> 'termina' ) { $line .= " (executing <em>$values[function]</em>)"; } $output .= $line . ' in line ' . $values['line'] . '; '; } } } Dos consejos finales: 1) En *tiempo de desarrollo*, debes colocar error_reporting = E_ALL (todo de todo, hasta las variables que no han sido definidas y otras cosillas que en el tiempo te pueden traer muchos dolores de cabeza) y en *tiempo de producción*, si es posible, que nada muestre; 2) Para el manejo de tu motor de base de datos, te recomiendo que utilices un capa de abstracción (que en parte resuelven muchos de esos problemas que estás encontrando) con la que hagas las consultas a la base de datos. Como ventaja adicional, verás que puedes cambiar de motor de base de datos de una manera muy sencilla. La capa de abstracción que recomiendo es la PEAR http://pear.php.net/package/MDB2. Bueno, más bien que esta es una lista de CSS ;-) Saludos y que estén bien sn wrote: >salud; >ante todo, perdón por el off topic, no se volverá a repetir, pero el caso es >que ando apurado y en otros sitios no hayo respuesta. >cómo puedo quitar los warnings que saca php por pantalla? he probado >con *fbsql_warnings() >*pero en mi versión de php(4.3.4) no lo reconoce. > >reitero mis disculpas. >un saludo. >_______________________________________________ >Lista de distribución Ovillo >Para escribir a la lista, envia un correo a Ovillo@lists.ovillo.org >Puedes modificar tus datos o desuscribirte en la siguiente dirección: >http://lists.ovillo.org/mailman/listinfo/ovillo > > > -- Alejandro Salamanca Gerente de Desarrollo/Development Manager RedCetus S.R.L Of. La Paz: (+591) 2-2410521/(+591) 2-2118123 Of. Santa Cruz: (+591) 3-397622 www.redcetus.com Servicios: Aplicaciones e Instalaciones Linux Telefonia de Voz sobre IP Desarrollo de Aplicaciones en Linea Partners: www.astaro.com (Security Gateways) www.vmware.com (Servidores Virtuales) www.digium.com (Telefonia VoIP) www.abptech.com (VoIP Products) _______________________________________________ Lista de distribución Ovillo Para escribir a la lista, envia un correo a Ovillo@lists.ovillo.org Puedes modificar tus datos o desuscribirte en la siguiente dirección: http://lists.ovillo.org/mailman/listinfo/ovillo