Ver Mensaje Individual
  #6 (permalink)  
Antiguo 27/02/2016, 09:00
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: cuales son las razones de que se guarde un cero en la base de datos

Cita:
Iniciado por criscc19 Ver Mensaje
pareciera que el problema esta en el campo de la base de datos, puede que tengas los campos como tipo numerico, (INT). siempre que mandes un string a un int, te pondra 000
No "siempre"... Dependerá de qué contenga la cadena, ya que si el contenido es un número, MySQL genera una conversión implícita.
El problema es que si lo está enviando como cadena, y el contenido es un caracter vacío, entonces la conversión devuelve cero.
Es una pésima práctica de programación poner todos los datos en la sentencia como cadenas. Sólo deben ir como tales los textos, fechas (se recomienda usar funciones de conversion en SQL), horas, y NADA MAS.
Los números deben ir sin apostrofos. De ese modo, si el dato no llega se genera como se espera en el formulario, la sentencia SQL queda mal formada, se dispara un error de sintaxis que es extremadamente útil para detectar errores.
Obviamente eso requiere que se programe bien, sin asumir que las cosas esán bien porque las escribes bien. Todo proceso debe ser validado, y todo valor entrante debe ser validado, cosa que no veo en estos códigos.

Como mínimo, yo haría esto:
Código PHP:
if ($_POST){ 
    
$cedula $_POST['cedula']; 
    
$nombre $_POST['nombre']; 
    
$apellido $_POST['apellido']; 
    
$programa $_POST['programa']; 
    
$carrera $_POST['carrera']; 
    
$consejo_comunal $_POST['consejo_comunal']; 

    
// Verificar que realmente estan todos los datos:
     
var_dump$_POST);
    
//

    
$usuario = new usuario(); 
    
$usuario -> registrar($cedula$nombre$apellido$programa$carrera$consejo_comunal); 

Tampoco usaría los mismos nombres para los parametros de la función que para los atributos de clase. Me parece riesgoso (alguien sabrá mas que yo sobre eso):
Código PHP:
class usuario
        var 
$cod$cedula$nombre$apellido$programa$carrera$consejo_comunal
        function 
registrar ($v_cedula$v_nombre$v_apellido$v_programa$v_carrera$v_consejo_comunal){ 
            
$this-> cedula $v_cedula
            
$this-> nombre $v_nombre
            
$this-> apellido $v_apellido
            
$this-> programa $v_programa
            
$this-> carrera $v_carrera
            
$this-> consejo_comunal $v_consejo_comunal
     
            
$sql="SELECT * FROM usuarios WHERE cedula='".$cedula."'"
            
$result mysql_query ($sqlconectar::conexion()); 
            
$contar mysql_num_rows ($result); 
     
            if (
$contar==0){ 
     
            
$sql="INSERT INTO usuarios (cedula, nombre, apellido, programa, carrera, consejo_comunal) VALUES ('".$cedula."', '".$nombre."', '".$apellido."', '".$programa."', '".$carrera."', '".$consejo_comunal."')"

            
$result mysql_query($sqlconectar::conexion()); 
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 27/02/2016 a las 09:07