Fijense que tengo dos clases que manejan los datos de la base de datos: la clase de conexion y la clase del objeto empleado, ademas tengo la pagina de test que es para hacer pruebas o implementar las funciones que estan en las clases.
El detalle es que la funcion setEmpleado() me inserta dos veces el mismo dato a la base de datos. No encuentro en qué he fallado o qué debo hacer.
Les agradeceré su ayuda:
CLASE DE CONEXION
Código PHP:
<?php
//Descripcion: Clase BD y QUERY
//Version: 0.3
//Autor: Miquel Camps Orteza
//Web: www.viciao2k3.net
class bd{
var $usuari='sads'; //nombre de usuario de la base de datos
var $clau='sads'; //contraseña del usuario
var $servidor='localhost'; //nombre del servidor, normalmente localhost
var $nomBD='sads'; //nombre de la base de datos
var $conn; //necesario para la conexion y desconexion de la base de datos
var $debug; //modo depuracion, mostrara los errores y los querys
function x(){
//para cerrar la conexion mysql
//debes utlizarla SIEMPRE al final de tu documento
if(isset($this->conn))@mysql_close($this->conn);
}
function error_mysql($msg,$query=''){
//muestra el error
if($this->debug==1 && !empty($query)) $msg .= '<br><b />QUERY:</b><br />'.$query;
$this->enmarcar($msg);
$this->x();
die();
}
function enmarcar($str){
//para mostrar los errores dentro de un rectangulo
echo '<span style="display:block;border:1px red solid;padding:5px;">',$str,'</span>';
}
function __destruct(){
//el destructor se ejecuta antes de cerrar la ejecucion y con esto cerramos la conexion a la base de datos
$this->x();
}
function __construct($debug=0)
{
//al llamarla conecta directametne a la base de datos
$this->debug = $debug;
$this->conn = @mysql_connect($this->servidor, $this->usuari, $this->clau) or $this->error_mysql(mysql_error());
mysql_select_db($this->nomBD) or $this->error_mysql(mysql_error());
}
}
class query{
var $bd;//conexion mysql, requerido para llamar funciones de la classe bd
var $q; //query introducida
var $n;//numero de resultados
var $v;//los resultados en una tabla de objetos
var $a;//numero de filas afectadas por la query
function __construct($query,$bd)
{
//ejecuta la query y rellena las propiedades del objeto
$this->q = $query;
$this->bd = $bd;
$mysql_result = @mysql_query($query) or $this->bd->error_mysql(mysql_error(),$query);
$this->n = @mysql_num_rows($mysql_result);
$this->a = @mysql_affected_rows();
if($this->n)
for($i=0;$i<$this->n;$i++) $taula[$i] = @mysql_fetch_object($mysql_result);
else $taula = null;
$this->v = $taula;
if( $this->n > 0 ) mysql_free_result($mysql_result);
}
}
?>
Código PHP:
<?php
require("clases/class_mysql.php");
$bd = new bd;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
$idEmp = $_POST['CAMPO1'];
$PrimerNombre = $_POST['CAMPO2'];
$SegundoNombre = $_POST['CAMPO3'];
$PrimerApellido = $_POST['CAMPO4'];
$SegundoApellido = $_POST['CAMPO5'];
$Sexo = $_POST['CAMPO5'];
$EstadoCivil = $_POST['CAMPO6'];
$TipoContrato = $_POST['CAMPO7'];
$Direccion = $_POST['CAMPO8'];
$Telefono = $_POST['CAMPO9'];
$Mail = $_POST['CAMP11'];
$Dui = $_POST['CAMPO12'];
$Isss = $_POST['CAMPO13'];
$Afp = $_POST['CAMP14'];
$Nit = $_POST['CAMP15'];
$FechNac = $_POST['CAMP16'];
$FechIng = $_POST['CAMP17'];
$NombreEme = $_POST['CAMP18'];
$TelefonoEme = $_POST['CAMP19'];
$DireccionEme = $_POST['CAMP20'];
$Estado = $_POST['CAMP21'];
$Observacion = $_POST['CAMP22'];
$idCargo = $_POST['CAMP23'];
$Foto = $_POST['CAMP24'];
$query4 = new query('insert into empleado (id_emp,primernombre_emp, segundonombre_emp, primerapellido_emp, segundoapellido_emp, sexo_emp, estado_civil_emp, tipocontrato_emp, direccion_emp, telefono_emp, mail_emp, dui_emp, isss, afp_emp, nit, fecha_nac_emp, fecha_ing_emp, nombre_eme_emp,telefono_eme_emp, direccion_eme_emp, estado_emp, observacion, id_cargo, foto) values ("'.utf8_encode($idEmp).'","'.utf8_encode($PrimerNombre).'","'.utf8_encode($SegundoNombre).'","'.utf8_encode($PrimerApellido).'","'.utf8_encode($SegundoApellido).'","'.utf8_encode($Sexo).'","'.utf8_encode($EstadoCivil).'","'.utf8_encode($TipoContrato).'","'.utf8_encode($Direccion).'","'.utf8_encode($Telefono).'","'.utf8_encode($Mail).'","'.utf8_encode($Dui).'","'.utf8_encode($Isss).'","'.utf8_encode($Afp).'","'.utf8_encode($Nit).'","'.utf8_encode($FechNac).'","'.utf8_encode($FechIng).'","'.utf8_encode($NombreEme).'","'.utf8_encode($TelefonoEme).'","'.utf8_encode($DireccionEme).'","'.utf8_encode($Estado).'","'.utf8_encode($Observacion).'","'.utf8_encode($idCargo).'","'.utf8_encode($Foto).'")',$bd);
?>
</body>
</html>
<?php
$bd->x();
?>
Código:
DROP TABLE IF EXISTS `empleado`; CREATE TABLE `empleado` ( `id_emp` varchar(4) NOT NULL, `primernombre_emp` varchar(25) NOT NULL, `segundonombre_emp` varchar(25) DEFAULT NULL, `primerapellido_emp` varchar(25) NOT NULL, `segundoapellido_emp` varchar(25) DEFAULT NULL, `sexo_emp` varchar(1) NOT NULL, `estado_civil_emp` varchar(25) NOT NULL, `tipocontrato_emp` varchar(8) NOT NULL, `direccion_emp` varchar(50) NOT NULL, `telefono_emp` varchar(9) DEFAULT NULL, `mail_emp` varchar(40) DEFAULT NULL, `dui_emp` varchar(10) NOT NULL, `isss` varchar(9) NOT NULL, `afp_emp` varchar(12) NOT NULL, `nit` varchar(17) NOT NULL, `fecha_nac_emp` date NOT NULL, `fecha_ing_emp` date NOT NULL, `nombre_eme_emp` varchar(50) DEFAULT NULL, `telefono_eme_emp` varchar(9) DEFAULT NULL, `direccion_eme_emp` varchar(50) DEFAULT NULL, `estado_emp` varchar(30) NOT NULL, `observacion` varchar(50) DEFAULT NULL, `id_cargo` int(2) NOT NULL, `foto` varchar(255) DEFAULT NULL, PRIMARY KEY (`id_emp`), KEY `FK_empleado_1` (`id_cargo`), CONSTRAINT `FK_empleado_1` FOREIGN KEY (`id_cargo`) REFERENCES `cargo` (`id_cargo`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;