Foros del Web » Programando para Internet » PHP »

Tablas Dinamicas PHP, Mysql

Estas en el tema de Tablas Dinamicas PHP, Mysql en el foro de PHP en Foros del Web. Buenas, antes que nada me presento, mi nombre es Daniel... Estoy creando un pequeño sistema de Juegos Online, el problema que me ha surgido es ...
  #1 (permalink)  
Antiguo 05/01/2009, 17:58
 
Fecha de Ingreso: noviembre-2008
Mensajes: 130
Antigüedad: 16 años
Puntos: 0
Tablas Dinamicas PHP, Mysql

Buenas, antes que nada me presento, mi nombre es Daniel...
Estoy creando un pequeño sistema de Juegos Online, el problema que me ha surgido es el de crear una tabla dinamica para mostrar la lista de juegos online....
Les muestro mi codigo en el Index.php
Antes le cuento que estoy usando clases para la conexion de base de datos y para plantillas...

Bueno ahora si...el Codigo..

Código PHP:
<?php
include("./contenedor/contenedor.php");
include_once(
"./clases/listarjuegos/categoria_juegos.class.php");

$bd = new bd();
$query = new query('SELECT id, nombre, url FROM categorias ORDER BY id ASC',$bd);

$query2 = new query('SELECT id, titulo,descripcion,keywords,categoria,screenshot FROM juegos ORDER BY id ASC',$bd);

$varmenu="";
foreach (
$query->as $menu)
{
$url=($menu->url);
$varmenu.=('<a href='.$url.'>'.$menu->nombre.'</a>'.' ');
}
foreach (
$query2->as $ultimosj)
{
$categoria=($ultimosj->categoria);
$screenshot=($ultimosj->screenshot);
$screenshot=('<IMG SRC='."juegos/screenshot/".$screenshot.'.png'.'>');
}

switch (
$categoria) {
    case 
1:
        
$categoria"<strong>Categoria:</strong>"." "."Puzzle";
        break;
    case 
2:
        
$categoria"<strong>Categoria:</strong>"." "."Accion";
        break;
    case 
3:
        
$categoria"<strong>Categoria:</strong>"." "."Aventura";
        break;
    case 
4:
        
$categoria"<strong>Categoria:</strong>"." "."Deportes";
        break;
    case 
5:
        
$categoria"<strong>Categoria:</strong>"." "."Shooter";
        break;
    case 
6:
        
$categoria"<strong>Categoria:</strong>"." "."Casino";
        break;
    case 
7:
        
$categoria"<strong>Categoria:</strong>"." "."Otros";
        break;
    case 
8:
        
$categoria"<strong>Categoria:</strong>"." "."Adultos";
        break;
    case 
9:
        
$categoria"<strong>Categoria:</strong>"." "."Arcade";
        break;
    case 
10:
        
$categoria"<strong>Categoria:</strong>"." "."Estrategia";
        break;
        }

// instancia con nombre del theme.
$template = new plantillas("index");

// variables a sustituir.
$input = array("{categorias}""{footer}""{u_juegos}""{titulo_juego}""{screenshot}""{descripcion}""{keywords}","{categoria}"); 

// Valores reales.
$output = array($varmenu"CMS Juegos Online"" "$screenshot" "" "" "$categoria);

// cargamos la plantilla post y asignamos los valores.
$template->cargarPlantilla($input$output"index");

// mostramos la plantilla.
$template->mostrarPlantilla();


?>

Lo que necesitaria es crear una tabla dinamica con el resultado de la $query2

Espero que me puedan ayudar.. ya que se me complica crear la tabla dinamica, osea me tira un resutaldo solo que es el del ultimo juego agregado a la base de datos...

Desde ya...
Muchas Gracias..!

Última edición por DeCodigos; 05/01/2009 a las 19:59
  #2 (permalink)  
Antiguo 05/01/2009, 18:38
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Tablas Dinamicas PHP - Mysql

Es normal que solo te muestre el ultimo juego porque en cada paso del foreach asignas el registro a las mismas variables.

Código PHP:
foreach ($query2->as $ultimosj)
{
$categoria=($ultimosj->categoria);
$screenshot=($ultimosj->screenshot);
$screenshot=('<IMG SRC='."juegos/screenshot/".$screenshot.'.png'.'>');

Tu sistema de plantillas debe tener una opcion para crear bloques o ciclos, que es lo ideal para mostrar todos tus registros.

Sugerencia: Ya cargaste y leiste las categorias, es mas facil crear un array para despues asignar el nombre de categoria a cada juego:

Código PHP:
$acats = array();
$varmenu="";
foreach (
$query->as $menu)
{
$url=($menu->url);
$varmenu.=('<a href='.$url.'>'.$menu->nombre.'</a>'.' ');
$acats[$menu->id] = $menu->nombre;
}


// Mas abajo en vez del switch:
$categoria"<strong>Categoria:</strong>"." ".$acats[$categoria]; 
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 05/01/2009, 19:03
 
Fecha de Ingreso: noviembre-2008
Mensajes: 130
Antigüedad: 16 años
Puntos: 0
Respuesta: Tablas Dinamicas PHP - Mysql

Muchas gracias por la sugerencia Triby de enserio, mi sistema de plantillas es el siguiente:

http://blog.pecesama.net/clase-php-4...llas-o-themes/

Código PHP:
<?php
class plantillas {

        var 
$plantilla;
        var 
$plantilla_cargada;
        var 
$texto_plantilla;
        
        var 
$antesBloque;
        var 
$bloque;
        var 
$despuesBloque;
        var 
$bloqueFinal="";

        function 
plantillas($plantilla) {               
                
$this->plantilla = ($plantilla == "") ? "default" $plantilla;
        }       

        function 
cargarPlantilla($entrada$salida$plantilla_usar) {          
                
$plantilla_usar "themes/".$this->plantilla."/".$plantilla_usar.".htm";
                
                if (!
file_exists($plantilla_usar)) {
                        die(
"No se encuentra la plantilla :".$plantilla_usar);
                } else {                
                        if(!
$fd fopen($plantilla_usar"r")) {
                                die(
"Error en la plantilla");
                        } else {
                                
$salida_xhtml fread($fdfilesize ($plantilla_usar));
                                
fclose ($fd);
                                
$salida_xhtml stripslashes($salida_xhtml);
                                
$this->texto_plantilla $salida_xhtml;
                                for (
$i 0$i count($entrada); $i++) {
                                        
$salida_xhtml str_replace($entrada[$i], $salida[$i], $salida_xhtml);
                                }
                                
$this->plantilla_cargada $salida_xhtml;
                        } 
                }
        }       
                
        function 
precargarPlantillaConBloque($entrada$salida$plantilla_usar$nombreBloque) {               
                
$plantilla_usar "themes/".$this->plantilla."/".$plantilla_usar.".htm";
                
                if (!
file_exists($plantilla_usar)) {
                        die(
"No se encuentra la plantilla :".$plantilla_usar);
                } else {                
                        if(!
$fd fopen($plantilla_usar"r")) {
                                die(
"Error en la plantilla");
                        } else {
                                
$salida_xhtml fread($fdfilesize ($plantilla_usar));
                                
fclose ($fd);
                                
$salida_xhtml stripslashes($salida_xhtml);
                                
$this->texto_plantilla $salida_xhtml;
                                
                                
$this->cargaAntesBloque($nombreBloque);
                                
$this->cargaDespuesBloque($nombreBloque);
                                
                                
$this->antesBloque $this->procesaBloque($entrada$salida$this->antesBloque);
                                
$this->despuesBloque $this->procesaBloque($entrada$salida$this->despuesBloque);
                        } 
                }
        }       
        
        function 
cargarPlantillaConBloque($entrada$salida$plantilla_usar$nombreBloque) {          
                
$plantilla_usar "themes/".$this->plantilla."/".$plantilla_usar.".htm";
                
                if (!
file_exists($plantilla_usar)) {
                        die(
"No se encuentra la plantilla :".$plantilla_usar);
                } else {                
                        if(!
$fd fopen($plantilla_usar"r")) {
                                die(
"Error en la plantilla");
                        } else {
                                
$salida_xhtml fread($fdfilesize ($plantilla_usar));
                                
fclose ($fd);
                                
$salida_xhtml stripslashes($salida_xhtml);
                                
$this->texto_plantilla $salida_xhtml;
                                
                                
$this->cargaBloque($nombreBloque);
                                
                                
$this->bloqueFinal .= $this->procesaBloque($entrada$salida$this->bloque);
                        } 
                }
        }       
        
        function 
procesaBloque($entrada$salida$bloque) {
                for (
$i 0$i count($entrada); $i++) {
                        
$bloque str_replace($entrada[$i], $salida[$i], $bloque);
                }
                return 
$bloque;
        }
        
        function 
cargaBloque($nombreBloque) {
                
$inicioBloque "[bloque: ".$nombreBloque."]";
                
$finBloque "[/bloque: ".$nombreBloque."]";
                
$ini strpos($this->texto_plantilla,$inicioBloque)+strlen($inicioBloque);
                
$fin strpos($this->texto_plantilla,$finBloque);
                
$this->bloque substr($this->texto_plantilla,$ini,($fin-$ini));
        }
        
        function 
cargaAntesBloque($nombreBloque) {
                
$inicioBloque "[bloque: ".$nombreBloque."]";
                
$ini strpos($this->texto_plantilla,$inicioBloque);
                
$this->antesBloque substr($this->texto_plantilla,0,$ini);
        }
        
        function 
cargaDespuesBloque($nombreBloque) {
                
$finBloque "[/bloque: ".$nombreBloque."]";
                
$fin strpos($this->texto_plantilla,$finBloque);
                
$this->despuesBloque substr($this->texto_plantilla,($fin+strlen($finBloque)),strlen($this->texto_plantilla));
        }
        
        function 
mostrarPlantillaConBloque() {
                echo 
$this->antesBloque.$this->bloqueFinal.$this->despuesBloque;
        }
        
        function 
mostrarPlantilla() {
                echo 
$this->plantilla_cargada;
        }
        
        function 
renderizaEtiqueta($texto=""$etiquetaHtml="p"$claseCss="") {
                echo 
"<".$etiquetaHtml." class=\"".$claseCss."\">".$texto."</".$etiquetaHtml.">";
        }
        
        function 
renderizaTexto($texto="") {
                echo 
$texto;
        }
}
?>
El problema es que probe de todo y no puedo lograr la tabla dinamica, no puedo crear bloques o ciclos, o no estoy viendo la solucion correctamente..

Espero que alguien pueda darme una mano...

Última edición por DeCodigos; 05/01/2009 a las 19:17
  #4 (permalink)  
Antiguo 06/01/2009, 13:21
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Tablas Dinamicas PHP, Mysql

No entiendo muy bien como funciona ese sistema de plantillas, pero podrias crear una etiqueta en tu plantilla que se llame bloque-juegos y en php lo vas llenando:

Código PHP:
// Inicializa la plantilla antes de realizar cualquier accion
$template = new plantillas("index");

// Creas el cuerpo de la tabla (si usas divs seria mejor)
$entrada = array('{categoria}''{screenshot}');
$bloque '<tr><td>{categoria}</td><td>{screenshot}</td></tr>';
$juegos '';
foreach (
$query2->as $ultimosj) {
    
$categoria="<strong>Categoria:</strong> " $acats[$ultimosj->categoria];
    
$screenshot='<IMG SRC="juegos/screenshot/' $ultimosj->screenshot '.png">';
    
$juegos .= $template->procesaBloque($entrada, array($categoria$screenshot), $bloque);
}

// Finalizas el bloque con lo que necesites al principio y al final del mismo:
$bloque_juegos "<table>$juegos</table>";

// Solo incluye en $input   {bloque-juegos} y en $output  $bloque_juegos 
Ya depende de ti el formato HTML que quieras darle a la tabla (de preferencia no uses tablas, mejor divs).
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 06/01/2009, 13:48
 
Fecha de Ingreso: noviembre-2008
Mensajes: 130
Antigüedad: 16 años
Puntos: 0
Respuesta: Tablas Dinamicas PHP, Mysql

Muchas Gracias Triby no te imaginas lo que me ayudastes..!!
Ahora le puedo seguir adelante..!!!

Saludos, y gracias otra vez..jejeje
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:38.