Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/05/2012, 16:31
aletutuca
 
Fecha de Ingreso: julio-2011
Mensajes: 24
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problemas con php mysql

[CODE]
Código:
<?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']="root";		//password
		$conection['base']="productos";			//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, que son los atributos del cliente
	var $desc;
	var $foto;
	var $precio;
	var $marca;
	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 producto where id = $nro"); // ejecuta la consulta para traer al cliente 
			$row=mysql_fetch_array($result);
			$this->id=$row['id'];
			$this->nombre=$row['nombre'];
			$this->desc=$row['desc'];
			$this->foto=$row['foto'];
			$this->precio=$row['precio'];
			$this->marca=$row['marca'];
		}
	}
	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 producto"); // 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 getDesc()
	 { return $this->desc;}
	function getFoto()
	 { return $this->foto;}
	function getPrecio()
	 { return $this->precio;}
	 function getMarca()
	 { return $this->marca;}
	 
		// metodos que setean los valores
	function setNombre($val)
	 { $this->nombre=$val;}
	function setDesc($val)
	 {  $this->desc=$val;}
	function setFoto($val)
	 {  $this->foto=$val;}
	function setPrecio($val)
	 {  $this->precio=$val;}
	 function setMarca($val)
	 {  $this->marca=$val;}

	function updateCliente()	// actualiza el cliente cargado en los atributos
	{
			$obj_cliente=new sQuery();
			$query="UPDATE producto SET nombre='$this->nombre', desc='$this->desc', foto='$this->foto', precio='$this->precio', marca='$this->marca' 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 producto (nombre, desc,  foto, precio, marca) VALUES ('$this->nombre', '$this->desc', '$this->foto', '$this->precio', '$this->marca')";
			
			$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 producto 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
	
	}	
	
}
	$nombre="";
	$desc="";
	$foto="";
	$cliente="";
	$marca="";
	$id="";

if (isset($_GET['md'])) // si la operacion es modificar, este valor viene seteado y ejecuta el siguiente codigo
{
	$cliente=new Cliente($_GET['md']);  // instancio la clase cliente pasandole el nro de cliente, de esta forma lo busca
	$nombre=$cliente->getNombre();		// obtengo el nombre
	$desc=$cliente->getDesc();	// obtengo el apellido
	$foto=$cliente->getFoto();		// obtengo la fecha de nacimiento
	$precio=$cliente->getPrecio();
	$marca=$cliente->getMarca();			// 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>Descripcion</td>
	<td><label for="desc"></label>
      <textarea name="desc" cols="40" id="desc"><?php print $desc ?></textarea></td>
</tr>
<tr>
	<td>Foto</td>
	<td><input type="text" name="foto" value = "<?php print $foto ?>">'yyyy-mm-dd'</td>
</tr>
<tr>
	<td>Precio</td>
	<td><input type="text" name="precio" value = "<?php print $precio ?>">
	formato: XXX.XXasda</td>
</tr>
<tr>
	<td>Marca</td>
	<td><input type="text" name="marca"value = "<?php print $marca ?>"></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->setDesc($_POST['desc']);	
	$cliente->setFoto($_POST['foto']);	
	$cliente->setPrecio($_POST['precio']);
	$cliente->setMarca($_POST['marca']);	
	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->setDesc($_POST['desc']);	
	$cliente->setFoto($_POST['foto']);	
	$cliente->setPrecio($_POST['precio']);	
	$cliente->setMarca($_POST['marca']);
	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 y muestra el resultado
}



$cliente=new Cliente();
$clientes= $cliente->getClientes(); // obtiene todos los clientes para despues mostrarlos

print '<br/><br/><table border=1>'
		  .'<tr><td>Nombre:</td>'
		  .'<td>Descripcion:</td>'
		  .'<td>Foto</td>'
		  .'<td>Precio</td>'
		  .'<td>Marca</td>'
		  .'<td>Modificar</td>'
		  .'<td>Borrar</td></tr>';

while ($row=mysql_fetch_Array($clientes)) // recorre los clientes uno por uno hasta el fin de la tabla
{
	print '<tr>'
		  .'<td>'.$row['nombre'] .'</td>'
		  .'<td>'.$row['desc'] .'</td>'
		  .'<td>'.$row['foto'] .'</td>'
		  .'<td>'.$row['precio'] .'</td>'
		  .'<td>'.$row['marca'] .'</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>';
?>
		  .

Última edición por aletutuca; 04/05/2012 a las 16:38