Ver Mensaje Individual
  #4 (permalink)  
Antiguo 02/02/2007, 11:06
jhawslow
 
Fecha de Ingreso: septiembre-2003
Mensajes: 47
Antigüedad: 20 años, 8 meses
Puntos: 0
Re: Mostrar resultados Mysql

Hola qué tal,

bueno he estado mirando esto y no cuadro por ningún lado. Seguramente me expliqué mal, y dí pocos detalles sobre el tema. Agradezco a DeeR y a gerson por sus comentarios. Gerson pues claro que me gustaría mostrar las filas que haga falta; mejor dicho las que contenga la base de datos. Y a Deer me parece correcta su función aunque imagínate que alguna de mis categorías tuviese 126 registros que mostrar; me volvería loco con los $array.

Voy a mostrar los detalles de todo esto más o menos -alguna cosa me habré dejado en copiar y pegar o escribir- o quizá alguna $variable haya cambiado de nombre debido a las modificaciones que he hecho.

Empezamos


Todo esto cuenta con tres secuencias de comandos de catálogo: la página principal, la página de categorías y la página de detalles de películas.
Al acceder a la página principal se enumeran todas las categorías de la base de datos.

Código PHP:
<?
  
include ('funciones.php');

  
do_html_header("Bienvenido a mis Películas");

  echo 
"<p>Elije una categoría:</p>";

  
// recuperar categorías de la base de datos
  
$cat_array get_categories();

  
// mostrar como enlaces a las páginas de las categorías
  
display_categories($cat_array);

  
do_html_footer();
?>
La función get_categories() devuelve una matriz de las categorías del sistema que, tras ello, se pasa a display_categories().

Código PHP:
function get_categories()
{
   
// Petición a la base de datos de una lista de categorías
   
$conn db_connect();
   
$query "select catid, catname
             from categories"
;
   
$result = @mysql_query($query);
   if (!
$result)
     return 
false;
   
$num_cats = @mysql_num_rows($result);
   if (
$num_cats ==0)
      return 
false;
   
$result db_result_to_array($result);
   return 
$result;

Como se puede comprobar, esta función se conecta a la base de datos y recupera una lista de todos los Id. y nombres de categoría. Hemos escrito y utilizado una función denominada db_result_to_array()La función adopta un identificador de resultados MySQL y devuelve una matriz de errores indexada numéricamente en la que cada fila es una matriz asociativa.

Código PHP:
function db_result_to_array($result)
{
   
$res_array = array();

   for (
$count=0$row = @mysql_fetch_array($result); $count++)
     
$res_array[$count] = $row;

   return 
$res_array;

En nuestro caso, devolvemos esta matriz de nuevo a index.php donde la pasaremos a la función display_categories()
Esta función muestra cada categoría en forma de enlace a una página que contiene las peliculas de dicha categoría.

Código PHP:
function display_categories($cat_array)
{
  if (!
is_array($cat_array))
  {
     echo 
"No hay categorías actualmente disponibles<br>";
     return;
  }
  echo 
"<ul>";
  foreach (
$cat_array as $row)
  {
    
$url "veure_categoria.php?catid=".($row["catid"]);
    
$title $row["catname"];
    echo 
"<li>";
    
do_html_url($url$title);
  }
  echo 
"</ul>";
  echo 
"<hr>";

Esta función convierte cada una de las categorías de la base de datos en enlaces. Todos los enlaces llevan a la siguiente secuencia de comandos, veure_categoria.php pero cada uno tiene un parámetro distinto, el Id de la categoría o catid (se trata de un número exclusivo generado por MySQL y que utilizamos para identificar la categoría).
Este parámetro a la siguiente secuencia de comandos determinará en qué categoría nos encontramos.

El proceso para enumerar películas de una categoría es muy similar. La secuencia de comandos encargada de ello es veure_categoria.php.


Código PHP:
 <?php
  
include ('funciones.php');
  
$catid $_GET['catid'];
  
$name get_category_name($catid);
 
  
do_html_header($name);

  
// obtener información de la película de la base de datos
  
$book_array get_books($catid);

  
display_books($book_array);
   
do_html_footer();
?>
Esta secuencia tiene una estructura similar a la de la página de índice, a excepción de que recupera películas en lugar de categorías. Convertimos el Id. de categoría que hemos obtenido en un nombre de categoría por medio de la función get_category_name().

Código PHP:
function get_category_name($catid)
{
   
// consulta la bd para obtener el nombre de un Id. de categoría
   
$conn db_connect();
   
$query "select catname
             from categories 
             where catid = $catid"

   
$result = @$conn->query($query);
   if (!
$result)
     return 
false;
   
$num_cats = @$result->num_rows;
   if (
$num_cats ==0)
      return 
false;  
   
$row $result->fetch_object();
   return 
$row->catname

Una vez recuperado el nombre de la categoría, podemos representar un encabezado HTML y proceder a recuperar y enumerar las películas de la base de datos que se corresponden con la categoría seleccionada.

Código PHP:
$pelicules_array get_pelicules($catid);
veure_pelicules($pelicules_array); 
Las funciones get_pelicules() y veure_pelicules() son muy similares a las funciones get_categories() y veure_categories() la única diferencia es que estamos recuperando información de la tabla de películas en lugar de la de categorías. La función veure_pelicules() proporciona un enlace a todas las películas de una categoría por medio de la secuencia de comandos veure_pelicules.php. De nuevo, a cada enlace se le añade un parámetro como sufijo. En esta ocasión es la ref (referencia) de la película en cuestión.

Código PHP:
<?php
  
include ('funciones.php');

  
$ref $_GET['ref'];

  
// obtén esta película de la base de datos
  
$pelicules get_pelicules_detalls($ref);
  
do_html_header($pelicules['titulo']);
  
veure_pelicules_detalls($pelicules);

  
// define un URL para el “botón de continuación”
  
$target 'index.php';
  if(
$pelicules['catid'])
  {
    
$target 'veure_categories.php?catid='.$pelicules['catid'];
  }
  
  
do_html_footer();
?>
Esto realiza el mismo tipo de acciones de antes. Utilizamos

Código PHP:
$pelicules get_pelicules_detalls($ref); 
Para obtener de la base de datos la información de la película
Y

Código PHP:
veure_pelicules_detalls($pelicules); 
para representar los datos en HTML. Mencionar que veure_pelicules_detalls() busca un archivo de imagen para la pelicula como imatges/$ref.jpg. Si no existe, no muestra ninguna imagen. El resto de la secuencia configura la navegación.

Código PHP:
function veure_pelicules_detalls($pelicules)
{
  
// todos los detalles de la pelicula
  
if (is_array($pelicules))
  {
    echo 
'<table><tr>'
    
//Imagen 
    
if (@file_exists('imatges/'.($pelicules['ref']).'.jpg'))
    {
      
$size GetImageSize('imatges/'.$pelicules['ref'].'.jpg');
      if(
$size[0]>&& $size[1]>0)
        echo 
'<td><img src=\'imatges/'.$pelicules['ref'].'.jpg\' border=0 '.$size[3].'></td>';
    }
    echo 
'<td><ul>';
    echo 
'<li><b> Director:</b> ';
    echo 
$pelicula['director'];
    echo 
'</li><li><b> REF:</b> ';
    echo 
$pelicula['ref'];
    echo 
'</li><li><b>Descripcion:</b> ';
    echo 
$pelicula['descripcion'];
    echo 
'</li></ul></td></tr></table>'
  }
  else
    echo 
'No hay detalles de la película en estos momentos.';
  echo 
'<hr />';

AQUÍ FORMULARIOS Y DEMÁS

Código PHP:
function veure_categoria_formulari($cat_array = "")
// Esto muestra el formulario de categoría.(Ejem: Terror, Erótico, Humor)
// Este formulario puede ser usado para insertar o editar categorías.
// Para insertar, no pasar ningún parámetro. Esto configurará $editar
// como falso, y el formulario irá a insertar_categoria.php.
// Para actualizar, pasa un array conteniendo una categoría.  El
// formulario contendrá los viejos datos y  apuntará a actualitzar_categoria.php.
// También añadirá un botón "Borrar categoría" .

{

  // si se pasa una categoría existente, proceder en "modo edición"
  $editar = is_array($cat_array);

  // la mayoría del formulario esta en HTML plano con algún
  // trozo opcional de PHP por todo.

?>
  <form method=post
      action="<?=$editar?"editar_categoria.php":"insertar_categoria.php";?>">
  <table border=0>
  <tr>
    <td>Nom Categoría:</td>
    <td><input type=text name=catname size=40 maxlength=40
          value="<?=$editar?$categoria["catname"]:""?>"></td>
   </tr>
  <tr>
    <td <? if (!$editar) echo "colspan=2"?> align=center>
      <? if ($editar)
         echo 
"<input type=hidden name=catid
                value=\""
.$categoria["catid"]."\">";
      
?>
      <input type=submit
       value="<?=$editar?"Actualizar":"Añadir"?> Categoría"></form>
     </td>
     <? if ($editar)
       
// permitir borrar categorías existentes
       
{
          echo 
"<td>";
          echo 
"<form method=post action=\"borrar_categoria.php\">";
          echo 
"<input type=hidden name=catid value=\"".$categoria[catid]."\">";
          echo 
"<input type=submit value=\"Borrar Categoría\">";
          echo 
"</form></td>";
       }
     
?>
  </tr>
  </table>
<?
}
CONTINÚA