Foros del Web » Programando para Internet » PHP »

Problemas con un Insert en PDO y mysql

Estas en el tema de Problemas con un Insert en PDO y mysql en el foro de PHP en Foros del Web. Hola que tal este es mi primer tema en esta comunidad.Mi probelma es el siguiente: Estoy trabajando en sistema para un centro escolar,tengo un procedimiento ...
  #1 (permalink)  
Antiguo 15/04/2015, 16:36
 
Fecha de Ingreso: abril-2015
Mensajes: 3
Antigüedad: 9 años
Puntos: 0
Pregunta Problemas con un Insert en PDO y mysql

Hola que tal este es mi primer tema en esta comunidad.Mi probelma es el siguiente:

Estoy trabajando en sistema para un centro escolar,tengo un procedimiento almacenado que se ejecuta correctamente pero despues del procedimiento tengo que ejecutar varias consultas que me llegan como un arreglo via $_POST que luego los recorro con un for() pasandole un indice, en este for() la consulta se ejecuta varias veces con diferentes valores.Mi problema es que despues de ejecutar el procedimiento intento ejecutar unos INSERT a diferentes tablas pero cuando voy al phpmyadmin y reviso las tablas no hay datos guardados.Lo peor evaluo el resultado de la varible que hace el execute() de PDO y me dice que esta todo correcto pero no es asi.Ingrese datos a la tabla manualmente y los inserta pero me di cuenta de que el id de la tabla no empieza en 1 si no que empieza desde mucho mas arriba de el valor inicial quiere decir que hace el INSERT pero parece que elimina los datos.

En fin ya e probado muchas cosas y nada funciona si me dieran una mano se los agradeceria.


Aqui les comparto mi codigo


Código:
Y Este es todo el codigo de mi archivo en donde hago las consultas:

<?php
require_once("ClassConexion.php");
require_once("ClassServer.php");
		
class Estudiante 
{
 
 private $sql;
 private $con;
 private $res;
 private $idPersona2;
 private $fecha;
 private $condicion;
 private $anio;
 private $idEstudiante;
 private $id;
 private $reg;
 private $Ruta;
 private $idCiclo;

        
         public function __construct()
         {
            $this->con=Conectar::Con();
            $this->Ruta=Servidor::get_server();
         }


         
         public function NuevoEstudiante()
         {

         $this->fecha=$_POST['anio'].'-'.$_POST['mes'].'-'.$_POST['dia'];
           
         $this->sql="call preparabd.spEstudianteInserta(:Nombres,:Apellidos,:Direccion,:Cedula,:telefono,:movil,:email,:edad,:Sexo,:FechaDeNaci,:LugarDENac,:estado,:RNE);";   
         
         $this->res=$this->con->prepare($this->sql);
         
         $this->res->execute(array(':Nombres'=>$_POST['NombresNuevoEstudiante'],':Apellidos'=>$_POST['ApellidosNuevoEstudiante'],
         ':Direccion'=>$_POST['DireccionNuevoEstudiante'],':Cedula'=>$_POST['CedulaNuevoEstudiante'],':telefono'=>$_POST['TelNuevoEstudiante'],
         ':movil'=>$_POST['CEL_NuevoEstudiante'],':email'=>$_POST['Email_NuevoEstudiante'],':edad'=>$_POST['edadNuevoEstudiante'],
         ':Sexo'=>$_POST['SexoNuevoEstudiante'],':FechaDeNaci'=>$this->fecha,':LugarDENac'=>$_POST['LugarNacNuevoEstudiante'],':estado'=>$_POST['EstCivil'],':RNE'=>$_POST['RNE_NuevoEstudiante']));   


    
        print_r($_POST);

       
         }
         
    
          
         public function NuevoTutor($id)
         {
            
         for($i=0;$i<sizeof($_POST['NombreTutor']);$i++)
             {
                
                $this->sql="call NuevoCiclo(:idEstudiante,:NombresTutor,:DireccionTutor,:TelTutor,:MovilTutor,:Relacion);";
                
                $this->res=$this->con->prepare($this->sql);
                
                $this->res->execute(array(':idEstudiante'=>$id,
                                          ':NombresTutor'=>$_POST['name'][$i],
                                          ':DireccionTutor'=>$_POST['DireccionTutor'][$i],
                                          ':TelTutor'=>$_POST['TelTutor'][$i],
                                          ':MovilTutor'=>$_POST['MovilTutor'][$i],
                                          ':Relacion'=>$_POST['RelacionTutor'][$i]));
          
            if($this->res)
            {
                echo '<script type="text/javascript">
                     alert("Exito Nuevo tutor");   
                     </script>';
                
            }else
            {
                
                echo '<script type="text/javascript">
                     alert("Error Nuevo tutor");   
                     </script>';
                
            }
          
          
                
             }  
            
            
         }      
         public function NuevoTrabajo()
         {
            
            $this->sql="INSERT INTO trabajo VALUES(NULL,:idEst,:NomTrabajo,
                        :DireccionTrabajo,:TelTrabajo,:EmailTrabajo)";
           
            $this->res=$this->con->prepare($this->sql);
           
            $this->res->execute(array(':idEst'=>$this->idEstudiante,
                                      ':NomTrabajo'=>$_POST['NomEmpresa'],
                                      ':DireccionTrabajo'=>$_POST['direccionempresa'],
                                      ':TelTrabajo'=>$_POST['TelEmpresa'],
                                      ':EmailTrabajo'=>'[email protected]'));


            if($this->res)
            {
                echo '<script type="text/javascript">
                     alert("Exito Nuevo Trabajo");   
                     </script>';
                
            }else
            {
                
                echo '<script type="text/javascript">
                     alert("Error Nuevo Trabajo");   
                     </script>';
                
            }

            
         }
       
         public function AgregarHistorial($idEstudiante,$idCiclo,$CentroDeEstudio,$nivel)
         {
            $this->sql="INSERT INTO historial VALUES(NULL,:idEstudiante,:idCiclo,:Nivel,:CentrodeEstudio);";
     
            $this->res=$this->con->prepare($this->sql);
            
            $this->res->execute(
            array(':idEstudiante'=>$idEstudiante,
                  ':idCiclo'=>$idCiclo,
                  ':Nivel'=>$nivel,
                  ':CentrodeEstudio'=>$CentroDeEstudio));
         
            if($this->res)
            {
                echo '<script type="text/javascript">
                     alert("Exito Agregar Historial");   
                     </script>';
                
            }else
            {
                
                echo '<script type="text/javascript">
                     alert("Error Agregar Historial");   
                     </script>';
                
            }
        
            
         } 
        public function NuevoCiclo()
        {
               $this->condicion='Inactivo'; 
            
               for($i=0;$i<sizeof($_POST['CicloCentrodeEstudio']);$i++)
                {
         
                  if(substr($_POST['CicloCentrodeEstudio'][$i],5,8)>=date('Y'))
                  {
                    $this->condicion='Activo';
                    
                  }  
                      
                                
                $this->res=$this->con->prepare("INSERT INTO ciclo(Ciclo,Semestre,Condicion) VALUES(?,?,?);");
                
                $this->res->bindParam(1,$_POST['CicloCentrodeEstudio'][$i],PDO::PARAM_STR); 
                $this->res->bindParam(2,$_POST['SemestreCentrodeEstudio'][$i],PDO::PARAM_STR);
                $this->res->bindParam(3,$this->condicion,PDO::PARAM_STR);
          
                $this->res->execute();

                }

            if($this->res)
            {
                echo '<script type="text/javascript">
                     alert("Exito Nuevo Ciclo "+'.$this->con->errorCode().');   
                     </script>';
                 
                
            }else
            {
                
                echo '<script type="text/javascript">
                     alert("Error Nuevo Ciclo");   
                     </script>';
                     
                echo $this->con->errorInfo();
            }
            
             return $this->con->lastInsertId();
        }
   
         public function ObtenerUltimoIdEstudiante()
         {
            $this->sql="SELECT idEstudiantes FROM estudiantes ORDER BY idEstudiantes DESC LIMIT 1;";
            
            $this->res=$this->con->prepare($this->sql);
            
            $this->res->execute();
        
            $this->reg=$this->res->fetch(PDO::FETCH_COLUMN);
  
            return $this->reg;
            
            
         }

     
}
Y Aqui llamo los metodos desde una vista Instanciando la clase Estudiante:

Código:
<?php

require_once('class/ClassEstudiante.php');
$ObjectEstudiante = new Estudiante();

if(isset($_POST['NombresNuevoEstudiante']) and !empty($_POST['NombresNuevoEstudiante']))
{
    $ObjectEstudiante->NuevoEstudiante();
    $idEstudiante=$ObjectEstudiante->ObtenerUltimoIdEstudiante();
    $idEstudiante=trim($idEstudiante);
    $idCiclo=$ObjectEstudiante->NuevoCiclo();
    $ObjectEstudiante->NuevoTutor($idEstudiante);
    
    for($i=0;$i<sizeof($_POST['CicloCentrodeEstudio']);$i++)
        {
        
         $ObjectEstudiante->AgregarHistorial($idEstudiante,
                         $idCiclo,
                         $_POST['CicloCentrodeEstudio'][$i],
                         $_POST['NivelCentrodeEstudio'][$i]);
                         
        }
        
        
}

?>
  #2 (permalink)  
Antiguo 15/04/2015, 16:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problemas con un Insert en PDO y mysql

¿Es necesario que escribas usando un tamaño de letra así de enorme?

Caray, si tienes problemas visuales no es que tengas que hacernos padecerlos también.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 15/04/2015, 17:06
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Problemas con un Insert en PDO y mysql

Cita:
quiere decir que hace el INSERT pero parece que elimina los datos.
No necesariamente. Un INSERT fallido modifica el valor del auto_increment para la columna de todos modos, porque ese valor se genera previo al INSERT, y en una tabla no transaccional.
Así que no es un error.
L oque es un error es que asumas cuál es el valor que va a tener el AI. Deja que eso lo maneje MySQL y recupera el valor generado luego de haberse realizado una inserción exitosa.
Por lo demás, es obvio que no estás validando correctamente la ejecución de la consulta.


Posdata: procura no modificar el tamaño de la tipografía. A ti te puede resultar lindo, pero es un espanto para leerla. Casi ni te respondo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: insert, mysql+php, pdo
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:23.