PHP - como poner una imagen en una tabla php

 
Vista:

como poner una imagen en una tabla php

Publicado por luis (4 intervenciones) el 24/09/2013 19:50:41
Hola Gente!!!
Tengo un problemilla que no se hacer, a ver si podeis echarme una mano.
Quiero crear una tabla con php en la que la primera fila sea un nombre que cojo de una consulta a la base de datos de mysql. La segunda fila sea una imagen que está en una carpeta llamada imagenes y que sea un enlace a otra pagina, pero que coja la imagen que se llame igual que el nombre que cojo de la consulta,es decir, las fotos tienen el mismo nombre que tiene el campo "nombre" de la base de datos, para que muestre el nombre y su correspondiente foto. Y quiero que cada fila muestre 3 fotos con su nombre dejando entre cada nombre con su foto una columna vacia, y no sé cómo hacerlo.
Me gustaria que quedase asi:

1
2
3
4
5
-----------------------------------------------------------------------------------------
|         Nombre1      |                 |    Nombre2    |             |    Nombre3    |
|----------------------------------------------------------------------------------------
|         Foto1        |                 |    Foto2      |             |    Foto3      |
 -----------------------------------------------------------------------------------------
Os dejo el codigo php que llevo hecho pero que no está bien,ya que no muestra lo que quiero. Gracias de antemano!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
include ('./conectarabd.php');//Conectamos a la BBDD
$instruccion = "consulta";//Realizamos la consulta
$consulta = mysql_query ($instruccion, $conexion)
or die ("Fallo en la consulta");
$nfilas = mysql_num_rows ($consulta);//Mostramos los resultados de la consulta
      if ($nfilas > 0)
      {
          for ($i=0; $i<$nfilas; $i++)
         {
            $resultado = mysql_fetch_array ($consulta);
            print ("<div align='center'><TABLE class='tabl'>\n");
            print ("<TR>\n");
            print ("<TD class='td'>" . $resultado['nombre'] . "</TD>\n");
            print ("<TD></TD>\n");
            print ("<TD class='td1'><img src='./imagenes/imagen1.jpg'></TD>\n");
            print ("</table></div>");
        }
      }
      else
           echo "<p class='echo'>No hay imagenes disponibles</p>";//En caso de no haber imagenes saldrá este mensaje
 
	mysql_close ($conexion);//Cerramos conexion
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

como poner una imagen en una tabla php

Publicado por xve (6935 intervenciones) el 24/09/2013 20:24:28
Hola Luis, si te he entendido bien, quedaría algo así:
1
2
3
print ("<TD class='td'>".$resultado['nombre']."</TD>\n");
print ("<TD></TD>\n");
print ("<TD class='td1'><img src='/imagenes/".$resultado['nombre'].".jpg'></TD>\n")

Interpreto que la imagen seria con extensión jpg...

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

como poner una imagen en una tabla php

Publicado por luis (4 intervenciones) el 24/09/2013 21:25:18
Muchas gracias xve!! Me ha servido totalmente tu codigo, ya puedo visualizar las imagenes correspondientes que están en otra carpeta, y sí son extension .jpg. Muchisimas gracias!!
Pero me sigue saliendo cada resultado de la consulta en una fila horizontal, será por el array,no? no sé. como puedo ponerlo en vertical, que salga el nombre y debajo la foto correspondiente? y que en la misma fila de la tabla se muestren diferentes nombres o fotos, como he puesto gráficamente en el anterior mensaje.
Muchísimas gracias de antemano
(P.D. Hoy ya no puedo mirar tu respuesta, la miraré mañana por la tarde, lo digo para que no pienses que no te contesto)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

como poner una imagen en una tabla php

Publicado por Mari Carmen (145 intervenciones) el 25/09/2013 01:18:42
Creo que tu problema tiene que ver mas con HTML que con PHP.
El error así a simple vista que veo es que cierras la tabla sin cerrar el tr.
Un pequeño apunte externo a esto, si vas a desarrollar aplicaciones web debes saber bien HTML y los ultimos estandares que hay. Se habla mucho de HTML5 y eso, en los estandares mas recientes las mayusculas en las etiquetas ej <TD> estan prohibidas.
Volviendo al tema que nos concierne tu codigo HTML tabulado para poder ser interpretado mejor por una persona quedara asi:

1
2
3
4
5
6
7
8
9
<div align='center'>
    <table class='tabl'>
        <tr>
            <td class='td'>" . $resultado['nombre'] . "</td>
            <td></td>
            <td class='td1'><img src='./imagenes/" . $resultado['nombre'] . ".jpg'></td>
 
    </table>
</div>

Si te fijas hay un hueco, es donde deberia haber un </tr>. Este tipo de codigos, y las mayusculas provoca que los navegadores entren en un modo de interpretacion del HTML a su bola! Y no suele ser lo que queremos represntar.
Si añades el </tr> y te sigue dando cosas que no deseas, el proximo comentario se mas especifico en lo que quieres.

Por otra parte:
No se si es lo deseado pero creas una tabla por cada imagen que hay guardada.

Segun la representacion ascii que has puesto creo que deberias repasar HTML.

Parece que quieras una sola tabla que contenga los nombres de las imagenes en una linea (tr)
Hacer eso quedaria algo como:
Ej
Imagenes:
Nombre -> Archivo
img1 -> image1.jpg
img2 -> image2.png
imfs -> imfsaa.jpeg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<div align='center'>
    <table class='tabl'>
        <tr>
            <td>img1</td>
            <td></td>
            <td>img2</td>
            <td></td>
            <td>imfs</td>
        </tr>
        <tr>
            <td><img src='./imagenes/image1.jpg'></td>
            <td></td>
            <td><img src='./imagenes/image2.png'></td>
            <td></td>
            <td><img src='./imagenes/imfsaa.jpeg'></td>
        </tr>
    </table>
</div>

Para hacerlo de esta forma necesitarias 2 bucles en cada uno de los <tr>

Con tu codigo PHP y el mismo ejemplo de arriba el codigo HTML resultante queda como:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<div align='center'>
    <table class='tabl'>
        <tr>
            <td class='td'>img1</td>
            <td></td>
            <td class='td1'><img src='./imagenes/image1.jpg'></td>
 
    </table>
</div>
<div align='center'>
    <table class='tabl'>
        <tr>
            <td class='td'>img2</td>
            <td></td>
            <td class='td1'><img src='./imagenes/image2.png'></td>
 
    </table>
</div>
<div align='center'>
    <table class='tabl'>
        <tr>
            <td class='td'>imfs</td>
            <td></td>
            <td class='td1'><img src='./imagenes/ imfsaa.jpeg'></td>
 
    </table>
</div>


Si no quieres que sea todo en linea recta y quieres que salte a la linea de abajo al cabo de un tiempo tendras que poner otro bucle mas en la zona de fuera de los <tr> para que se vayan repitiendo.

Ej
Cada 3 imagenes voy abajo.
-------------------------------------------
| Nombre1 | | Nombre2 | | Nombre3 |
-------------------------------------------
| Foto1 | | Foto2 | | Foto3 |
-------------------------------------------
| Nombre4 | | Nombre5 | | Nombre6 |
-------------------------------------------
| Foto4 | | Foto5 | | Foto6 |
-------------------------------------------

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<div align='center'>
    <table class='tabl'>
 
        <tr>
            <td>Nombre1</td>
            <td></td>
            <td>Nombre2</td>
            <td></td>
            <td>Nombre3</td>
        </tr>
        <tr>
            <td><img src='./imagenes/Foto1.jpg'></td>
            <td></td>
            <td><img src='./imagenes/Foto2.png'></td>
            <td></td>
            <td><img src='./imagenes/Foto3.jpeg'></td>
        </tr>
 
        <tr>
            <td>Nombre4</td>
            <td></td>
            <td>Nombre5</td>
            <td></td>
            <td>Nombre6</td>
        </tr>
        <tr>
            <td><img src='./imagenes/Foto4.jpg'></td>
            <td></td>
            <td><img src='./imagenes/Foto5.png'></td>
            <td></td>
            <td><img src='./imagenes/Foto6.jpeg'></td>
        </tr>
 
    </table>
</div>

En esta si te fijas sera algo mas complejo el programa en PHP que la idea de hacer una tabla por imagen, pero el codigo HTML queda mas aseado.

Hay muchisimas formas distintas de escribir tablas en HTML esta que pongo es solo una.
Espero haberte servido de algo, alemnos para que tengas la mente ocupada!

Y como te dije antes, si quieres que seamos mas exactos en nuestras explicaciones debes dar mas informacion para que podamos hacernos una idea mas cercana a lo que quieres hacer.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

como poner una imagen en una tabla php

Publicado por luis (4 intervenciones) el 25/09/2013 18:43:06
Hola Mari Carmen!! Muchas gracias por tu respuesta, me ha servido mucho tu último código, ya me sale como quiero, en una linea el nombre con su foto correspondiente y en la siguiente linea lo mismo, pero el problema que me sale ahora es que en la misma linea sale el mismo nombre y la misma foto repetida 3 veces y en la siguiente linea también, y lo que quiero es que salgan una tras otra. Te dejo el código que tengo puesto copiado del tuyo, sólo que está en PHP,vale? Verás que al poner "$resultado" pongo entre [ ] sólamente "nombre", y es porque quiero que de la consulta que hago al MYSQL coja los resultados de dicha consulta uno tras otro. A ver si me puedes solucionar el problema. Muchísimas gracias de antemano!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for ($i=0; $i<$nfilas; $i++)
         {
            $resultado = mysql_fetch_array ($consulta);
                   print ("<div align='center'><table class='tabl'>\n");
                   print ("<tr>\n");
                   print ("<td class='tabl'>".$resultado['nombre']."</td>\n");
                   print ("<td></td>\n");
                   print ("<td class='tabl'>".$resultado['nombre']."</td>\n");
	print ("<td></td>\n");
	print ("<td class='tabl'>".$resultado['nombre']."</td>\n");
	print ("</tr>\n");
	print ("<tr>\n");
	print ("<td class='tabl'><img src='./imagenes/".$resultado['nombre'].".jpg'></td>\n");
	print ("<td></td>\n");
	print ("<td class='tabl'><img src='./imagenes/".$resultado['nombre'].".jpg'></td>\n");
	print ("<td></td>\n");
	print ("<td class='tabl'><img src='./imagenes/".$resultado['nombre'].".jpg'></td>\n");
	print ("</tr>\n");
	print ("</table></div>\n");
        }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

como poner una imagen en una tabla php

Publicado por Mari Carmen (145 intervenciones) el 26/09/2013 01:41:11
El problema que veo a simple vista es que no entiendes bien como funcionan los bucles y como se sacan los datos de la base de datos.

En el código que has puesto el resultado seria la repetición de todo el bloque, y eso no es lo que queremos. Ademas cada vez que repite el bucle sacas la misma variable 3 veces.

Debemos separar varios bloques, si quieres hacerlo como en mi ultimo ejemplo entonces necesitas varios bucles.
Se puede hacer de multitud de formas. Una de ellas es ir guardando cada parte en un string. Asi nos ahorramos bucles.

Aun que se puede mejorar mucho mi código quedaría algo como:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
//Numero de fotos por linea.
$n=3;
 
//Matriz multidimensional de nombres
$nombres_fila=array();
$j=-1;
for ($i=0; $i<$nfilas; $i++)
{
    $resultado = mysql_fetch_array ($consulta);
    //Esto % es el operador modulo, que no es mas que el resto de la division de $i/$n, el resultado esta entre 0 y ($n-1)
    if($i%$n==0)
    	$j++;
    $nombres_fila[$j][]=$resultado["nombre"];
 
}
//Estoy cansada para seguir comentando las cosas... Siento no poder ser de mas ayuda, si necesitas explicacion de las
//Cosas que hago a partir de aquí que te lo explique algún miembro del foro o búscalo por tu parte
?>
<div align='center'>
    <table class='tabl'>
<?php
foreach($nombres_fila as $nombres)
{
	$fila_nombres="";
	$fila_fotos="";
	foreach($nombres as $indice => $nombre)
	{
		$fila_nombres.="\t\t\t<td>$nombre</td>\n";
		$fila_fotos.="\t\t\t<td><img src='./imagenes/$nombre.jpg'></td>\n";
 
		if($indice!=($n-1))
		{
			$fila_nombres.="\t\t\t<td></td>\n";
			$fila_fotos.="\t\t\t<td></td>\n";
		}
	}
 
	echo "\t\t<tr>\n$fila_nombres\t\t</tr>\n";
	echo "\t\t<tr>\n$fila_fotos\t\t</tr>\n";
}
?>
    </table>
</div>
Nota: Pongo tabuladores y saltos de linea por que no tengo servidor web, solo puedo ejecutarlo por CLI.

Con esto y 8 fotos te saldrá algo parecido a esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<div align='center'>
    <table class='tabl'>
		<tr>
			<td>nom1</td>
			<td></td>
			<td>nom2</td>
			<td></td>
			<td>nom3</td>
		</tr>
		<tr>
			<td><img src='./imagenes/nom1.jpg'></td>
			<td></td>
			<td><img src='./imagenes/nom2.jpg'></td>
			<td></td>
			<td><img src='./imagenes/nom3.jpg'></td>
		</tr>
		<tr>
			<td>nom4</td>
			<td></td>
			<td>nom5</td>
			<td></td>
			<td>nom6</td>
		</tr>
		<tr>
			<td><img src='./imagenes/nom4.jpg'></td>
			<td></td>
			<td><img src='./imagenes/nom5.jpg'></td>
			<td></td>
			<td><img src='./imagenes/nom6.jpg'></td>
		</tr>
		<tr>
			<td>nom7</td>
			<td></td>
			<td>nom8</td>
			<td></td>
		</tr>
		<tr>
			<td><img src='./imagenes/nom7.jpg'></td>
			<td></td>
			<td><img src='./imagenes/nom8.jpg'></td>
			<td></td>
		</tr>
    </table>
</div>

Debes fijarte que si el ultimo bloque no es igual de grande que $n entonces aparecerá un <td></td> que quizá no debería estar ahí.
A ver si consigues agregar condicionales para poder evitar esa ultima coletilla.

Espero que te sirva aun que sea para aprender.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

como poner una imagen en una tabla php

Publicado por luis (4 intervenciones) el 26/09/2013 20:38:17
Muchisimas gracias Mari Carmen. Tienes razón en que no sé muy bien cómo funcionan los bucles, con tu explicación me queda mas claro. Estoy aún con el código, ya te diré cómo me queda una vez terminado. Si me sale alguna duda más te volveré a preguntar si no te importa, o lo pondré por si alguien me quiere contestar,pero muchísimas gracias de nuevo.
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

como poner una imagen en una tabla php

Publicado por Elier (92 intervenciones) el 25/09/2013 18:00:48
Table Example
1
2
3
4
5
6
7
8
9
10
11
12
13
<table border="1">
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
<td>row 1, cell 3</td>
<td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
<td>row 2, cell 3</td>
</tr>
</table>

En el navegador se vería

row 1, cell 1 | row 1, cell 2 | row 1, cell 3

row 2, cell 1 row 2, cell 2 | row 2, cell 3

El codigo PHP (puede tener errores)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
$columns = 3;
$records = mysql_num_rows ($query);
 
$rows = $records  / $columns;
 
$items = array();
 
echo "<table>";
for ($i = 0; $i < $records; $i++)
{
    $items[i]  =  mysql_fetch_array ($query);
}
 
$i = 0;
for ($r =0 ; $r < $rows; $r++){
  $item = $items[i];
  echo "<tr>";
  for ($c = 0; $c < $columns; $c++){
     echo "<td>".$item['nombre']."</td>";
  }
  echo "</tr>";
  echo "<tr>";
  for ($c = 0; $c < $columns; $c++){
     echo "<td><img src='./imagenes/".$item['nombre'].".jpg'></td>";
  }
  echo "</tr>";
  $i++;
}
echo "</table>";
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar