[ Foro de PHP ]

ayuda en base de datos y php

26-Jul-2013 17:32
Invitado (ruben ruiz)
1 Respuestas

Cordial saludo profesor.
Agradeciendo de antemano tu ayuda gentil y brillante.

queria pedir tu ayuda en la siguiente cuestion:
tengo en una tabla de una base de datos en phpmyadmin que contiene los siguientes campos por registro
id campo1   campo2  campo3 campo3  imag1 imag2 imag3 imag4 imag5
..

se que lo suyo es tener los campos de las imagenes en una tabla aparte pero no es el caso me lo piden asi tal cual lo expongo.

yo quiero mostrar esas imagenes,en ello no tengo problema por que si que lo hago , solo que queria preguntarte si puedo accesar a solo los campos de imagenes utlizando un bucle para ahorrarme por cada images un if, me explico ejor con mi codigo que me funciona ok:
pagina1.php :


<?php
...
 if(isset($GET_["curso"])
 {
   $curso_selec=$_GET["curso"];
   $curso_reg=obtener_curso_por_id($curso_selec);
 }
...
 bien mi funcion obtener_curso_por_id es:

function obtener_curso_por_id($curso_id)
 {
    $consulta=SELECT * FROM cursos
             WHERE id=" . $curso_id ;
    $resultado=mysql_query($consulta);

    if($curso=mysql_fetch_array($resultado))
    {
    return $curso;// con ello ya tngo el id de cada curso
    }
}



ahora con ello ya pudo acceder a los dmas campos de la tabla y en especial en mi caso a las imagenes.

ahora es donde viene mi pregunta:
quiero visualizar las imagenes en una parte de la pagina que tengo con un <div>:
pagina1.php:


...
<div class="bloque_derecha">
 <span> Estas son las imagenes </span>
 <?php
  if(isset($curso_reg["imagen1]) && !empty($curso_reg["imagen1"]))
   {
     echo ... mostraria la imagen1 atraves de una tiqueta <img>
   }
  if(isset($curso_reg["imagen2]) && !empty($curso_reg["imagen2"]))
   {
     echo ... mostraria la imagen atraves de una etiqueta <img>
   }
 ... 


y asi para las restantes imagenes de es registro en cuestion

como puedo hacer lo mismo qu como te digo me va ok, para recorrer las 5 imagenes para cada registro e ir mostrando las imagenes,utilizando un bucle for o while, pues si no me tocaria repetir como ves por cada imagen del registro un nuevo if como lo mostre en el codigo, la idea es ser mas eficiente y poderme ahorrar esos if, agradezco toda la ayuda qu puedas brindarme, se que con tu ayuda aprendere lo que deseo. mil gracias profesor


28-Jul-2013 11:53
Nacho Cabanes (+84)

Es que... lo estás haciendo de forma poco eficiente.

Si tienes en cada registro varios campos llamados img1, img2, img3 y así sucesivamente, tendrás que acceder de forma "artesanal", como lo estás haciendo.

En PHP eso no es cierto del todo, porque podrías crear una variable llamada "img" seguido de un número, así que sería "ligeramente menos trabajoso":


for ($i=1; $i<=5; $i++)
  $nombreImagen = $curso_reg["imagen" . $i];


Pero, en cualquier caso, esa no es la buena forma de hacerlo:

Si tienes 5 campos llamados img1 a img5, estás desperdiciando espacio en caso de que sólo necesites una imagen, y el sistema no sirve en caso de que necesites guardar 6 (o 50) imágenes para un registro.

La forma elegante de hacerlo es con una "relación uno a muchos": los registros básicos están en una tabla de la base de datos, y la lista de imágenes está en otra tabla distinta. Busca algún texto sobre diseño de bases de datos antes de hacer aplicaciones en PHP que usen varias tablas, o tendrás que "deshacer" muchas cosas cuando la aplicación crezca.

Aquí tienes uno que quizá te sirva:

http://www.nachocabanes.com/ibd/






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)