Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/06/2012, 16:38
Avatar de Middrel
Middrel
 
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Duda con error en PHP OO

Hola! buenas tardes...

Tengo una duda con un error que me arroja mi código en PHP, aún me falta comprender bien la POO, supongo que por ello no encuentro la solución. Bueno, la idea es insertar registros en una tabla de una base de datos, les muestro los archivos que realizan esto:

Este es el archivo [admin-form-clientes.php]que muestra la información en pantalla (Vista):

Código PHP:
<!-- Formulario para alta de clientes al sistema -->
<
form action="bd/admin-RegCliente.php" method="post" id="formulario-cliente">
    <
div class="campos-form">
        <
h1>Datos Generales del Cliente</h1>
            <
p>
                
Código <input type="text" name="codigo" id="codigo" size="5%" required=""/>
                
Nombre <input type="text" name="nombre" id="nombre" size="73%" required="" />
            </
p>
            <
p>
                
Teléfono <input type="tel" name="telefono" id="telefono" size="25%" />
                
e-mail <input type="email" name="email" id="email" size="53%" />
            </
p>
            <
p>
                
Calle <input type="text" name="calle" id="calle" size="47%" required="" />
                
NoInt <input type="text" name="int" id="int" size="2%" required="" />
                
NoExt <input type="text" name="ext" id="ext" size="2%" required="" />
                
CP <input type="text" name="cp" id="cp" size="6%"  />
            </
p>
            <
p>
                
Colonia <input type="text" name="colonia" id="colonia" size="45%" required="" />
                
Delegación <input type="text" name="deleg" id="deleg" size="30%" required="" />
            </
p>
            <
p>
                
Estatus <input type="text" name="estatus" id="estatus" size="2%" required="" />
            </
p>
        </
div>
        <
div class="botones-form">
            <
input type="submit" name="enviar" id="enviar" value="Guardar" onclick="valida();" />
            <
input type="reset" name="limpiar" id="limpiar" value="Limpiar"/>
        </
div>
</
form
Con este otro realizo la conexión a la base de datos [admin-conexion.php]:

Código PHP:
<?php 
    
    
/* Creamos la clase para la conexión a la base de datos*/
    
class Conexion {
        
        var 
$bd;
        var 
$serv;
        var 
$user;
        var 
$pass
        var 
$conexion;
        var 
$Errno 0;
        var 
$Error "";
        
        
/* Constructor a la BD*/
        
function ConexionConst() {
            
            
$this->bd "bd_filmoteca";
            
$this->serv "localhost";
            
$this->user "root";
            
$this->pass "";
            
        }
        
        
/* Comenzamos con la conexión */
        
function ConexionBD() {
            
            
$this->conexion mysql_connect($this->serv$this->user$this->pass);
            
/* Si falla no nos podremos conectar*/
            
if(!$this->conexion) {
                
$this->Error "La conexión no pudo ser realizada";
                return 
0;
            }
            
/* Elegimos bd */
            
if(!@mysqli_select_db($this->bd$this->conexion)){
                
$this->Error "No se puede abrir la base de datos" $this->bd;
                return 
0;
            }
            
/* Si todo sale bien me regresa la conexión */
            
return $this->conexion;
        }
    }
?>
El siguiente archivo recoge la información del formulario [admin-RegCliente.php]

Código PHP:
<?php 

    
include_once("RegCliente.php");

    
$cliente = new RegCliente();
    
    
$cliente->setcodigo($_REQUEST['codigo']); 
    
$cliente->setnombre($_REQUEST['nombre']);
    
$cliente->settelefono($_REQUEST['telefono']);
    
$cliente->setemail($_REQUEST['email']);
    
$cliente->setcalle($_REQUEST['calle']);
    
$cliente->setint($_REQUEST['int']);
    
$cliente->setext($_REQUEST['ext']);
    
$cliente->setcp($_REQUEST['cp']);
    
$cliente->setcolonia($_REQUEST['colonia']);
    
$cliente->setdelegacion($_REQUEST['deleg']);
    
$cliente->setestatus($_REQUEST['estatus']);
    
    
$regCliente->$cliente->RegClienteBD();    

?>
y por último, este archivo envia la información a la base de datos [RegCliente.php]

Código PHP:
<?php
    
    
include_once('admin-conexion.php');
    
    class 
RegCliente {
        
        private 
$codigo;
        private 
$nombre;
        private 
$telefono;
        private 
$email;
        private 
$calle;
        private 
$int;
        private 
$ext;
        private 
$cp;
        private 
$colonia;
        private 
$delegacion;
        private 
$estatus;
        
        function 
RegClienteBD() {
            
$regCliente;
            
            try {
            
                
$conectar = new Conexion();
                
$cn->$conectar->ConexionBD();
                
                
mysql_query("BEGIN",$cn);
                
$sql "INSERT INTO films_clientes VALUES('$this->codigo','$this->nombre',$this->telefono,'$this->email','$this->calle','$this->int','$this->ext',$this->cp,'$this->colonia','$this->delegacion','$this->estatus')";
                
$result mysql_query($sql,$cn);
                
                if(!
$result){
                    
mysql_query("ROLLBACK",$cn);
                    
$regCliente FALSE;
                } else {
                    
mysql_query("COMMIT",$cn);
                    
$regCliente TRUE;
                }
                
                
mysql_close($cn);
                
            } catch (
exception $e) {}
            
            return 
$regCliente;            
        }                
    }
?>
Al pulsar el botón de enviar me marca el siguiente error:

Fatal error: Call to undefined method RegCliente::setcodigo() in C:\xampp\htdocs\proyecto_peliculas\bd\admin-RegCliente.php on line 7

Sólo que no identifico el porque de este error, ¿alguien tendrá alguna idea?

Como dato adicional, ya he podido enviar datos a una base mediante programación en PHP, más no en PHP OO, utilizo XAMPP por si les sirve como nota adicional.

De antemano les agradezco sus comentarios.