Foros del Web » Programando para Internet » PHP »

Limitaciones de "Repeat Region"

Estas en el tema de Limitaciones de "Repeat Region" en el foro de PHP en Foros del Web. Hola nuevamente! Esta es la situación: Quiero mostrar tres resultados diferentes de un "Recordset" en tres diferentes regiones <div>: - miniaturas - miniaturas2 - miniaturas3 ...
  #1 (permalink)  
Antiguo 15/03/2010, 17:56
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 1 mes
Puntos: 7
Limitaciones de "Repeat Region"

Hola nuevamente!

Esta es la situación: Quiero mostrar tres resultados diferentes de un "Recordset" en tres diferentes regiones <div>:
- miniaturas
- miniaturas2
- miniaturas3

Cuando pense que habia encontrado una solución, me encuentro con que el comportamiento de servidor "Repeat Region" no se puede aplicar dos veces al mismo "Recorset".

Les muestro el código para que se entienda mejor:

Código PHP:
<?php require_once('Connections/paraNuevaGaleria.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  if (
PHP_VERSION 6) {
    
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

mysql_select_db($database_paraNuevaGaleria$paraNuevaGaleria);
$query_obtenerMiniaturas "SELECT foto_id, nombrearchivo, categoria FROM nueva_galeria";
$obtenerMiniaturas mysql_query($query_obtenerMiniaturas$paraNuevaGaleria) or die(mysql_error());
$row_obtenerMiniaturas mysql_fetch_assoc($obtenerMiniaturas);
$totalRows_obtenerMiniaturas mysql_num_rows($obtenerMiniaturas);

$colname_obtenerDetalles $row_obtenerMiniaturas['foto_id'];
if (isset(
$_GET['foto_id'])) {
  
$colname_obtenerDetalles $_GET['foto_id'];
}
mysql_select_db($database_paraNuevaGaleria$paraNuevaGaleria);
$query_obtenerDetalles sprintf("SELECT * FROM nueva_galeria WHERE foto_id = %s"GetSQLValueString($colname_obtenerDetalles"int"));
$obtenerDetalles mysql_query($query_obtenerDetalles$paraNuevaGaleria) or die(mysql_error());
$row_obtenerDetalles mysql_fetch_assoc($obtenerDetalles);
$totalRows_obtenerDetalles mysql_num_rows($obtenerDetalles);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Galería</title>
<link href="galeria.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="envoltorio">
  <div id="cabecera">
    <div align="center"><img src="imagenes/misFondos.jpg" alt="Mis Fondos" /></div>
  </div>
 
   <div id="miniaturas">
   <?php do { ?>
      <a href="galeria.php?foto_id=<?php echo $row_obtenerMiniaturas['foto_id']; ?>">
        <?php 
      
if ($row_obtenerMiniaturas['categoria'] == 'NIC'){
      echo 
$row_obtenerMiniaturas['nombrearchivo'];
      }
      
?>
      </a>
      <?php } while ($row_obtenerMiniaturas mysql_fetch_assoc($obtenerMiniaturas)); ?>
   </div>
  
  <div id="miniaturas2"> 
    <?php do { ?>
      <a href="galeria.php?foto_id=<?php echo $row_obtenerMiniaturas['foto_id']; ?>">
        <?php 
      
if ($row_obtenerMiniaturas['categoria'] == 'PER'){
      echo 
$row_obtenerMiniaturas['nombrearchivo'];
      }
      
?>
      </a>
      <?php } while ($row_obtenerMiniaturas mysql_fetch_assoc($obtenerMiniaturas)); ?>
  </div>
  
  <div id="miniaturas3"> 
    <?php do { ?>
      <a href="galeria.php?foto_id=<?php echo $row_obtenerMiniaturas['foto_id']; ?>">
        <?php 
      
if ($row_obtenerMiniaturas['categoria'] == 'XEF'){
      echo 
$row_obtenerMiniaturas['nombrearchivo'];
      }
      
?>
      </a>
      <?php } while ($row_obtenerMiniaturas mysql_fetch_assoc($obtenerMiniaturas)); ?>
  </div>
  
  <div id="imagPrincipal">
    <p><img src="imagenes/galeria/<?php echo $row_obtenerDetalles['nombrearchivo']; ?>" alt="<?php echo $row_obtenerDetalles['titulo']; ?>" width="<?php echo $row_obtenerDetalles['ancho']; ?>" height="<?php echo $row_obtenerDetalles['alto']; ?>" /><br />
    <?php echo $row_obtenerDetalles['titulo']; ?></span> </p>
  </div>
  
  <div id="descripcion"><?php echo $row_obtenerDetalles['descripcion']; ?></div>
</div>
</body>
</html>
<?php
mysql_free_result
($obtenerMiniaturas);

mysql_free_result($obtenerDetalles);
?>
El problema es que ya me demore un montón para llegar a esto y ahora no tengo la suficiente capacidad en PHP como ver alguna forma de hacer funcionar lo que hice.

Me gustaria saber de alguien con mas conocimiento, si da para hacer funcionar lo que tengo aca, o en caso contrario alguna sugestión de una solucion alternativa .

Desde ya, muchas gracias.
  #2 (permalink)  
Antiguo 15/03/2010, 18:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Limitaciones de "Repeat Region"

error, las limitaciones que encuentras se deben a que estas utilizando Dreamweaver....

lamentablemente no has podido ver mas allá de lo que dicho software te provee, y se nota por la falta de criterio al resolver tu problema... vamos, el foro es de PHP ¡¡no de Dreamweaver!!!

en si, no puedes recorrer un mismo resultado varias veces... lo mas fácil sería volver a hacer la consulta, o bien, almacenar los datos en variables y ciclarlos cuantas veces necesites... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 15/03/2010, 22:27
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Limitaciones de "Repeat Region"

Añado, si deseas volver a usar una misma consulta debes retornar el puntero al principio para que puedas leer las lineas sin necesidad de volver a crear la consulta. Para ello debes usar mysql_data_seek, te sugiero que mires las funciones que trabajan con mysql para que puedas desenvolverte en la aplicación que estás creando.

Aunque me gusta la alternativa de ingresar los datos en un array y usar ese array para tomar los datos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 17/03/2010, 07:40
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 1 mes
Puntos: 7
Respuesta: Limitaciones de "Repeat Region"

Bueno, por lo que veo de las dos respuesta la opción mas práctica seria almacenar los datos de la consulta en un array para despues recuperarlos cuantas veces quiera.

Primero, gracias Abimaelrc, yo tenia la errada idea de que la variable$row_obtenerMiniaturas = mysql_fetch_assoc($obtenerMiniaturas); era un array que contenia todos los datos de la consulta, pero en realidad viendo la referencia a funciones de MySQL que me pasaste me doy cuenta que no es asi. Y me doy cuenta que tengo mucho para aprender.

Por último, ya busque dentro de este foro y en la web una forma de guardar los datos de la consulta en un array....pero no encontre una respuesta satisfactoria. Si no es mucha molestia, ustedes podrian decirme en mi caso cual es la mejor forma en que puedo llevar a cabo esta tarea?.

Gracias
  #5 (permalink)  
Antiguo 17/03/2010, 08:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Limitaciones de "Repeat Region"

Como ya te comento abimaelrc, puedes usar mysql_data_seek antes de tu ciclo para volver a imprimir los resultados, aunque por temas de rendimiento es mejor que lo guardes en un array y ciclar ese array.

Guardarlos es fácil puedes usar algo así:
Código PHP:
Ver original
  1. $datos = array();
  2. while($row = mysql_fetch_array($resultado)) {
  3.        $datos[] = $row;
  4. }

Ya en $datos tienes todas las filas y las puedes ciclar usando un foreach, for, o while.

Saludos.
  #6 (permalink)  
Antiguo 17/03/2010, 08:30
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 1 mes
Puntos: 7
Respuesta: Limitaciones de "Repeat Region"

Gracias GatorV!

Eso es justamente lo que necesitaba. Problema resuelto!

Aunque comencé con una pregunta y termine con otra, espero que este post le sea util a alguien mas, gracias a todos.

Etiquetas: Ninguno
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 00:04.