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
$conect= mysql_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->pconsulta= mysql_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