Foros del Web » Programando para Internet » PHP »

Problemas

Estas en el tema de Problemas en el foro de PHP en Foros del Web. tengo un problema, bueno para mi lo es, tengo una tabla que guarda un nombre y una foto, cuando este nombre tiene varias fotos se ...
  #1 (permalink)  
Antiguo 24/06/2003, 15:22
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 20 años, 11 meses
Puntos: 8
Problemas

tengo un problema, bueno para mi lo es, tengo una tabla que guarda un nombre y una foto, cuando este nombre tiene varias fotos se repíte por ejemplo:

nombre - Foto
E10 - 10.jpg
E11 - 11.jpg
E11 - 11-1.jpg
E11 - 11-2.jpg

En este caso E11 tiene 3 fotos, y tienen que ser mostradas una por una aldar click a un boton (siguiente).

Ha bia pensado en lo siguiente:

Realizar una consulta a la tabla, algo como
Código PHP:
$SQL="SELECT * FROM tabla WHERE id='".$id."'"
eso me extraeria los resultados de un id, luego los resultados de la consulta guardarlos en un array, y entonces, cada vez que doy click en el boton siguiente, corra una posicion en el array, pero eso no se como hacerlo.

Por favor, necesito de su ayuda.

Gracias
__________________
El aprendiz.
  #2 (permalink)  
Antiguo 24/06/2003, 16:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si tu tabla -realmente- tiene esta estructura:

id | nombre | Foto
1 E10 - 10.jpg
2 E11 - 11.jpg
3 E11 - 11-1.jpg
4 E11 - 11-2.jpg

(ojo al ID que es único y autonumerico ..)

Tus consultas serían típo:

Código PHP:
$sql="SELECT * FROM tabla WHERE nombre='".$nombre."'"
Con esa consulta obtendrás los ID's que corresponde a las coincidencias del campo 'nombre' de tu tabla.

Y obtienes todos esos registros con un bucle tipo:

Código PHP:
// conectas a tu BD selecionas la BD .. etc ..  y ejecutas la consulta ...
$consulta=mysql_query($sql) or die (mysql_error());

while (
$registro=mysql_fetch_array($consulta)){
echo 
"<a href="ver_foto.php?id=$registro['id']">Ver foto: $registro['foto']</a>";

Pero lo que te hace falta es "paginar" esa consulta .. Para eso se usa LIMIT en tu consulta que te permitirá obtener un rango de registros (de tu consulta realizada) desde la posición que indiques (dentro del resultado) y N registros que quieras extrare ..

Sería algo típo:

Código PHP:
$sql="SELECT * FROM tabla WHERE nombre='".$nombre"' LIMIT $inicio,1"
Y tus links (botones) de avance retroceso .. los tienes que realizar en función del $inicio .. tomando como posición inicial 0 .. y sumando o restando una unidad al mismo ..

También es necesario que "propages" en el link tu variable "nombre" junto a la variable de paginado que necesitas usar.

Código PHP:
<?
// Le sumamos una unidad .. para obtener el siguiente registro dentro del  resultado.
$desde=$inicio+1
echo 
"<a href=\"nose.php?nombre=$nombre&inicio=$desde\">Siguiente resultado</a> | ";

// le restamos una unidad para obtener el anterior registro.
$desde=$inicio-1
echo 
"<a href=\"nose.php?nombre=$nombre&inicio=$desde\">Anterior resultado</a>";
?>
Eso sería la base .. Hace falta "muchos" detalles de validación de datos (sobre todo para "delimitar" en rango de resultados que se ha obtenido de la consulta) y varios detalles más.

Todo esto es parte de la teoría de "paginación" ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 24/06/2003 a las 16:08
  #3 (permalink)  
Antiguo 26/06/2003, 12:47
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 20 años, 11 meses
Puntos: 8
Gracias por la ayuda, me podrias dar algun link de donde pueda ver la explicacion de la clusula LIMIT mas detallada.

Gracias
__________________
El aprendiz.
  #4 (permalink)  
Antiguo 26/06/2003, 21:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues .. www.mysql.com .. ahí tienes el manual oficial de Mysql .. busca la sentencia SELECT y veras ahí a LIMIT como un parámetro más o busca por LIMIT y veras algunos otros temas relacionados.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 22:36.