Buenas a todos.
Espero me puedan ayudar con el siguiente problema. de antemano gracias
Tengo una serie de catalogos referentes a clientes, proveedores, conceptos y bancos, en un formulario donde doy de alta, modifico y elimino registros sin cambiar de pantalla. Esto lo hace perfectamente sin embargo es necesario hacer la validacion para que no me duplique registros con el mismo nombre. NO he encontrado como hacerle para no perder la estructura.
Les pongo el codigo donde mando a llamar la clase que modifica, borra, rellena la tabla y da de alta, y el codigo de la clase donde guardo y modifico. De antemano gracias.....
Código PHP:
<?php
if (isset($_POST['submit'])&&!is_numeric($_POST['id'])) // si presiono el boton ingresar
{
$cliente=new Cliente();
//print_r($_POST);
$cliente->setNombre($_POST['nombre']); // setea los datos
$cliente->setApellido($_POST['nombresocio']);
$cliente->setFecha($_POST['persona']);
print " <H2>Cliente Guardado:</H2> ";
" <H2>Registro Guardado:</H2> ". $cliente->insertCliente(); // inserta y muestra el resultado
}
if (isset($_POST['submit'])&&is_numeric($_POST['id'])) // si presiono el boton y es modificar
{
$cliente=new Cliente($_POST['id']); // instancio la clase pasandole el nro de cliente para cargar los datos
$cliente->setNombre($_POST['nombre']); // setea los datos nuevos
$cliente->setApellido($_POST['nombresocio']);
$cliente->setFecha($_POST['persona']);
print "<h2>Cliente Modificado:</h2>";
"<h2>Registro Modificado:</h2>". $cliente->updateCliente(); // inserta y muestra el resultado
}
if (isset($_GET['br'])&&is_numeric($_GET['br'])) // si presiono el boton y es eliminar
{
$cliente=new Cliente();
print "<h2>Cliente Borrado: </h2>";
"<h2>Cliente Borrado: </h2>". $cliente->deleteCliente($_GET['br']); // elimina el cliente y muestra el resultado
}
$cliente=new Cliente();
$clientes= $cliente->getClientes(); // obtiene todos los clientes para despues mostrarlos
print '<br/><br/><table border=1 width="650" align="center">'
.'<tr><td><h2>Nombre Cliente:</h2></td>'
.'<td><h2>Socio:</h2></td>'
.'<td><h2>Fisica o Moral</h2></td>'
.'<td><h2>Modificar</h2></td>'
.'<td><h2>Borrar</h2></td></tr>';
while ($row=mysql_fetch_Array($clientes)) // recorre los clientes uno por uno hasta el fin de la tabla
{
print '<tr>'
.'<td><h3>'.$row['nombre'] .'</h3></td>'
.'<td><h3>'.$row['apellido'] .'</h3></td>'
.'<td><h3>'.$row['fecha_nac'] .'</h3></td>'
.'<td><h3><a href="clientes.php?md='.$row['id'].'">Modificar</h3></a></td>' // en este ejemplo para simplificar se envian los parametros por get utilizando un href
.'<td><h3><a href="clientes.php?br='.$row['id'].'">Borrar</h3></a></td>' // lo correcto seria enviarlos por post con un submit por ejem.
.'</tr>';
}
print '</table>';
?>
</p>
<p>
aqui mando el formulario por medio de una clase a mysql.
Código PHP:
class Cliente
{
var $nombre; //se declaran los atributos de la clase, que son los atributos del cliente
var $nombresocio;
var $persona;
var $id;
function Cliente($nro=0) // declara el constructor, si trae el numero de cliente lo busca , si no, trae todos los clientes
{
if ($nro!=0)
{
$obj_cliente=new sQuery();
$result=$obj_cliente->executeQuery("select * from clientes where id = $nro"); // ejecuta la consulta para traer al cliente
$row=mysql_fetch_array($result);
$this->id=$row['id'];
$this->nombre=$row['nombre'];
$this->nombresocio=$row['apellido'];
$this->persona=$row['fecha_nac'];
}
}
function getClientes() // este metodo podria no estar en esta clase, se incluye para simplificar el codigo, lo que hace es traer todos los clientes
{
$obj_cliente=new sQuery();
$result=$obj_cliente->executeQuery("select * from clientes"); // ejecuta la consulta para traer al cliente
return $result; // retorna todos los clientes
}
// metodos que devuelven valores
function getID()
{ return $this->id;}
function getNombre()
{ return $this->nombre;}
function getApellido()
{ return $this->nombresocio;}
function getFecha()
{ return $this->persona;}
// metodos que setean los valores
function setNombre($val)
{ $this->nombre=$val;}
function setApellido($val)
{ $this->nombresocio=$val;}
function setFecha($val)
{ $this->persona=$val;}
//function guardacliente($nombrecliente, $idsocio, $persona)
//{
//$cadenaguardacliente=sprintf("insert into clientes values(0, '%s', %d, %d)", $nombrecliente, $idsocio, $persona);
//$ejecutaguardarcliente=mysql_query($cadenaguardacliente, $this->GM2010)or die(mysql_error());
//}
function updateCliente() // actualiza el cliente cargado en los atributos
{
$obj_cliente=new sQuery();
$query="update clientes set nombre='$this->nombre', apellido='$this->nombresocio',fecha_nac='$this->persona' where id = $this->id";
$obj_cliente->executeQuery($query); // ejecuta la consulta para traer al cliente
return $query .'<br/>Registros afectados: '.$obj_cliente->getAffect(); // retorna todos los registros afectados
}
function insertCliente() // inserta el cliente cargado en los atributos
{
$obj_cliente=new sQuery();
$query="insert into clientes( nombre, apellido, fecha_nac)values('$this->nombre', '$this->nombresocio','$this->persona')";
$obj_cliente->executeQuery($query); // ejecuta la consulta para traer al cliente
return $query .'<br/>Registros afectados: '.$obj_cliente->getAffect(); // retorna todos los registros afectados
}
function deleteCliente($val) // elimina el cliente
{
$obj_cliente=new sQuery();
$query="delete from clientes where id=$val";
$obj_cliente->executeQuery($query); // ejecuta la consulta para borrar el cliente
return $query .'<br/>Registros afectados: '.$obj_cliente->getAffect(); // retorna todos los registros afectados
}
}
?>
Si alguien necesita el codigo completo me avisan y se los paso es una buena herramienta para administrar un catalogo. Gracias