Buenas , soy un novato en el mundo php , estoy desarrollando una tienda, y bueno resulta que estoy intentando crear mi "framework" a 3 capas y OOP... o algo parecido jaajja
Mi estructura es tal que Carpeta proyecto y dentro de ella van los php de las paginas a mostrar y las una carpeta llamada php, que contiene otras 3 con Vistas, Clases y Controladores tal que:
Proyecto:
-index.php
-marcas.php....
-php:
........ -Clases
........ -Vistas
........ -Controladores
Mi problema es que primero nose si sera correcto montarlo asi... y a parte de esto, estoy obteniendo un error que no me permite continuar.. y dado que acabo de empezar creo que es el momento de enfocar el desarrollo correctamente , asi que os adjunto mi codigo y el error , para que evalueis si es una manera correcta de hacerlo y me orienteis.
Problema: estoy intentando mostrar una pagina , marcas.php en la que llamo al controlador C_ListarMarcas.php cuyo contenido seria:
Código:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Tienda</title>
<link rel="stylesheet" type="text/css" href="css/styleMarcas.css" />
</head>
<body>
<div id="Main">
<div id="Header">
<div id="Header1">
<h1 class="tittle">Titulo1</h1>
<h2 class="tittle">Titulo2</h2>
<div id="Separador"></div>
</div>
</div>
<div id="MainContainer">
<div id="Content">
<div id="Brands">
<ul id="ulBrands" class="liEnlaces">
<?php
require("php/Controladores/C_ListarMarcas.php");
?>
</ul>
</div>
No se si es correcto llamarlo asi...
El contenido del controlador es:
Código:
<?php
require("php/Clases/GestionMarcas.php");
$GM=new GestionMarcas();
$marcas=$GM->ListarMarcas();
require("php/Vistas/V_ListarMarcas.php");
?>
Lo que supuestamente hace es llamar a una clase que dispone de una funcion llamada ListaMarcas, nos devuelve un array asociativo con las marcas.Este seria su codigo:
Código:
<?php class GestionMarcas{
require("php/Clases/mysql.php");
$MySQL=new MySQL();
public function ListarMarcas(){
//Listaremos todas las marcas order by Nombre Marca.
return $MySQL->sp("S_Marcas","","");
}
}?>
Esta es la vista:
Código:
<?php
while($row = mysql_fetch_array($marcas)) { ?>
<li><a href="Colecciones.php?id="<?php echo $row ['idMarcas']; ?> alt""><?php echo $row ['Nombre']; ?></a></li>
<?php }?>
Para ello se sirve de una pequeña clase de MySQL en la cual se encarga de llamar a un sp para obtener dichas marcas.Aqui os dejo el codigo:
Código:
<?php class MySQL{
private $conexion; private $total_consultas;
public function MySQL(){
if(!isset($this->conexion)){
$this->conexion = (mysql_connect("localhost","admin","12345"))
or die(mysql_error());
mysql_select_db("proyecto",$this->conexion) or die(mysql_error());
}
}
public function consulta($consulta){
$this->total_consultas++;
$resultado = mysql_query($consulta,$this->conexion);
if(!$resultado){
echo 'MySQL Error: ' . mysql_error();
exit;
}
return $resultado;
}
public function sp($nombre,$parametrosIn,$parametrosOut){
return $this->consulta('CALL '.$nombre.'('.$parametrosOut.','.$parametrosIn.')');
}
public function fetch_array($consulta){
return mysql_fetch_array($consulta);
}
public function num_rows($consulta){
return mysql_num_rows($consulta);
}
public function getTotalConsultas(){
return $this->total_consultas;
}
}?>
Y por ultimo os anexo el error que recibo al intentar entrar en marcas.php:
( ! ) Parse error: syntax error, unexpected T_REQUIRE, expecting T_FUNCTION in
C:\wamp\www\proyecto\php\Clases\GestionMarcas.php on line 3
Call Stack
# Time Memory Function Location
1 0.0121 670912 {main}( ) ..\Colecciones.php:0
2 0.0127 674848 require( 'C:\wamp\www\proyecto\php\Controladores\C_ListarMa rcas.php' ) ..\Colecciones.php:24
Gracias por todo ;)