cesarobcn
Usuario Novato
Usuario Novato

Hola a todos los foreros de miarroba, 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 loguearse, 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 y 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).

Les dejo mas informacion y la estructura de la base de datos para que tengan mas clara 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 las fotos de perfil de los 4 ultimos usuarios registrados en el index.php.. en realidad es una funcion es esta:

Código:
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>
      <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 se visualiza mi perfil como 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.

Avatar Image
Come y duerme en el foro
Come y duerme en el foro

Para ver el perfil de los ultimos usuarios , con que en el enlace llevaras una opcion con el id_usuario o como lo tengas puesto, deberia llevarte a una pagina aparte con los correspondientes datos de cada usuario, ya que el id, es UNICO.

Luego en la pagina de cada usuario recuperas los datos que necesites de la bd. .

Si por ejemplo tienes a uno de tus ultimos usuarios que se llama pepito.Aparece su imagen o thumbnail y al clickar en la foto

Código:
<a href="loquesea.com/profile.php?id=130>Ver perfil de pepito</a>

Luego en profile.php , teniendo ese id, haces un SELECT especificando en el WHERE el usuario y todo lo que quieras mostrar.

Los enlaces del tipo loquesea.com/index.php?id=x , son parametros que le pasas a la url. Es decir : variable / valor.

Asi por ejemplo si sacas el id de un usuario en concreto de la base de datos y luego lo pasas como parametro, lo recuperaras en otra zona del codigo o en una pagina aparte mediante GET.

Imagina tu pagina index.php y quieres sacar el id del usuario pepito.

Haces una consulta a la bd especificando en la clausula where que quieres ese id.

Por lo tanto, tenemos esto:

Código:
<?php
$query="SELECT * from users WHERE id_user="$id_user"
$exec=mysql_query($query);
?>

 Creas un bucle para mostrar la informacion.

Código:
$datos=while($row=$mysql_fetch_row($query)){
echo $datos["id_user"];
$id_user=$datos["id_useR"];
}

Ahora que ya tenemos asignada nuestra variable $id_user, vamos a pasarla como parametro en un enlace

Código:
<a href="profile.php?id_user=$id_user">Ver perfil</a>

Ahora en la pagina profile.php , recuperamos nuestra variable.

Código:
<?php
$id_user=$_GET["id_user"];
?>

Ya podemos extraer toda la informacion del usuario teniendo esa variable, ya que la utilizaremos en la clausula WHERE para que sepa de que usuario estamos intentando extraer la informacion.

Bueno ha sido un poco largo y un poco improvisado , ya que no he visto el codigo que tienes puesto, pero para que te hagas una idea de como funciona trabajar con variables usando GET.

Saludos!.

cesarobcn
Usuario Novato
Usuario Novato

Ok aerialss88!! muy buena la idea, estaba pensando en esto tambien pero tu has dado el empujoncito para animarme a cambiar mi codigo, menos mal q fue algo improvisado jejeje.. ya cogo el 'id' de de la foto del perfil y luego la cogo con un $_GET desde el profile_member.php busco mediante la 'id' en mis BD's y visualizo la info, el codigo quedo asi:

Código:

Y luego en profile_members.php asi:

Código:
$id_user=$_GET['id'];
  
include ("archivos_php/config_db.php");
$link=mysql_connect($serverDB,$userDB,$passwdDB);
  
$query = "SELECT * FROM usuario_datos, usuario_fechas, usuario_foto_perfil, usuario_key, usuario_fotos  WHERE usuario_key.id=".$id_user;
$resultado = mysql_db_query($databasename,$query,$link) or die (mysql_error());
..
..
..
..
while($array = mysql_fetch_array($resultado))
  {
  echo $id_user;
  echo "<span class='VerMas'>".$array['condicion']."</span><br/>";
  echo "<span class='VerMas'> ".$array['promocion']."</span><br/><br/>";
  echo "País de Residencia : <span class='form_registro'>".$array['pais']."</span><br/>";
  echo "Ciudad :<span class='form_registro'> ".$array['ciudad']."</span><br/>";
  echo "Telefono :<span class='form_registro'> ".$array['telefono']."</span><br/>";
  echo "Miembro desde :<span class='form_registro'> ".$array['fecha_inscrip']."</span><br/>";
  echo "Ultima visita :<span class='form_registro'> ".$array['fecha_ult_visita']."</span><br/>";
  }

Lo de ($query = "SELECT * FROM usuario_datos, usuario_fechas,....) no esta claro tengo que hallar la manera de "unir" mis BD's o plantearme unir mis BD's porque para visualizar la info del usuario tengo que sacar datos de 5 BD's q me recomendarias??

ahora solo me queda "arreglar" la interface para que se vea "bonito".. cualquier problemilla volvere a molestarte, aún me falta mucho camino por delante.. gracias por responder a este post y por compartir tus conocimientos, eso se agradece...;-);-)

cesarobcn
Usuario Novato
Usuario Novato

Antes no se porque pero no se publicó el primer codigo... aqui va.

function display_ultimos_usuarios()
{
include ("config_db.php");

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

$query = sprintf("SELECT usuario_foto_perfil.id, usuario_foto_perfil.foto_name,
    usuario_datos.apellido, usuario_datos.promocion
    FROM usuario_foto_perfil INNER JOIN usuario_datos ON
    usuario_foto_perfil.username = usuario_datos.username order by id desc LIMIT 0,4");
    
$result = mysql_db_query($databasename,$query,$link) or die (mysql_error()); 
?>
<table width="430">
 <tr>
  <?php
  while($array = mysql_fetch_array($result))
  {
  //$id_user=$array['id'];
  ?>
  <tr>
   <td>
   <a href="profile_members.php?id=<?php echo $array['id']?>"><img src="users/imgs_perfil/
   <?php
    echo $array['foto_name'];
   ?>"
   width='102' align="middle"/>
   </a>  
    <td>
     <?php
    echo $array['apellido']."<br>";
    echo $array['promocion'];
   ?>
    </td>
  </td>
  </tr>
  <?php
  }
  ?>
 </tr> 
</table>
<?php
mysql_free_result($result);
}

Avatar Image
Come y duerme en el foro
Come y duerme en el foro

A lo de las 5 bd´s te refieres a las tablas de tu base de datos, no?. Unir datos de dos o mas tablas, cierto?.

Un saludo.

cesarobcn
Usuario Novato
Usuario Novato

ehh aerialss88 espero no seas ironico.. fue un lapsus.. eran "tablas's" pero aun t entiendo fue culpa mia estaba "emocionado".. pero ya esta!! con tu ayuda y otro post muy bueno lo logre.. al final uni tablas compacte un poco mi BD y quedo el tres tablas una de datos de usuario  otra de foto de perfil y otra de fotos de usuario osea:

*usuario_datos
*usuario_foto_perfil
*usuario_fotos

Te dejo los codigos nunca se sabe, igual te sirven:

display_ultimos_usuarios()

function display_ultimos_usuarios()
{
include ("config_db.php");

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

$query = sprintf("SELECT usuario_foto_perfil.id, usuario_foto_perfil.foto_name,
    usuario_datos.apellido, usuario_datos.promocion
    FROM usuario_foto_perfil INNER JOIN usuario_datos ON
    usuario_foto_perfil.username = usuario_datos.username order by id desc LIMIT 0,4");
    
$result = mysql_db_query($databasename,$query,$link) or die (mysql_error()); 
?>
<table width="430">
 <tr>
  <?php
  while($array = mysql_fetch_array($result))
  {
  //$id_user=$array['id'];
  ?>
  <tr>
   <td>
   <a href="profile_members.php?id=<?php echo $array['id']?>"><img src="users/imgs_perfil/
   <?php
    echo $array['foto_name'];
   ?>"
   width='102' border="0" align="middle"/>
   </a>  
    <td>
     <?php
    echo $array['apellido']."<br>";
    echo $array['promocion'];
   ?>
    </td>
  </td>
  </tr>
  <?php
  }
  ?>
 </tr> 
</table>
<?php
mysql_free_result($result);
}

Luego he creado un profile_members.php que sera un archivo comun para todos los perfiles de usuario menos para el usuario actual logueado, cuando la foto me linkee a este archivo con un $_GET cojo la 'id' la asigo a una variable ($id_user) luego con el SELECT.. WHERE busco el registro para 'id'=$id_user mas o menos coji tu idea y adaptandola a mi web quedaria asi:

profile_members.php

Código:
<?php
require_once("archivos_php/web_cmprg_fns.php");
session_start();
do_html_header("Pagina de Miembros - CMPRG");
check_valid_user(); // chequea si el usuario esta correctamente logeado

$id_user=$_GET['id'];
      
include ("archivos_php/config_db.php");
$link=mysql_connect($serverDB,$userDB,$passwdDB);

$query = "SELECT * FROM usuario_datos INNER JOIN usuario_foto_perfil WHERE usuario_datos.id=".$id_user."
      && usuario_foto_perfil.id=".$id_user;
$resultado = mysql_db_query($databasename,$query,$link) or die (mysql_error());
$array = mysql_fetch_array($resultado);
?>
<link href="estilos_css/Estilos_MiWeb.css" rel="stylesheet" type="text/css">
<body id="body">
<div id="contenedor">
<!-- ********************* Menu Pincipal ***************************-->
<div id="menuPrincipal">
   <?php
   display_menu_principal_usuario();
   ?>
</div>
<codigo...........
.....................
.....................>
<div id="SeccionLeft">
      <br/>
      <?php
      echo $array['nombre']."<br/> ".$array['apellido']."<br/>";
      ?>
   </div>

   <div id="SeccionLeft">
      <img src="users/imgs_perfil/
      <?php
         echo $array['foto_name'];
      ?>"
      width='200' align="middle"/>
   </div>
......
......
<!-- *********************Contenido ***************************-->   
   <div id="contenido">
      <div id="menu_user">
         <?php
         display_menu_usuario();
         ?>
      </div>
      <div id="seccion_contenido">
      <h5>Perfil de Usuario</h5>
      <?php
      echo "<span class='VerMas'>".$array['nombre']."</span><br/>";
      echo "<span class='VerMas'> ".$array['apellido']."</span><br/><br/>";
      echo "<span class='VerMas'>".$array['condicion']."</span><br/>";
      echo "<span class='VerMas'> ".$array['promocion']."</span><br/><br/>";
      echo "País de Residencia : <span class='form_registro'>".$array['pais']."</span><br/>";
      echo "Ciudad :<span class='form_registro'> ".$array['ciudad']."</span><br/>";
      echo "Telefono :<span class='form_registro'> ".$array['telefono']."</span><br/>";
      echo "Miembro desde :<span class='form_registro'> ".$array['fecha_inscrip']."</span><br/>";
      echo "Ultima visita :<span class='form_registro'> ".$array['fecha_ult_visita']."</span><br/>";
       ?>

Funciona perfectamente, pero aún asi si tienes alguna sugerencia me la das.. ahora tengo que mirar lo de calcular la edad del usuario basandose en la fecha_nac y la actual y hacer que cada vez que el usuario se loguee correctamente se cambie la fecha_ult_visita, pero eso sera mañana, ahora me toca tomarme dos cañitas q para eso es mi dia de fiesta y me he pasado casi todo el dia en el ordenador jejeje.. bueno aeri muchas gracias por echarme un cable, si tienes alguna sugerencia soy todo oidos, otra vez gracias por tu tiempo ;-)

ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
TemaUsuariosRespuestasVisitasActividad
Por: , el 05/May/2010, 19:08
cesarobcn NoSetup.org24kMay/10