Foros del Web » Programando para Internet » PHP »

PHP OO Problema con insertar registros PDO

Estas en el tema de Problema con insertar registros PDO en el foro de PHP en Foros del Web. Hola a todos, actualmente he comenzado a trabajar con PDO y PHP y he tenido un problema con la inserción de registros a la BD ...
  #1 (permalink)  
Antiguo 31/07/2012, 00:32
 
Fecha de Ingreso: julio-2011
Mensajes: 3
Antigüedad: 12 años, 9 meses
Puntos: 0
Problema con insertar registros PDO

Hola a todos, actualmente he comenzado a trabajar con PDO y PHP y he tenido un problema con la inserción de registros a la BD (MySQL), la página no me lanza ningún error de codificación, pero al momento de insertar los registros, estos no se muestran en la BD, este es mi código:
Código HTML:
Ver original
  1. <form method = "POST" action = "procesarRegs.php" name = "frmPrincipal">
  2.             <table border = "8" align = "Center" cellspacing = "2" cellpadding = "2">
  3.                 <tbody>
  4.                
  5.                     <tr>
  6.                         <th>Codigo del curso </th>
  7.                         <td> <input type = "text" name = "txtCodigo"/> </td>
  8.                     </tr>
  9.                    
  10.                     <tr>
  11.                         <th>Acción formativa </th>
  12.                         <td> <input type = "text" name = "txtAccion"/> </td>
  13.                     </tr>
  14.                    
  15.                     <tr>
  16.                         <th>Fecha de inicio</th>
  17.                         <td> <input type = "text" name = "txtFechaI"/> </td>
  18.                     </tr>
  19.                    
  20.                     <tr>
  21.                         <th>Fecha de termino</th>
  22.                         <td> <input type = "text" name = "txtFechaT"/> </td>
  23.                     </tr>
  24.                    
  25.                     <tr>
  26.                         <th> Fecha de recepción de expediente </th>
  27.                         <td> <input type = "text" name = "txtFechaEx"/> </td>
  28.                     </tr>
  29.                    
  30.                     <tr>
  31.                         <th> Estrategia </th>
  32.                         <td>
  33.                             <select name = "selEstrategia">
  34.                                 <option value = "Empresa"> Empresa </option>
  35.                                 <option value = "C/Tecnologico"> Centro Tecnologico</option>
  36.                                 <option value = "COS"> COS </option>
  37.                             </select>
  38.                         </td>
  39.                     </tr>
  40.                    
  41.                     <tr>
  42.                         <th> Fecha de elaboración de certificados </th>
  43.                         <td> <input type = "text" name = "txtFechaEla"/>
  44.                     </tr>
  45.                    
  46.                     <tr>
  47.                         <th> Tiempo de elaboración de certificados </th>
  48.                         <td> <input type = "text" name = "txtTiempo"/></td>
  49.                     </tr>
  50.                    
  51.                     <tr>
  52.                         <th> Observaciones </th>
  53.                         <td> <textarea name = "txtObserv" rows = "10" cols = "20"> </textarea> </td>
  54.                
  55.                     <tr>
  56.                         <td><input type = "submit" name = "btnEnviar" value = "Registrar"/></td>
  57.                     </tr>  
  58.                    
  59.                     <tr>
  60.                         <td><a href = "reporte.php"> Reportes </a></td>
  61.                     </tr>
  62.                 </tbody>
  63.             </table>
  64.         </form>

Código PHP:
<?php
require_once("class.php");        
$var = new Procesos();
$var->insertarRegistros();        
?>
Código PHP:
public function insertarRegistros()
    {
            
// Campos
            
$codigo $_POST["txtCodigo"];
            
$Accion $_POST["txtAccion"];
            
$fecha_i $_POST["txtFechaI"];
            
$fecha_t $_POST["txtFechaT"];
            
$fecha_ex $_POST["txtFechaEx"];
            
$fecha_ela $_POST["txtFechaEla"];
            
$obs $_POST["txtObserv"];
            
$estra $_POST["selEstrategia"];
            
$value 45;
        try
        {        
        
$dbh = new PDO("mysql:dbname=infotep","root","abcd6696");
        }
        catch (
PDOException $e)
        {
            echo 
"Connection Failed " $e.getMessage();
        }
        
$sql "Insert into Certificados  Values (null,:Cod,:Accion,:inicio,:termino,:recepcion,:estrategia,:certificados,:tiempo,:obs)";
        
$param $dbh->prepare($sql);
        try
        {
        
$param->bindValue(':Cod',$codigo,PDO::PARAM_INT);
        
$param->bindValue(':Accion',$Accion,PDO::PARAM_STR);
        
$param->bindValue(':inicio',$fecha_i,PDO::PARAM_STR);
        
$param->bindValue(':termino',$fecha_t,PDO::PARAM_STR);
        
$param->bindValue(':recepcion',$fecha_ex,PDO::PARAM_STR);
        
$param->bindValue(':estrategia',$estra,PDO::PARAM_STR);
        
$param->bindValue(':certificados',$fecha_ela,PDO::PARAM_STR);
        
$param->bindValue(':tiempo',$value,PDO::PARAM_INT);
        
$param->bindValue(':obs',$obs,PDO::PARAM_STR);
        }
        catch (
PDOException $e)
        {
            echo 
e.getMessage();
        }
        
$param->execute();
        
print_r($param);
        
    }

He probado muchas alternativas, como usar el método bindParam o pasarle un arreglo al método execute() y nada.. Repito, la página no me lanza error, pero los registros no se guardan en la tabla. Cuando uso el print_r($param) para ver que recibe, este no esta pasando nada. Ojala y puedan ayudarme.

Gracias de antemano. :)
  #2 (permalink)  
Antiguo 31/07/2012, 02:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Problema con insertar registros PDO

Entiendo que la clase que estas instanciando es Procesos la cual esta en class.php y insertarRegistros es una funcion del objeto.

Creo que el problema es que $_POST llega a procesarRegs.php no al objeto con lo que deberias pasarlo como parametro a la funcion
insertarRegistros().

En la clase
Código PHP:
Ver original
  1. public function insertarRegistros($campos) //donde $campos es un array
  2. {
  3.             // Campos
  4.             $codigo = $campos["txtCodigo"];
  5.             $Accion = $campos["txtAccion"];
  6.             $fecha_i = $campos["txtFechaI"];
  7. ...


En procesarRegs.php
Código PHP:
Ver original
  1. $var->insertarRegistros($_POST);
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 31/07/2012, 17:37
 
Fecha de Ingreso: julio-2011
Mensajes: 3
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problema con insertar registros PDO

No había pensado en eso, pero si, realmente funciono, muchas gracias viejo, te debo una. :)

Etiquetas: mysql, pdo, registro, registros, sql, tabla
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 14:37.