Foros del Web » Programando para Internet » PHP »

Mostrar elementos a partir de la base de datos

Estas en el tema de Mostrar elementos a partir de la base de datos en el foro de PHP en Foros del Web. Hola amigos que tal. Estoy programando un proyecto en php y mysql, en el cual estoy atascado en una parte. Lo que pasa es que ...
  #1 (permalink)  
Antiguo 05/05/2011, 13:25
 
Fecha de Ingreso: mayo-2011
Mensajes: 105
Antigüedad: 12 años, 11 meses
Puntos: 3
Pregunta Mostrar elementos a partir de la base de datos

Hola amigos que tal. Estoy programando un proyecto en php y mysql, en el cual estoy atascado en una parte.

Lo que pasa es que mi pagina web debe listar una serie de "eventos sociales" y despues permitir ver cada uno de los eventos en una zona especifica de la página.

Ya pude listar mis eventos con el siguiente metodo:

Código PHP:
function listareventossociales($conn)
                                    {
                                     
$sqllistar="select nombre,fecha,idevento from tbevento where idarea = '1' and idtipo = '1' and idestado = '1'";
                                     
$registro=mysql_query($sqllistar,$conn);
                                     
                                     
                                      echo 
"<br>";
                                      echo 
"<table border=0 width = 100% align = center>";
                                      echo 
"<tr>";
                                      echo 
"<td colspan=3 align=left bgcolor= #F8E0E0> <b><font face = Arial, Helvetica, sans-serif  color = #cc0000 size = 2><b>EVENTOS SOCIALES</b></font>";
                                      echo 
"</td>";
                                      echo 
"</tr>";
                                      echo 
"<br>";
                                       for(
$i=0;$i<=$fila=mysql_fetch_row($registro);$i++){
                                       echo 
"<tr>";
                                       echo 
"<td width = 5 height = 5> <img src = Imagenes/triangulo.gif ></td>";
                                       echo 
"<td><a href= plantillaevento.php?codigo = ".$fila[2]." >".$fila[0]."</a></td>";
                                       echo 
"<td>".$fila[1]."</td>";
                                       echo 
"<td>".$fila[2]."</td>";
                                        echo 
"</tr>";
                                        }
                                      echo 
"</table>";

                                      
$cerrar;
                                    } 
esto me genera visualmente algo asi:

http://www.flickr.com/photos/53213147@N07/5690722627/

lo que quiero hacer es que cuando se le de clic a un enlace especifico de la lista se pueda mostar especificamente ese evento en una pagina o zona html - php. Yo ya tengo el codigo que construye el evento, el cual es una funcion en php, pero esa funcion recibe el id del evento...

lo que no se es como capturar ese id al dar clic en el enlace y que dicho id se lo pase como parametro a la funcion que construye mi evento especifico!!!

serian de mucha ayuda.... gracias

Última edición por deywibkiss; 05/05/2011 a las 13:26 Razón: la imagen no se mostró desde el url
  #2 (permalink)  
Antiguo 05/05/2011, 13:36
Avatar de fekaa11  
Fecha de Ingreso: abril-2011
Ubicación: Córdoba / Argentina
Mensajes: 115
Antigüedad: 13 años
Puntos: 34
Respuesta: Mostrar elementos a partir de la base de datos

Fijate esto:

Código PHP:
Ver original
  1. echo "<td><a href= plantillaevento.php?codigo = ".$fila[2]." >".$fila[0]."</a></td>";

En ese caso, fijate hacia donde redirecciona ese link, debe ser algo así:

<a href='plantillaevento.php?codigo=3'>Nombre del evento</a>

Es así o me equivoco ?

Simplemente en plantilla evento, obtienes ese ID mediante GET de la siguiente manera:
Código PHP:
Ver original
  1. <?php
  2. if(isset($_GET['codigo'])){
  3. $idevento = $_GET['codigo'];
  4. $consulta = "Select descripcion from tbevento WHERE id='$idevento'";
  5. $respuesta = mysql_query($consulta) or die("No se pudo realizar la consulta");
  6. $descripcion = mysql_fetch_object($respuesta);
  7. echo $descripcion->descripcion;
  8. }
  9. ?>

Eso te debería imprimir lo que existe en el campo DESCRIPCION sobre el ID pasado por GET.

Espero que lo entiendas. Saludos

PD: De más esta decir que debes modificar los valores en la consulta (quizás tu campo donde está la descripción del evento no se encuentre exactamente en un campo llamado "descripcion").
__________________
Pedir perdón es de hombres inteligentes. Perdonar es de sabios.
  #3 (permalink)  
Antiguo 05/05/2011, 13:39
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Mostrar elementos a partir de la base de datos

Si no te he entendido mal en la página plantillaevento.php quieres mostrar los datos del evento.

Sólo tienes que capturar el parámetro que has pasado en el enlace (codigo)

Código PHP:
Ver original
  1. <?php
  2.  
  3. if (isset($GET['codigo']) ){
  4. $codigo = $GET['codigo'];
  5. //$codigo ya es el id que puedes pasar a la función.
  6.  
  7. }
  8. ?>

Espero que esa fuese tu duda, deberías mirarte el manual oficial de PHP que está en español.
  #4 (permalink)  
Antiguo 05/05/2011, 13:55
 
Fecha de Ingreso: mayo-2011
Mensajes: 105
Antigüedad: 12 años, 11 meses
Puntos: 3
Respuesta: Mostrar elementos a partir de la base de datos

Lo que pasa es que codigo nunca se carga con el id del evento!!

mi url esta quedando asi: http://localhost/MisProyectos/BienestarUni/plantillaevento.php?codigo

como podes observar, la variable codigo nunca carga un valor que deberia ser el id del evento para yo poder usarlo en mi funcion
CargarEvento($idevento,$conexion){...}


yo creo que esto se debe a que estoy listando muchos eventos... entonces cada enlace no almacena en memoria el id que le corresponde, hay alguna manera de que cada enlace apunte a un id especifico, por ejemplo si yo guardo por cada pasada del ciclo for un arreglo de ids de evento y otro arreglo con el numero de enlace generado, se podra de alguna manera relacionar los elementos de un arreglo con el otro???

jajajaja no se muy bien lo que estoy diciendo pero si soluciono este problema tendre ganado el 80% de mi proyecto puesto que muchas veces tendre que realizar esta misma operacion....
  #5 (permalink)  
Antiguo 05/05/2011, 14:06
Avatar de fekaa11  
Fecha de Ingreso: abril-2011
Ubicación: Córdoba / Argentina
Mensajes: 115
Antigüedad: 13 años
Puntos: 34
Respuesta: Mostrar elementos a partir de la base de datos

Entonces ni siquiera recibes el ID evento desde la base de datos?

Haz una prueba, luego de esto:
Código PHP:
Ver original
  1. function listareventossociales($conn){
  2. $sqllistar="select nombre,fecha,idevento from tbevento where idarea = '1' and idtipo = '1' and idestado = '1'";
  3. $registro=mysql_query($sqllistar,$conn);

Pon esto:
Código PHP:
Ver original
  1. while($row = mysql_fetch_assoc($registro)){
  2. echo $row['idevento'] . "<br>";
  3. }

Fijate si logra mostrarte todos los idevento o si directamente no te imprime nada. Si los logra mostrar entonces probablemente estes haciendo algo mal en la función mysql_fetch_row. Si no te lo muestra, comprueba que el nombre de tu campo sea así y no tenga mayúscula ni minúscula entre medio que tu no hayas puesto.
__________________
Pedir perdón es de hombres inteligentes. Perdonar es de sabios.
  #6 (permalink)  
Antiguo 05/05/2011, 14:17
 
Fecha de Ingreso: mayo-2011
Mensajes: 105
Antigüedad: 12 años, 11 meses
Puntos: 3
Respuesta: Mostrar elementos a partir de la base de datos

Si si me muestra el idevento, en la funcion de listar eventos tengo una columna dedicada a imprimir los id de cada evento!! pero porque la variable codigo en la url nunca se carga?
  #7 (permalink)  
Antiguo 05/05/2011, 14:27
Avatar de fekaa11  
Fecha de Ingreso: abril-2011
Ubicación: Córdoba / Argentina
Mensajes: 115
Antigüedad: 13 años
Puntos: 34
Respuesta: Mostrar elementos a partir de la base de datos

Justamente por eso haz posteado este tema, para saber porque tu variable GET "codigo" no carga ningún valor.

Tu código es este:
Código PHP:
Ver original
  1. echo "<td><a href= plantillaevento.php?codigo = ".$fila[2]." >".$fila[0]."</a></td>";

O eso es al menos lo que haz puesto un par de códigos mas arriba. Fijate que entre la palabra ?codigo y el = hay un espacio, quítaselo, quizás esa tontería sea el desencadenante del problema.
__________________
Pedir perdón es de hombres inteligentes. Perdonar es de sabios.
  #8 (permalink)  
Antiguo 05/05/2011, 15:03
 
Fecha de Ingreso: mayo-2011
Mensajes: 105
Antigüedad: 12 años, 11 meses
Puntos: 3
Respuesta: Mostrar elementos a partir de la base de datos

He hallado una caracteristica que no habia tenido en cuenta.

La variable codigo se esta asignando en el ciclo tantas veces como sea el tamaño de la tabla generada en mi consulta sql. es decir la variable codigo estara asignando un id por cada paso del ciclo y al final queda cargada por el id del ultimo evento.

Lo comprobe porque si le doy clic a los primeros enlaces codigo queda en la url asi:

http://localhost/MisProyectos/BienestarUni/plantillaevento.php?codigo

Pero si le doy clic al ultimo, el url queda asi:

http://localhost/MisProyectos/BienestarUni/plantillaevento.php?codigo=3

en donde = 3 es el idevento y con ese si me muestra el evento ampliado!!!

entonces ahora necesito una solucion en donde evitar que los enlaces queden huerfanos en la variable codigo!!!

pense en esta solucion:

declaro una variable incremento que empieze en 0. luego esa variable la concateno con la variable codigo del enlace. quedandome entonces por cada enlace una vairable codigo, asi:

enlace 1 codigo1
enlace2 codigo2
.
.
.

ahora necesito capturar por $GET esas variables, pero no entiendo como hacer la referencia!!

$incremento = 0;
while ($fila = mysql_fetch_array($registro)){
$incremento = $incremento + 1;
echo "<tr>";
echo "<td width = 5 height = 5> <img src = Imagenes/triangulo.gif ></td>";
echo "<td><a href= plantillaevento.php?codigo".$incremento."=".$fila['idevento'].">".$fila['nombre']."</a></td>";
echo "<td>".$fila['fecha']."</td>";
echo "<td>".$fila['idevento']."</td>";
echo "</tr>";
}


espero me ayuden a despejar la duda y juntos aprender como conseguir solucionar esto...
  #9 (permalink)  
Antiguo 05/05/2011, 15:11
Avatar de fekaa11  
Fecha de Ingreso: abril-2011
Ubicación: Córdoba / Argentina
Mensajes: 115
Antigüedad: 13 años
Puntos: 34
Respuesta: Mostrar elementos a partir de la base de datos

Pero mira el detalle que se nos ha pasado (a mi también). Un for no sirve de nada si vas a realizar esa consulta porque se te asignarían todos los valores del ciclo a la variable GET "codigo". Saca la parte de $incremento, el bucle While se ejecutará hasta que la consulta sea completada, osea que el $incremento += 1 actuaría independientemente a tus necesidades.
Código PHP:
Ver original
  1. <?php
  2. while ($fila = mysql_fetch_assoc($registro)){
  3. echo "<tr>";
  4. echo "<td width=5 height=5> <img src = Imagenes/triangulo.gif ></td>";
  5. echo "<td><a href= plantillaevento.php?codigo=".$fila['idevento'].">".$fila['nombre']."</a></td>";
  6. echo "<td>".$fila['fecha']."</td>";
  7. echo "<td>".$fila['idevento']."</td>";
  8. echo "</tr>";
  9. ?>
  10. }

Ese código debería de funcionar, cualquier cosa dime que error te larga.
__________________
Pedir perdón es de hombres inteligentes. Perdonar es de sabios.
  #10 (permalink)  
Antiguo 05/05/2011, 15:43
 
Fecha de Ingreso: mayo-2011
Mensajes: 105
Antigüedad: 12 años, 11 meses
Puntos: 3
Respuesta: Mostrar elementos a partir de la base de datos

Siiii !!!!! he solucionado el problema!!!! ya puedo ampliar mis eventos y el codigo se carga correctamente en la url....

antes para que tengan en cuenta

en el ciclo while pueden usar mysql_fetch_assoc o su equivalente mysql_fetch_array


con las dos va todo bien!!!

muchas gracias a fekaa11 y a alexg88 por sus ayudas.... u lala que satisfaccion cuando uno soluciona problemas en programacion.... gracias enserio
  #11 (permalink)  
Antiguo 05/05/2011, 15:45
Avatar de fekaa11  
Fecha de Ingreso: abril-2011
Ubicación: Córdoba / Argentina
Mensajes: 115
Antigüedad: 13 años
Puntos: 34
Respuesta: Mostrar elementos a partir de la base de datos

Me alegro que hayas solucionado tu problema; mientras que nosotros estamos para eso, para ayudar a la gente y de paso mejorarnos día a día.

Saludos
__________________
Pedir perdón es de hombres inteligentes. Perdonar es de sabios.

Etiquetas: elementos
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 09:02.