Foros del Web » Programando para Internet » PHP »

Cómo validar datos con php..

Estas en el tema de Cómo validar datos con php.. en el foro de PHP en Foros del Web. Tengo el formulario y el script en php para insertar registros en una base de datos mysql, y funciona... Mi problema es que cuando inserto ...
  #1 (permalink)  
Antiguo 29/01/2006, 17:02
 
Fecha de Ingreso: enero-2005
Ubicación: Santiago de Chile
Mensajes: 29
Antigüedad: 12 años, 10 meses
Puntos: 0
Cómo validar datos con php..

Tengo el formulario y el script en php para insertar registros en una base de datos mysql, y funciona... Mi problema es que cuando inserto un valor que exceda el limite permitido para un campo, dicho valor no aparece en la bd. Mis dudas son las siguientes:

Si tengo un campo "nombre" para una tabla "persona" y defino el campo como VARCHAR(10), entonces cuando inserto un "nombre" de 15 caracteres de largo, ¿no debería guardarse ese "nombre" pero concatenado a 10 caracteres? Pero en la bd no aparece nada.

Mi otra duda es: cómo hago para validar datos usando php?
Como en el caso anterior, como hago para insertar un nombre de 15 caracteres en un campo de 10 caracteres? Cómo puedo hacer que aparezcan los errores como resultado de una mala inserción usando php?

Disculpen si es una pregunta un poco obvia, pero estoy empezando a usar php y mysql..

Gracias!!
  #2 (permalink)  
Antiguo 29/01/2006, 17:26
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 11 años, 11 meses
Puntos: 5
Cita:
Como en el caso anterior, como hago para insertar un nombre de 15 caracteres en un campo de 10 caracteres? Cómo puedo hacer que aparezcan los errores como resultado de una mala inserción usando php?
No se puede. Es como si tuvieras un camión de 4 metros de altura y quisieras pasar por un túnel de 3 metros de altura. No entra... Pero la ventaja es que tu problema se soluciona fácil: dale mayor extensión al campo. En vez de VARCHAR(10), que sean 15 y listo. En realidad, en el momento de asignar ese valor, tenés que tener en cuenta la cantidad máxima de caracteres que vas a necesitar. Tal vez 15 te sirvan para un caso puntual, pero más adelante podrías necesitar más. Por eso, te conviene darle un poco de margen. Cuantos más caracteres, más espacio ocupa la base, pero si necesitás guardar 20 caracteres y el campo admite 15, no hay otra forma (que yo sepa, al menos).

Una manera simple de validar que la extensión del valor que ingresa el usuario no sea superior al máximo permitido por el campo es con strlen(), que te devuleve el largo del string/cadena que le pasás.

Un ejemplo:

Código PHP:
$caracteres_input strlen($input_usuario);
$max_caracteres_campo 20// supongamos que pusiste 20
if ($caracteres_input <= $max_caracteres_campo) {
      
// hacés la consulta
} else {
     
// no pasa la validación, das algún mensaje de error y volvés a mostrar el formulario

  #3 (permalink)  
Antiguo 29/01/2006, 18:31
 
Fecha de Ingreso: enero-2005
Ubicación: Santiago de Chile
Mensajes: 29
Antigüedad: 12 años, 10 meses
Puntos: 0
Cita:
Iniciado por califa010
Pero la ventaja es que tu problema se soluciona fácil: dale mayor extensión al campo. En vez de VARCHAR(10), que sean 15 y listo. En realidad, en el momento de asignar ese valor, tenés que tener en cuenta la cantidad máxima de caracteres que vas a necesitar. Tal vez 15 te sirvan para un caso puntual, pero más adelante podrías necesitar más. Por eso, te conviene darle un poco de margen. Cuantos más caracteres, más espacio ocupa la base, pero si necesitás guardar 20 caracteres y el campo admite 15, no hay otra forma (que yo sepa, al menos).
Gracias califa010:
Entiendo que no sea posible almacenar 15 caracteres en un espacio de 10 caracteres, pero en el caso mencionado, no debería ser concatenada la cadena a 10 caracteres y ser almacenada de todas maneras? (de hecho, en la documentacion de mysql dice que eso es lo que sucede) Ese es mi problema.. porque no almacenó nada... y digo esto pq en el resto de los campos de la tabla agregué valores dentro del rango permitido y tampoco se almacenaron.. Fue discriminado el registro completo por culpa de uno mal ingresado...

Cómo puedo gestionar los errores en php producidos por mala inserción de datos??

Gracias nuevamente..
  #4 (permalink)  
Antiguo 29/01/2006, 19:27
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 11 años, 11 meses
Puntos: 5
Sabés que acabo de hacer una prueba y me doy cuenta de que estaba equivocado...

Es decir, si el máximo son 10 caracteres y le pasás 15, tenía entendido que daba error...pero no, guarda los primeros 10 caracteres. Supongo que debe haber alguna buena razón técnica detrás, pero en principio, la idea no me tranquiliza mucho. Dar un error sería más razonable, me parece.

Así que la moraleja de esto es que lo mejor sería siempre chequear que el número de caracteres a ingresar no supere el límite para no encontrarse después con una sorpresa desagradable.

En tu caso, si no almacenó nada, se me ocurre que el problema debe estar en otro lado. (Digo, al menos, a mí me guardo los datos cuando le pasé más caracteres). Tal vez sea una diferencia entre versiones de MySQL (yo tengo la 4.1.10a), pero no sé, la verdad es que mi conocimiento de MySQL se limita a lo básico.

Tal vez alguien que sepa más vea este thread y te pueda orientar un poco. También podrías postear tu problema en el foro de MySQL (subforo del foro Bases de Datos) o ver si encontrás algo en http://www.mysql-hispano.org/

Suerte
Califa
  #5 (permalink)  
Antiguo 30/01/2006, 09:38
 
Fecha de Ingreso: enero-2005
Ubicación: Santiago de Chile
Mensajes: 29
Antigüedad: 12 años, 10 meses
Puntos: 0
Gracias califa010 por tus respuestas..
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 22:51.