elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  funcion para lista de usuarios
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: funcion para lista de usuarios  (Leído 1,832 veces)
gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
funcion para lista de usuarios
« en: 18 Septiembre 2014, 01:01 am »

Hola, estoy terminando una lista de usuarios, pero hay una parte en la que no me aclaro...

La funcion actual muestra una lista con los datos de un usuario.

La web es un CMS basado en Yii Framework. Aqui pongo el codigo:

UsuarioController.php
Código
  1. class UsuarioController extends Controller
  2. {
  3. public function actionAdmin()
  4. {
  5. if(Yii::app()->authManager->checkAccess('RUsuario', Yii::app()->user->getState("rol")))
  6. {
  7. $model=new Usuario('search_propios');
  8. $model->unsetAttributes();
  9. if(isset($_GET['Usuario'])) $model->attributes=$_GET['Usuario'];
  10. $this->render('admin',array('model'=>$model,));
  11. }
  12. else
  13. throw new CHttpException(401,'No tiene permisos de acceso al recurso URL.');
  14.        }
  15. }

Models -> Usuario.php
Código
  1. class Usuario extends CActiveRecord
  2. {
  3. public static function model($className=__CLASS__)
  4. {
  5. return parent::model($className);
  6. }
  7.  
  8. public function tableName()
  9. {
  10. return 'rc_usuario';
  11. }
  12.  
  13. public function search_propios()
  14. {
  15. // Warning: Please modify the following code to remove attributes that
  16. // should not be searched.
  17. $idUsuarioActual = Yii::app()->user->getState('idWeb');
  18.  
  19. $criteria=new CDbCriteria;
  20.  
  21. $criteria->compare('idUsuario',$this->idUsuario);
  22. $criteria->compare('nombre',$this->nombre,true);
  23. $criteria->compare('apellidos',$this->apellidos,true);
  24. $criteria->compare('email',$this->email,true);
  25. $criteria->compare('web',$this->web,true);
  26. $criteria->order='idWeb';
  27.  
  28. return new CActiveDataProvider($this, array('criteria'=>$criteria,));
  29. }
  30. }

Esa lista muestra todos los usuarios, pero necesito que muestre solo unos segun las ids de otra tabla.

La tabla rc_amigo tiene las columnas 'idAmigo' y 'idUsuario'. Necesito que la lista muestre los amigos del usuario conectado, sería algo asi como
Código
  1. SELECT * FROM rc_amigo WHERE idUsuario=1
Y, por ejemplo, esto sería lo que devuelve la sentencia:
Citar
-----------------------
idAmigo|idUsuario
         2 |            1
         3 |            1
         4 |            1
-----------------------

Si, en este caso, el usuario que hay conectado es el 1, necesito que la lista muestre los usuarios 2, 3 y 4 de la tabla rc_usuario.

Código
  1. SELECT * FROM rc_usuario WHERE idUsuario = (SELECT * FROM rc_amigo WHERE idUsuario=1)

Ese 1 tendría que cambiarlo por el 'idUsuario' del login actual...

Mas o menos puedo hacerme una idea de como hacerlo, pero realmente llevo un lio en la cabeza, llevo unas horas probando y no consigo nada... ;(

¿Conoceis alguna manera simple de hacerlo?

Gracias!


« Última modificación: 18 Septiembre 2014, 01:21 am por gAb1 » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: funcion para lista de usuarios
« Respuesta #1 en: 18 Septiembre 2014, 01:43 am »

Solo conozco Symfony realmente, pero parece ser que lo que buscas es establecer la relación de los Active Records.

http://www.yiiframework.com/doc/guide/1.1/en/database.arr


En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: funcion para lista de usuarios
« Respuesta #2 en: 18 Septiembre 2014, 16:37 pm »

¿Podría de alguna manera hacerse mas facil? Por ejemplo con:

Código
  1. SELECT * FROM rc_usuario WHERE idUsuario = (SELECT idAmigo FROM rc_amigo WHERE idUsuario = $connectedUserID)

He probado esa consulta y al parecer da error si hay mas de 1 fila... si solo hay 1 resultado lo muestra...

Gracias!
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: funcion para lista de usuarios
« Respuesta #3 en: 18 Septiembre 2014, 17:05 pm »

La consulta que buscas quizá sea:

Código
  1. SELECT rc_usuario.*, rc_amigo.*
  2. FROM rc_amigo
  3. INNER JOIN rc_usuario ON rc_usuario.idUsuario = rc_amigo.idAmigo
  4. WHERE rc_amigo.idUsuario = $connectedUserID
En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: funcion para lista de usuarios
« Respuesta #4 en: 18 Septiembre 2014, 19:33 pm »

Sii muchas gracias funciona perfecto.

He conseguido armar algo muy simple y al parecer funciona bien, lo unico que falla es la variable que comprueba el id del usuario conectado con el id que obtiene de la db...

Código
  1. <?php header('Content-Type: charset=utf-8');
  2.  
  3. $connectedUserID = Yii::app()->user->getState('idUsuario'); // aqui se declara
  4.  
  5. $idUsuario = '0';
  6. $idReferido = '1';
  7.  
  8. mysql_connect('localhost', 'root', '123456');
  9. mysql_select_db('website');
  10. $query = sprintf("SELECT rc_usuario.*, rc_referidos.*
  11. FROM rc_referidos
  12. INNER JOIN rc_usuario ON rc_usuario.idUsuario = rc_referidos.idReferido
  13. WHERE rc_referidos.idUsuario = '$connectedUserID'", // aqui se usa
  14. mysql_real_escape_string($idReferido));
  15.  
  16. $data = mysql_query($query);
  17.  
  18. while ($fila = mysql_fetch_assoc($data)) {
  19.    echo $fila['nombre'];
  20.    echo $fila['apellidos'];
  21.    echo $fila['direccion'];
  22.    echo $fila['web'];
  23. }
  24.  
  25. ?>

No da ningún error, pero tampoco muestra nada, y he comprobado la id con la que estoy conectado y en la db esta esa id... debería de mostrar el contenido, pero no muestra nada ;(

Si cambio la variable '$connectedUserID' por el numero directamente si que muestra...

Gracias!

EDITO: Vale era problema del nombre que se usaba... idUsuario que no existia en la clase yii
« Última modificación: 18 Septiembre 2014, 20:50 pm por gAb1 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Lista de usuarios
Sugerencias y dudas sobre el Foro
pedroche 5 2,303 Último mensaje 19 Abril 2005, 20:54 pm
por pedroche
programacio lisp de funcion que pasa un array a lista
Ejercicios
indiabat 0 3,499 Último mensaje 18 Diciembre 2005, 20:53 pm
por indiabat
funcion mostrar lista doble lenguaje c
Programación C/C++
spectrumni 2 3,653 Último mensaje 26 Enero 2012, 23:39 pm
por spectrumni
problema con funcion insertar de una lista enlazada
Programación C/C++
roger13 0 1,950 Último mensaje 20 Octubre 2013, 01:44 am
por roger13
¡Al fin!.. AT&T activa función de llamadas por Wi-Fi para sus usuarios con ...
Noticias
wolfbcn 0 1,080 Último mensaje 11 Octubre 2015, 02:30 am
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines