Recordad que para pedir soporte alguno, debéis facilitar los datos de soporte oportunos por favor, mirad aquí y leer las Normas generales del foro, esto nos servirá de ayuda para dar el mejor soporte..

Gracias.

La Administración de phpBB España.

consulta sql, help

Foros donde podréis dejar vuestras dudas sobre phpBB 3.0.x
Cerrado
Avatar de Usuario
Megabyte
Elite
Mensajes: 1037
Registrado: 25 Dic 2010, 02:39
Edad: 45

consulta sql, help

#1

Mensaje por Megabyte »

Amigos tengo una consulta y las planteo asi:

Por ejemplo, tengo una tabla, llamada datofamilia, en ella llevo el registro del id del usuario (familia_id), pero en la tabla no tengo almacenado el nombre de usuario.

En un archivo php cual sería la consulta, para mostrar el username, teniendo el id en la tabla mencionada? iniciaría de ésta manera?....y/o como terminaría, para mostrarla en una variable en el template?

Código: Seleccionar todo

		$sql = 'SELECT username 
			FROM '.USERS_TABLE.' 
			WHERE user_id ='.$familia_id;
Espero me halla explicado, no soy muy experto... :lee

EDITO:
Si en la variable se le podria asignar como en el mod "view profile" de la siguiente manera:

Código: Seleccionar todo

 'U_VIEW_PROFILE'        => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $user->data['user_id']),
Última edición por Megabyte el 28 Abr 2011, 23:51, editado 2 veces en total.
Contenido Oculto
Este foro requiere que este registrado e identificado para ver el contenido oculto.

Avatar de Usuario
Alorse
Ex Staff
Mensajes: 5144
Registrado: 22 Mar 2008, 02:14
Género:
Edad: 37

Re: consulta sql, help

#2

Mensaje por Alorse »

Megabyte, esto es soporte de phpBB, por lo que veo, así que lo muevo al foro de soporte.
Y en un rato te respondo como seria.

Avatar de Usuario
Megabyte
Elite
Mensajes: 1037
Registrado: 25 Dic 2010, 02:39
Edad: 45

Re: consulta sql, help

#3

Mensaje por Megabyte »

ok Alorse y gracias por tu respuesta.
Off Topic

Alguien sabe si existe en español algo asi como coding-guidelines de la pagina oficial de phpbb, lo comento porque ayudaría bastante tener en español esta info, para los que empezamos en asuntos de "mini" desarrollos...
Contenido Oculto
Este foro requiere que este registrado e identificado para ver el contenido oculto.

Avatar de Usuario
Alorse
Ex Staff
Mensajes: 5144
Registrado: 22 Mar 2008, 02:14
Género:
Edad: 37

Re: consulta sql, help

#4

Mensaje por Alorse »

Todo según como lo quieras hacer, pero en si hay dos formas básicas de hacerlo (no tan básicas), una es haciendo un SELECT anidando las dos tablas y la otra haciendo un JOIN para unir datos en común de ambas tablas, vamos a nombrar las tablas de la siguiente manera:

phpbb_user = USERS_TABLE
phpbb_datofamilia = DATO_FAMILIA_TABLE

Anidando tablas:

Código: Seleccionar todo

$sql = 'SELECT d.familia_id, u.username, u.user_id, u.user_colour
    FROM ' . DATO_FAMILIA_TABLE . ' d, ' . USERS_TABLE . ' u 
        WHERE d.familia_id = u.user_id';
    $result = $db->sql_query_limit($sql, '10'); // 10 es el limite de usuarios a mostrar por consulta     
Uniendo tablas con JOIN:

Código: Seleccionar todo

$sql = array(
        'SELECT' => 'd.familia_id, u.username, u.user_id, u.user_colour',
        'FROM' => array(
            DATO_FAMILIA_TABLE => 'd',
        ),
        'LEFT_JOIN' => array(
            array(
                'FROM' => array(USERS_TABLE => 'u'),
                'ON' => 'd.familia_id = u.user_id'
            ),
        ),
        'ORDER_BY' => 'u.username ASC',
    );
    $sql = $db->sql_build_query('SELECT', $sql);
    $result = $db->sql_query_limit($sql, '10'); // 10 es el limite de usuarios a mostrar por consulta     
Que es mas largo, complejo y complicado de entender el método con el JOIN y detrás de todo hacen lo mismo, Si, PERO... cuando se tienen tablas muy inmensas es mejor hacerlo con el JOIN ya que la consulta tiene prioridad a una de las tablas (en este caso prioridad a la izquierda "LEFT_JOIN" con la tabla USERS_TABLE), puedes buscar mas sobre JOIN por la net para entender mejor su funcionamiento.

Luego de eso, sea cual sea el método que usaste debes crear la variable de $template para listar los resultados, de la siguiente manera:

Código: Seleccionar todo

    while ($row = $db->sql_fetchrow($result)) {
        $template->assign_block_vars('listar_datofamilia', array(
            'USER_PROFILE' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']);
        ));
    } 
La función get_username_string( ); es intrínseca de phpBB y sirve para obtener el perfil de usuario llevándole algunos parámetros.

Luego en el HTML solo debes poner:

Código: Seleccionar todo

<!-- BEGIN listar_datofamilia -->
   {listar_datofamilia.USER_PROFILE}
<!-- END listar_datofamilia -->
y con eso tendrás el listado de usuarios que están en la tabla datofamilia.

Sobre las guías en español para el manejo de código en phpBB, la verdad no las conozco, creo que seria nuestra labor como Sitio oficial de Soporte phpBB en Español el crearlas o traducirlas.

Avatar de Usuario
Megabyte
Elite
Mensajes: 1037
Registrado: 25 Dic 2010, 02:39
Edad: 45

Re: consulta sql, help

#5

Mensaje por Megabyte »

Gracias, estudiare el codigo y te cuento....muchas gracias...

Digo estudiaré, no porque crea que está mal, al contrario creo que sabes lo que escribes. Lo digo xq quiero entender bien lo que hago... :lee

saludos. :ok:
Contenido Oculto
Este foro requiere que este registrado e identificado para ver el contenido oculto.

Cerrado

Volver a “Foros de Soporte 3.0.x”