PHP - Ir a perfil de usuario clicando en una foto

 
Vista:

Ir a perfil de usuario clicando en una foto

Publicado por Cesar (5 intervenciones) el 16/04/2010 01:34:04
Hola a todos los foreros, realmente no tengo mucha experiencia en Php pero estoy haciendo un esfuerzo casi sobrehumano en desarrollar un sistema de usuarios en php y poco a poco lo estoy logrando (llevo 2 meses jejeje).. me explico, es un sistema de usuarios tipico con sus bases de datos (uso phpmyadmin) su formulario de registro, area de usuario para logearse, todo esto ya esta funciona perfectamente, en mi index.php visualizo los ultimas fotos añadidas, los ultimos usuarios registrados, links para registrarse o iniciar sesion etc.. al ingresar mi usuario y password, sale mi foto de perfil y demas datos, luego hay un menu de usuario una de las opciones es (ver mi perfil) que tambien funciona y me muestra mis fotos (las q subi yo) aparte de la de mi perfil y demas datos de usuario pero me he atascado en algo q quiero hacer y no puedo.. que al clickar en una foto de los ultimos usuarios registrados me envie a otra pagina y me muestre su perfil de usuario (tal y como visualizo el mio) claro esta que estas fotos las cojo de la base de datos y las imprimo en pantalla.. espero me haya explicado y mas espero que los "genios de por aqui" en php que hay unos cuantos me puedan ayudar, de antemano muchas gracias a todos(as).
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

RE:Ir a perfil de usuario clicando en una foto

Publicado por Carlos Nacianceno (4 intervenciones) el 16/04/2010 16:30:37
Sin conocer completamente el contexto, es algo sencillo

Si de tu base de datos sacas la info del usuario a una variable $infoperfil;

y el id esta en la posición $infoperfil['id']

entonces ya solo armas el html con el php

<a href='/miur/verperfil.php?id=<?=$infoperfil['id'] ; ?>'><img src='urldemiimagen.jpg'></a>

Me explique?, era lo que buscabas?
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

RE:Ir a perfil de usuario clicando en una foto

Publicado por Diego Romero (1450 intervenciones) el 16/04/2010 17:49:59
Quizá el problema que tiene es como sigue:
Usa el mismo script para vizualizar cualquier perfil, sea el del propio usuario logueado u otro pero no sabe cómo distinguir que quien está visitando ese script es el propio usuario o está tratando de ver el de otro usuario.
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

RE:Ir a perfil de usuario clicando en una foto

Publicado por Cesar (5 intervenciones) el 16/04/2010 19:59:18
Hola amigos.. gracias por responder, no entendi muy bien lo que me dices..te dejo mas informacion y la estructura de la base de datos para que entiendas mejor la idea:

tabla : usuario_foto_perfil
************************************
id auto increment int (4)
username char (15)
foto_name char (50)

Despues tengo otras tablas que son:
usuario_key (id, username, passwd, email)
usuario_datos (id, username, nombre, apellido, pais, ciudad, fecha_nac, condicion, promocion, telefono)
usuario_fechas(id, username, fecha_inscrip, fecha_ult_visita)
usuario_fotos(id, username, foto_titulo, foto_name) --> para otras fotos aparte de la del perfil.

Solo podran ver los perfiles de otros usuarios los usuarios logueados.
El codigo para visualizar los 4 ultimos usuarios registrados en el index.php.. en realidad es una funcion es este:
-----------------------------------------------------------------------------------------
function display_ultimos_usuarios()
{
include ("config_db.php");

$link=mysql_connect($serverDB,$userDB,$passwdDB);

$query = sprintf("SELECT usuario_foto_perfil.foto_name FROM usuario_foto_perfil order by id desc LIMIT 0,4");
$query1 = sprintf("SELECT usuario_datos.apellido FROM usuario_datos order by id desc LIMIT 0,4");

$result = mysql_db_query($databasename,$query,$link);
$result1 = mysql_db_query($databasename,$query1,$link);

<table width="430">
<td>
<tr>
<?php
while($array = mysql_fetch_array($result))
{
?>
<img src="users/imgs_perfil/
<?php
echo $array['foto_name'];
?>"
width='102' height='80' align="middle"/>
<?php
}
?>
</tr>
<tr class="form_login">
<div align="center">
<?php
while($array = mysql_fetch_array($result1))
{
?>
<?php
echo $array['apellido'];
?>
<?php
}
?>
</div>
</tr>
</td>
</table>
<?php
mysql_free_result($result);
}

Dejo el codigo integro por si acaso le sirva a alguien, a mi me tomo mucho esfuerzo ya que no tengo mucha experiencia en Php pero con la ayuda de "Mr. Google" y la experiencia de muchos programadores como tu lo logré, pero ahora estoy "atascaaaadoooo!!!!" jajaja.. necesito que al clicar en una de las fotos de perfil me enlace con su perfil integro, tal como visualiza el perfil del usuario logueado.. algo asi como esto:

<a href='/miur/verperfil.php?id=<?=$infoperfil['id'] ; ?>'><img src='urldemiimagen.jpg'></a>

Pero no se por donde empezar.. como hago para almacenar en la variable $infoperfil todos los datos de todas las tablas?? para que luego aparesca en la url algo asi como http://localhost/MiWeb/verperfil.php?id=21

espero puedan ayudarme y poner su granito de arena en este proyecto.. gracias.
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

RE:Ir a perfil de usuario clicando en una foto

Publicado por Diego Romero (1450 intervenciones) el 17/04/2010 05:07:06
Me parece que tienes un grave error de diseño de la base de datos.
¿Por qué tienes datos de un mismo usuario dividido en cuatro tablas?. Según veo en la definición de la tabla que has puesto, el campo ID es "autoincrement" ¿quiere decir que cada tabla aunque un registro pertenezca al mismo usuario tiene diferente valor en ID?, ¿cómo harás para relacionar una tabla con otra?.
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

RE:Ir a perfil de usuario clicando en una foto

Publicado por Cesar (5 intervenciones) el 17/04/2010 10:55:14
Gracias por responder Diego.. el id si es AutoIncrement y diseñe las BD de esa manera porque supuse que demasiada info en una sola tabla se congestionaria.. bueno esa es mi opinion.. entonces que me recomiendas?? hacer una sola tabla?? y por ejemplo como haria si un usuario luego de estar registrado y logueado quiere subir 10 fotos a su perfil??
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

RE:Ir a perfil de usuario clicando en una foto

Publicado por Diego Romero (1450 intervenciones) el 17/04/2010 23:04:55
Lo que me temía. Te falta mucha teoría de base de datos. Mientras resolvemos este problema te sugiero que leas algo de "normalización de base de datos".

El usuario es una entidad que por lo tanto debe tener un identificador unívoco, en la práctica esto significa que todos los datos referentes a un mismo usuario que no sean repetitivos deben estar almacenados en un mismo registro con un solo identificador.

Las tablas nunca tienen "demasiada información". En un sistema promedio no es raro encontrar tablas con 50 o 60 campos de diversos tipos. Si un motor de base de datos tiene problemas con ello pues es un mal motor. Por supuesto que MySQL es capaz de manejar algo así sin problemas, así que no tengas miedo en hacerlo así que, además, es lo correcto porque te facilita la tarea.

Ahora, el tema de las fotos, como mencioné más arriba, las fotos son datos repetitivos del usuario, por tanto van en una tabla aparte donde cada foto debe estar identificada por una clave doble: el id del usuario al que pertenece la foto más un identificador propio de esa foto, la combinación de ambos datos conforman la clave que debe ser unívoca. En teoría a esto se le llama "relación de uno a mucho", es decir para un usuario le corresponden muchas fotos.

Suponiendo que tienes esta tabla de usuarios:

ID Nombre Apellido
1 Diego Romero
2 Carlos Nacianceno

La tabla de fotos sería:
IDusuario IDfoto Foto
1 1 skhfksdhfkj.jpg
1 2 skjhfjksd.jpg
1 3 kjfjkshfjhs.jpg
2 1 oewinsjk.jpg
2 2 newuwiue.jpg

Como ves hay dos campos que conforman la clave y esa clave nunca se repite.

A la pregunta ¿cuáles son las fotos del usuario cuyo ID es 1?, solo tienes que leer todos los registros cuyo IDusuario de la tabla fotos sea 1.

¿Se entiende hasta acá?
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

RE:Ir a perfil de usuario clicando en una foto

Publicado por Cesar (5 intervenciones) el 18/04/2010 06:27:58
Hola Diego.. gracias por responder y gracias por dedicar tu valioso tiempo en revisar mi codigo y comentarlo.. Te explico un poquito mas a fondo mi idea... Cuando un usuario se registra en la Web mediante un formulario al enviar los datos, estos se "distribuyen" en todas las tablas, en una se almacena la fecha de registro, en otra los datos, en otra la foto de perfil (si es que el usuario ha subido una) si no se almacena un "avatar", en otra el password y email (hice esto último para cuando tenga q enviar por email al usuario su password y usuario en caso de olvido).. en todas las tablas se almacena el mismo 'username' por eso el mismo usuario (username) tiene el mismo 'id'.. luego hay otra tabla que es 'usuario_fotos' que almacena las fotos que un usuario registrado y logueado 'sube al servidor' puede tener tantas como desee (pasan por un reescalado se redimensionan y se guardan en el servidor mas pequeñas) y estas las recupero luego mediante su 'username', es aqui donde no t entiendo lo de la "clave doble" porque estas fotos cuando las quiero "recuperar" puedo hacer que todas las fotos "foto_name" (nombre de la foto en la BD, foto real almaceada en el servidor) de esta tabla con el mismo "username" usando un condicional "salgan a la luz.."
..te explico esto para que mas o menos tengas una idea de lo que pretendo, soy un poco novato en Php pero como soy 'cabezon' jejeje no me rindo asi porque si.. si tienes alguna sugerencia o si crees q tengo que rediseñar mis BD's soy todo oidos (nunca es tarde para aprender..) otra vez Diego muchas gracias por tu valioso tiempo... y si hay alguien mas por aqui que me quiere hechar una mano.. ¡¡BiEnVeNiDo :) Thanks
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

RE:Ir a perfil de usuario clicando en una foto

Publicado por Diego Romero (1450 intervenciones) el 18/04/2010 18:26:45
Está bien. Solo que veo un pequeño problema: el usuario no puede cambiar de username. Sobre las fotos veo que no has establecido ninguna clave. Por el momento si te funciona y lo entiendes, déjalo así... :)
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

RE:Ir a perfil de usuario clicando en una foto

Publicado por Cesar (5 intervenciones) el 18/04/2010 22:38:25
Hola David lo de visualizar en el index.php los 4 ultimos usuarios registrados con parte de su info me funciona perfectamente, ahora retomamos el tema de este post que es hacer "linkeable" las fotos, que al clicar una me lleve a su perfil.. he hecho algo con "MKDIR" haber que te parece, he creado una carpeta para cada usuario registrado correctamente.. osea que si se rellena correctamente el usuario ed registro al enviar la informacion luego de almacenarse en las BD's se crea una carpeta con el nombre del 'username' que nunca se repetira.. osea en la url quedaria algo asi como (localhost://MiWeb/members/username/) q visualizaria su perfil, seria otra opcion a(localhost://MiWeb/index.php?=id..) cual d las dos opciones t parece mas apropiada? con lo de la primera opcion estaba pensando en guardar en cada carpeta de usuario creada algo asi como un perfil.php que se encarge de cargar sus datos.. pero como cogo los datos de las BD's para ese usuario?? espero haberme explicado.
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