Foros del Web » Programando para Internet » PHP »

PHP OO Mostrar resultados de consulta a la vez que imagenes

Estas en el tema de Mostrar resultados de consulta a la vez que imagenes en el foro de PHP en Foros del Web. Hola, tengo el siguiente script: Cita: <!DOCTYPE html> <html> <head> <meta name="author" content="GONZALO BUSTAMANTE Y ANGEL CARRO"> <meta charset="UTF-8" <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" ...
  #1 (permalink)  
Antiguo 29/05/2016, 12:35
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Mostrar resultados de consulta a la vez que imagenes

Hola, tengo el siguiente script:
Cita:
<!DOCTYPE html>
<html>
<head>
<meta name="author" content="GONZALO BUSTAMANTE Y ANGEL CARRO">
<meta charset="UTF-8"
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="shortcut icon" href="../../favicon.ico">
<title>Rioja Carpinteria integral</title>
<link rel="stylesheet" type="text/css" href="../../css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="../../css/estilos.css">
<link rel="stylesheet" href="css/galeria-dinamacia-2.css" type="text/css" media="screen" />
<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />
<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="js/lightbox.js"></script>
<script type="text/javascript" src="js/galeria-dinamacia-2.js"></script>
</head>
<body>
<div class="container">
<div class="col-md-6 col-md-offset-4">
<img src="../../img/carpinteriariojana.png">
</div>
</div><!-- container -->
<div class="container">
<div class="row">
<div class="col-md-1 col-md-offset-11">
</div>
<div class="col-md-8 col-md-offset-2">
<ul class="nav nav-pills menu">
<li role="presentation"><a href="../../index.html">Empresa</a></li>
<li role="presentation" class="active"><a href="../cocinas/cocinas.php">Trabajos</a></li>
<li role="presentation"><a href="../../contacto.html">Contacto</a></li>
<a href="#"><img src="../../img/facebook.png" class="pull-right"></a>
</ul>
</div><!-- col-md-6--> <br>
</div>
</div><!-- container-->
<br>
<div class="container">
<div class="row" id="contenedor">
<div class="col-md-3" id="menu">
<ul class="nav nav-pills nav-stacked menu">
<li role="presentation"><a href="../cocinas/cocinas.php">Cocinas</a></li>
<li role="presentation"><a href="../salones-auxiliares/salones.php">Salones/Auxiliares</a></li>
<li role="presentation" class="active"><a href="../armarios/armarios.php">Armarios</a></li>
<li role="presentation"><a href="../estudio/estudio.php">Habitaciones</a></li>
<li role="presentation"><a href="../banyos/banyos.php">Baños</a></li>
<li role="presentation"><a href="../locales-comercios/locales.php">Locales</a></li>
</ul>
</div><!-- # menu -->
<div class="col-md-8" id="catalogo">
<div class="row" id="primerafila">
<?php
require('../../config.php');
// incluir la clase
include_once 'lib/classGaleria.php';
// variables donde indicamos los path
$elpath1 = 'img/galeria';
// creamos el objeto
$imagenes = new Galeria($elpath1);
foreach ($imagenes->getImagenes() as $archivo)
{
$consulta="SELECT descripcion FROM subidas WHERE imagen='".$archivo."'";
$descripcion=mysql_query($consulta)or die('Fallo en la consulta de la descricpión');
//$resultado=mysql_fetch_array($descripcion);
while ($fila = mysql_fetch_array($descripcion))
{
echo $fila["descripcion"];
}
?>
<div class="col-md-5"><!-- IMAGEN -->
<div class="image">
<a href="<?php echo $archivo; ?>" rel="lightbox"><img src="<?php echo $archivo; ?>" alt="Imagen" width="100" /></a>
<p><?php echo $descripcion; ?></p>
</div> <!-- fin image -->
</div>
<?php
}
?>
</div><!-- #catalogo -->
</div><!-- #contenedor -->
</div><!-- /.container-->
<div class="container">
<footer class="container-fluid col-md-8 col-md-offset-2">
<script>
date=new Date();
anyo=date.getFullYear();
document.write("&copy Copyright "+anyo);
</script>
<div class="pull-right">
<FONT SIZE=1><a class="" style="color:white"href="../../login.php">Administración</a></FONT>
</div>
</footer>
</div>
</body>
</html>
Me gustaría mostrar cada imagen con su respectivo comentario justamente debajo de ella.
En principio la las imágenes deberían de aparecer en filas de dos columnas.
Si se necesita que suba mas archivos avisadme.
Gracias por vuestra atención y ayuda.
Un saludo, Gonzalo.
  #2 (permalink)  
Antiguo 29/05/2016, 12:57
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 10 meses
Puntos: 39
Respuesta: Mostrar resultados de consulta a la vez que imagenes

A ver que nos enteremos ¿Cual es tu problema? ¿Que no se ven los comentarios o la maquetación? Si es la maquetación, es decir que no se te ven las imágenes en dos columnas con los comentarios debajo, te tienes que ir al foro de CSS y por supuesto mostrar las clases CSS que tienes dadas.

Si tu problema erradica en el PHP, al menos pasa las clases PHP que estás utilizando porque no se entiende nada.

Yo te aconsejaría que fueras más limpio trabajando porque esa mezcla de código HTML y PHP te impedirá ver las cosas con más claridad.
__________________
Diseño Web - Arisman Web
  #3 (permalink)  
Antiguo 31/05/2016, 11:41
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Mostrar resultados de consulta a la vez que imagenes

Mi problema no consiste en que no se vean las imagenes o los comentarios. Mi problema está en que los estoy llamando todos a la vez y lo que yo necesito es que se muestre el comentario justamante debajo de la imagen correspondiente.
Puede que parte del problema este en el CSS, pero no del todo, puesto que pienso que todos los comentarios se estrán mostrando juntos y luego las imagenes y no a la vez que las imagenes.
Respecto a lo de mezclar el codigo HTML y PHP siempre he querido adaptar alguna metodología para tener las cosas más claras, pero no soy muy amigo de los frameworks.
Ahora incluyo el archivo de las clases PHP:
Cita:
<?php
class Galeria{
// Propiedades de la clase
private $array_imagenes = array();
private $path = array();

// constructor
public function __construct(){
if (func_get_args()){
$this->path = func_get_args();
}
$this->addimagen();
}

// completar $array_imagenes con las imágenes válidas
private function addimagen() {
for ($i = 0; $i < sizeof($this->path); $i++) {
$mydir = opendir($this->path[$i]);
while ($archivo = readdir($mydir)){
if ($this->comprobarExtension($archivo)) {
$this->array_imagenes[] = $this->path[$i].'/'.$archivo;
}
}
}
}

// comprueba que coincidan las extensiones
private function comprobarExtension($archivo){
// extensiones válidas
$arr_ext = array("jpg","png","gif");
$ext = substr($archivo,-3);
if (in_array($ext,$arr_ext)) {
return true;
}
return false;
}

// obtener el array con las imagenes
public function getImagenes(){
return $this->array_imagenes;
}

}
?>
Gracias por vuestra atención y ayuda.
Un saludo, Gonzalo.
  #4 (permalink)  
Antiguo 31/05/2016, 12:34
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 10 meses
Puntos: 39
Respuesta: Mostrar resultados de consulta a la vez que imagenes

A ver, así como he podido te he intentado echar una mano, a ver si te funciona.

He encontrado varios fallos por ahí, o al menos por lo que he podido deducir. Uno tonto es que tenías un DIV sin cerrar.

Pero por el que no se te mostraban las imágenes era porque estabas poniendo la variable $descripción dentro del <p> donde debía ir la descripción y en el while de fetch_array hacías un echo innecesario con la descripción, además he deducido, no sé si correctamente que cada imagen tiene una sola descripción, por lo que no te es necesario hacer el bucle.

Te he corregido un poco el código a ver si he acertado y te lo he reorganizado un poco a como trabajo yo. Esto no es una norma, yo me entiendo mejor así, pero es algo muy subjetivo. Prueba a ver si este código te vale y si te va bien, observa las diferencias con el tuyo original para ver donde fallabas.


Código PHP:
Ver original
  1. <?php
  2.  
  3. /* INCLUIMOS LOS ARCHIVOS */
  4. require('../../config.php');
  5. include_once 'lib/classGaleria.php';
  6.  
  7. /* CREAMOS OBJETO GALERÍA */
  8. $OBJ_IMGS = new Galeria('img/galeria');
  9. $imagenes = $OBJ_IMGS->getImagenes();
  10.  
  11. /* RECORREMOS POR TODAS LAS IMÁGENES */
  12. $DIV_IMGS = '';
  13. foreach ($imagenes as $imagen){
  14.     /* PREGUNTAMOS LA DESCRIPCION */
  15.     $query = mysql_query("SELECT descripcion FROM subidas WHERE imagen = '".$imagen."'");
  16.     $descripcion =  mysql_fetch_array($query);
  17.    
  18.     /* DIVISIÓN DE LAS IMÁGENES */
  19.     $DIV_IMGS .= '
  20.     <div class="col-md-5">
  21.         <div class="image">
  22.             <a href="'.$imagen.'" rel="lightbox"><img src="'.$imagen.'" alt="Imagen - '.$descripcion['descripcion'].'" width="100" /></a>
  23.             <p>'.$descripcion['descripcion'].'</p>
  24.         </div>
  25.     </div>
  26.     ';
  27. }
  28. ?>
  29.  
  30. <!DOCTYPE html>
  31. <html>
  32. <head>
  33. <meta name="author" content="GONZALO BUSTAMANTE Y ANGEL CARRO">
  34. <meta charset="UTF-8"
  35. <meta name="viewport" content="width=device-width, initial-scale=1">
  36. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  37. <link rel="shortcut icon" href="../../favicon.ico">
  38. <title>Rioja Carpinteria integral</title>
  39. <link rel="stylesheet" type="text/css" href="../../css/bootstrap.css">
  40. <link rel="stylesheet" type="text/css" href="../../css/estilos.css">
  41. <link rel="stylesheet" href="css/galeria-dinamacia-2.css" type="text/css" media="screen" />
  42. <link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />
  43. <script type="text/javascript" src="js/prototype.js"></script>
  44. <script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>
  45. <script type="text/javascript" src="js/lightbox.js"></script>
  46. <script type="text/javascript" src="js/galeria-dinamacia-2.js"></script>
  47. </head>
  48. <body>
  49. <div class="container">
  50.     <div class="col-md-6 col-md-offset-4">
  51.         <img src="http://www.forosdelweb.com/img/carpinteriariojana.png">
  52.     </div>
  53. </div><!-- container -->
  54. <div class="container">
  55.     <div class="row">
  56.         <div class="col-md-1 col-md-offset-11"></div>
  57.         <div class="col-md-8 col-md-offset-2">
  58.             <ul class="nav nav-pills menu">
  59.                 <li role="presentation"><a href="http://www.forosdelweb.com/index.html">Empresa</a></li>
  60.                 <li role="presentation" class="active"><a href="http://www.forosdelweb.com/f18/cocinas/cocinas.php">Trabajos</a></li>
  61.                 <li role="presentation"><a href="http://www.forosdelweb.com/contacto.html">Contacto</a></li>
  62.                 <a href="#"><img src="http://www.forosdelweb.com/img/facebook.png" class="pull-right"></a>
  63.             </ul>
  64.         </div><!-- col-md-6--> <br>
  65.     </div>
  66. </div><!-- container-->
  67. <br>
  68. <div class="container">
  69.     <div class="row" id="contenedor">
  70.         <div class="col-md-3" id="menu">
  71.             <ul class="nav nav-pills nav-stacked menu">
  72.                 <li role="presentation"><a href="http://www.forosdelweb.com/f18/cocinas/cocinas.php">Cocinas</a></li>
  73.                 <li role="presentation"><a href="http://www.forosdelweb.com/f18/salones-auxiliares/salones.php">Salones/Auxiliares</a></li>
  74.                 <li role="presentation" class="active"><a href="http://www.forosdelweb.com/f18/armarios/armarios.php">Armarios</a></li>
  75.                 <li role="presentation"><a href="http://www.forosdelweb.com/f18/estudio/estudio.php">Habitaciones</a></li>
  76.                 <li role="presentation"><a href="http://www.forosdelweb.com/f18/banyos/banyos.php">Baños</a></li>
  77.                 <li role="presentation"><a href="http://www.forosdelweb.com/f18/locales-comercios/locales.php">Locales</a></li>
  78.             </ul>
  79.         </div><!-- # menu -->
  80.         <div class="col-md-8" id="catalogo">
  81.             <div class="row" id="primerafila">
  82.                 <?php echo $DIV_IMGS; ?>
  83.             </div><!-- #catalogo -->
  84.         </div><!-- #contenedor -->
  85.     </div><!-- /.container-->
  86. </div>
  87. <div class="container">
  88.     <footer class="container-fluid col-md-8 col-md-offset-2">
  89.         <?php echo "&copy Copyright ".date("Y"); ?>
  90.         <div class="pull-right">
  91.             <FONT SIZE=1><a class="" style="color:white"href="http://www.forosdelweb.com/login.php">Administración</a></FONT>
  92.         </div>
  93.     </footer>
  94. </div>
  95. </body>
  96. </html>

Con respescto a lo de separar el código PHP del HTML me refería a lo que he hecho yo, no a usar ningún framework.
__________________
Diseño Web - Arisman Web
  #5 (permalink)  
Antiguo 31/05/2016, 12:44
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 10 meses
Puntos: 39
Respuesta: Mostrar resultados de consulta a la vez que imagenes

Me he dado cuenta que no sé por qué, el editor de foros del web ha puesto http://www.forosdelweb.com en todos los enlaces que tenias como ../, es cuestión de cambiarlo otra vez.

Un saludo.
__________________
Diseño Web - Arisman Web

Etiquetas: filas, foreach, galeria, imagenes
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 17:21.