Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/01/2012, 08:23
Avatar de miguec04
miguec04
 
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Clases en php

Código PHP:
Ver original
  1. class Empleat{
  2.     private $conexion;
  3.     private $_codi;
  4.     private $_nom;
  5.     private $_dept;
  6.    
  7.     public function __construct($xcodi, $xnom, $xdept){
  8.         $this->_codi=$xcodi;
  9.         $this->_nom=$xnom;
  10.         $this->_dept=$xdept;
  11.     }
  12.  
  13.    public function setConexion($conexion) {
  14.       $this->conexion  = $conexion;
  15.   }
  16.  
  17.     function getCodi(){
  18.         return $this->_codi;
  19.     }
  20.     function getNom(){
  21.         return $this->_nom;
  22.     }
  23.     function getDept(){
  24.         return $this->_dept;
  25.     }
  26.     function guardarBd(){
  27.         $xcodi= $this->getCodi();
  28.         $xnom= $this->getNom();
  29.         $xdept= $this->getDept();
  30.         mysql_query("insert into empleat values($xcodi,'$xnom',$xdept)",$this->conexion);
  31.     }
  32. }

Lo primero es que por principio los atributos deben ser o privados o protegidos, protegidos cuando se hereden.

lo siguiente, yo veo que haces el mysql_query pero nunca envias la conexion a la clase para ejecutarla entonces creé un atributo conexion donde por parametro la asignare y poder ejecutar la sentencia.

Código PHP:
Ver original
  1. //no se que tenga aqui en este archivo asi que pienso que trae una funcion llamada conexion(), espero ayudarte con eso.
  2. require 'conexio.php';
  3. require 'class_empleat.php';
  4.  
  5. if(isset($_POST['enviar'])){
  6.  
  7.    //no se como abre la conexion pero pienso que es de alguna de estas maneras
  8.   $conexion = conexion();
  9.  
  10.     $codi=$_POST['codi'];
  11.     $nom=$_POST['nom'];
  12.     $dept=$_POST['dept'];
  13.    
  14.     $e = new Empleat($codi,$nom,$dept);
  15.  
  16.     $e->setConexion($conexion);
  17.  
  18.     if(empty($_SESSION['empleats'])) {
  19.      $_SESSION['empleats'] = array();
  20.    }
  21.     $_SESSION['empleats'][]=$e;
  22.     $e->guardarBd();
  23. }

lo siguiente es que debe abrir la conexión en algún lado, no veo donde lo hizo, doy un ejemplo de como yo lo hubiese podido hacer.

otra cosa importante, por principio, el nombre de la clase debe ser el mismo del nombre del archivo, como para que sea mas entendible, mas practico, mas usable.

espero haber ayudado, cualquier cosa estoy pendiente de la respuesta.
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co