Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/04/2009, 16:29
hollowmanf
 
Fecha de Ingreso: enero-2009
Mensajes: 246
Antigüedad: 15 años, 4 meses
Puntos: 1
Problema en ABM

Hola gente, tengo un problema en un abm que descargue por internet y la verdad que no se como solucionarlo.

Pego los dos php para que vean:

index.php

Código PHP:
<html>
<head>
<title></title>
</head>
<body>
<?php
include_once ("clase.php"); // incluye las clases
    
$nombre="";
    
$apellido="";
    
$fecha="";
    
$cliente="";
    
$id="";

if (isset(
$_GET['md'])) // si modifica este valor viene seteado y ejecuta el siguiente codigo
{
    
$cliente=new Cliente($_GET['md']);  // instancio la clase cliente pasandole en nro de cliente, de esta forma lo busca
    
$nombre=$cliente->getNombre();        // obtengo el nombre
    
$apellido=$cliente->getApellido();    // obtengo el apellido
    
$fecha=$cliente->getFecha();        // obtengo la fecha de nac
    
$peso=$cliente->getPeso();            // obtengo su peso 
    
$id=$cliente->getID();                // obtengo el id
}
?>

<div >
<form method="POST" action="index.php"> 
<input type="hidden" name="id" value="<?php print $id ?>">
<table border=1>

<tr>
    <td>Nombre</td>
    <td><input type="text" name="nombre" value = "<?php print $nombre ?>"></td>
</tr>
<tr>
    <td>Apellido</td>
    <td><input type="text" name="apellido"value = "<?php print $apellido ?>"></td>
</tr>
<tr>
    <td>Fecha Nacimiento</td>
    <td><input type="text" name="fecha"value = "<?php print $fecha ?>">'yyyy-mm-dd'</td>
</tr>
<tr>
    <td>Peso</td>
    <td><input type="text" name="peso"value = "<?php print $peso ?>"></td>
</tr>
<tr>
    <td></td>
    <td align =right><input type="submit" name="submit" value ="<?php if(is_numeric($id)) print "Modificar"; else print "Ingresar";?>"></td>
</tr>
</table>
</form>
</div>
<?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['apellido']);    
    
$cliente->setFecha($_POST['fecha']);    
    
$cliente->setPeso($_POST['peso']);    
    print 
" Consulta ejecutada: "$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['apellido']);    
    
$cliente->setFecha($_POST['fecha']);    
    
$cliente->setPeso($_POST['peso']);    
    print 
" Consulta ejecutada: "$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 
" Consulta ejecutada: "$cliente->deleteCliente($_GET['br']); // elimina el cliente
}



$cliente=new Cliente();
$clientes$cliente->getClientes();

print 
'<br/><br/><table border=1>'
          
.'<tr><td>Nombre:</td>'
          
.'<td>Apellido:</td>'
          
.'<td>Fecha Nacimiento</td>'
          
.'<td>peso</td>'
          
.'<td>Modificar</td>'
          
.'<td>Borrar</td></tr>';

while (
$row=mysql_fetch_Array($clientes))
{
    print 
'<tr>'
          
.'<td>'.$row['nombre'] .'</td>'
          
.'<td>'.$row['apellido'] .'</td>'
          
.'<td>'.$row['fecha_nac'] .'</td>'
          
.'<td>'.$row['peso'] .'</td>'
          
.'<td><a href="index.php?md='.$row['id'].'">Modificar</a></td>'   // en este ejemplo para simplificar se envian los parametros por get utilizando un href
          
.'<td><a href="index.php?br='.$row['id'].'">Borrar</a></td>'        // lo correcto seria enviarlos por post con un submit por ejem.
          
.'</tr>';
}
print 
'</table>';
?>
</body>
</html>

clase.php

Código PHP:
<?php
class Conexion  // se declara una clase para hacer la conexion con la base de datos
{
    var 
$con;
    function 
Conexion()
                
    {
        
// se definen los datos del servidor de base de datos 
        
$conection['server']="localhost";  //host
        
$conection['user']="root";         //  usuario
        
$conection['pass']="";        //password
        
$conection['base']="prueba";            //base de datos
        
        
        // crea la conexion pasandole el servidor , usuario y clave
        
$conectmysql_pconnect($conection['server'],$conection['user'],$conection['pass']);


            
        if (
$conect// si la conexion fue exitosa , selecciona la base
        
{
            
mysql_select_db($conection['base']);            
            
$this->con=$conect;
        }
    }
    function 
getConexion() // devuelve la conexion
    
{
        return 
$this->con;
    }
    function 
Close()  // cierra la conexion
    
{
        
mysql_close($this->con);
    }    

}




class 
sQuery   // se declara una clase para poder ejecutar las consultas, esta clase llama a la clase anterior
{

    var 
$pconeccion;
    var 
$pconsulta;
    var 
$resultados;
    function 
sQuery()  // constructor, solo crea una conexion usando la clase "Conexion"
    
{
        
$this->pconeccion= new Conexion();
    }
    function 
executeQuery($cons)  // metodo que ejecuta una consulta y la guarda en el atributo $pconsulta
    
{
        
$this->pconsultamysql_query($cons,$this->pconeccion->getConexion());
        return 
$this->pconsulta;
    }    
    function 
getResults()   // retorna la consulta en forma de result.
    
{return $this->pconsulta;}    
    
    function 
Close()        // cierra la conexion
    
{$this->pconeccion->Close();}    
    
    function 
Clean() // libera la consulta
    
{mysql_free_result($this->pconsulta);}
    
    function 
getResultados() // debuelve la cantidad de registros encontrados
    
{return mysql_affected_rows($this->pconeccion->getConexion()) ;}
    
    function 
getAffect() // devuelve las cantidad de filas afectadas
    
{return mysql_affected_rows($this->pconeccion->getConexion()) ;}
}




class 
Cliente
{
    var 
$nombre;     //se declaran los atributos de la clase
    
var $apellido;
    var 
$fecha;
    Var 
$peso;
    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->apellido=$row['apellido'];
            
$this->fecha=$row['fecha_nac'];
            
$this->peso=$row['peso'];
        }
    }
    function 
getClientes() // este metodo podria no estar en esta clase, se incluye para simplificar el codigo
        
{
            
$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->apellido;}
    function 
getFecha()
     { return 
$this->fecha;}
    function 
getPeso()
     { return 
$this->peso;}
     
        
// metodos que setean los valores
    
function setNombre($val)
     { 
$this->nombre=$val;}
    function 
setApellido($val)
     {  
$this->apellido=$val;}
    function 
setFecha($val)
     {  
$this->fecha=$val;}
    function 
setPeso($val)
     {  
$this->peso=$val;}

    function 
updateCliente()    // actualiza el cliente cargado en los atributos
    
{
            
$obj_cliente=new sQuery();
            
$query="update clientes set nombre='$this->nombre', apellido='$this->apellido',fecha_nac='$this->fecha',peso='$this->peso' 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,peso)values('$this->nombre', '$this->apellido','$this->fecha','$this->peso')";
            
            
$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
    
    
}    
    
}


?>

el error que me tira al ejecutar el index.php es el siguiente:

Caundo quiero hacer el insert me tira esto:

Consulta ejecutada: insert into clientes( nombre, apellido, fecha_nac,peso)values('', '','','')
Registros afectados: -1

y mas abajo antes de la edicion me tira el siguiente error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\EasyPHP 2.0b1\www\Abm\index.php on line 96

Espero alguien pueda ayudarme y decirme el motivo y/o la soloucion a esto.

Gracias de antemano

Salu2