Foros del Web » Programando para Internet » PHP »

mysql_error()

Estas en el tema de mysql_error() en el foro de PHP en Foros del Web. Saludos nuevamente, esta casi a finalizar mi proyecto, agrdezco a todos su ayuda, me queda una última duda, hay alguna forma de manipular mysql_error(), de ...
  #1 (permalink)  
Antiguo 15/02/2008, 12:52
 
Fecha de Ingreso: enero-2008
Mensajes: 58
Antigüedad: 16 años, 3 meses
Puntos: 0
mysql_error()

Saludos nuevamente, esta casi a finalizar mi proyecto, agrdezco a todos su ayuda, me queda una última duda, hay alguna forma de manipular mysql_error(), de modo que si el error por parte del usuario sea por ejemplo que el nombreexcede del limite de caracteres establecido en una base de datos MySQL en vez de regresarme por pantalla el error de MySQL, regrese algo como "El limite de caracteres en el nombre es 20, introduzca datos nuevamente", este es mi código

$campos = "nombre,apellido,login,email,url";
$valores = "'".$_POST['nombre']."',";
$valores .= "'".$_POST['apellido']."',";
$valores .= "'".$_POST['login']."',";
$valores .= "'".$_POST['email']."',";
$valores .= "'".$_POST['url']."',";
$sql = "INSERT INTO directorio ($campos) VALUES($valores)";
//aqui es donde uso la funcion mysql_error
$res = mysql_query($sql) or die(mysql_error());
echo "Registro ingresado.<br><a href='listado.php'>regresar</a>";
mysql_close($cnx);
exit;

Gracias por su ayuda de antemano
  #2 (permalink)  
Antiguo 15/02/2008, 12:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: mysql_error()

En lugar de usar mysql_error() usa mysql_errno() esto te devuelve el numero de error, que puedes buscar en el manual de MySQL y entonces presentar el error adecuado.

Saludos.
  #3 (permalink)  
Antiguo 15/02/2008, 13:02
 
Fecha de Ingreso: enero-2008
Mensajes: 58
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: mysql_error()

El problema es no tanto mostrar el numero del error, sino que, si hay un error por parte del usuario, por ejemplo, que el login sea un valor unico en la tabla MySQL, para que no se repitan, en vez de arrojarle por pantalla esto al usuario: Duplicate entry 'algo' for key 3; muestre por pantalla algo como: "Este login no esta disponible, por favor selecciona otro"

Muchisimas gracias de parte de un novato en PHP
  #4 (permalink)  
Antiguo 15/02/2008, 13:25
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: mysql_error()

pues es lo que dice GatorV, haces que te devuelva el número de error internamente y remplazas el número por su correspondiente mensaje, te puedes ayudar de los arreglos asociativos.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #5 (permalink)  
Antiguo 15/02/2008, 13:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: mysql_error()

Por eso te comento, con mysql_errno puedes ver el numero de error y compararlo con la lista: http://dev.mysql.com/doc/refman/5.0/...es-server.html, entonces así tu podrás hacer un switch:
Código PHP:
switch( mysql_errno() ) {
case 
1062// Duplicate entry 'algo' for key 3
          
echo "Este login no esta disponible, por favor selecciona otro";
          break;
default:
          echo 
"Error no especificado en la Base de Datos";
          break;

y así por cada error que desees manejar lo agregas con un case en el switch.

Saludos.
  #6 (permalink)  
Antiguo 15/02/2008, 13:35
 
Fecha de Ingreso: enero-2008
Mensajes: 58
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: mysql_error()

Ya, por supuesto, muchisimas gracias, es que, como comentaba con anterioridad soy novato en PHP y a veces si llego a interpretar mal los conceptos, problema resuelto, muchas gracias por tomarse el tiempo de leer los mensajes y contestarlos.
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 00:03.