Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/12/2010, 13:00
kikoguanabacoa
 
Fecha de Ingreso: septiembre-2010
Mensajes: 30
Antigüedad: 14 años, 2 meses
Puntos: 0
Datos duplicados PHP-MYSQL

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