Acceso a datos de Tablas, (query_first,query_read,query_write)

Esta es una discusión para el tema Acceso a datos de Tablas, (query_first,query_read,query_write) en el foro Tutoriales de Programación, bajo la categoría Lenguajes de Programación; Cuando estemos haciendo un archivo PHP o un Plugin, que es netamente codigo PHP, vBulletin nos ofrece 3 funciones para accesar a los datos, estos son: Código PHP: $vbulletin -> db -> query_first ( "SELECT" ...
Página:


Resultados 1 al 4 de 4

Temas similares

  1. Comprar acceso Respuestas: 5
    Por Golem en el foro Sala de Charla
  2. Por SuperCoco en el foro Lenguajes de Programación
  3. acceso carpeta Respuestas: 1
    Por viciovirtual en el foro vBulletin 3 - Preguntas, Problemas y Soluciones
  4. Mascaras de acceso Respuestas: 3
    Por ZonaTv en el foro Archivos de vBulletin 3.0 - 3.7
  5. Por tresor en el foro Lenguajes de Programación
  1. #1
    Miembro especial Miembro de diamante Array Avatar de Jhonnyf
    Fecha de ingreso
    06 sep, 08
    Ubicación
    Dentro de mi
    Mensajes
    1,123
    Gustado
    42 Veces
    Me Gustan
    1 Veces

    Predeterminado Acceso a datos de Tablas, (query_first,query_read,query_write)

    Cuando estemos haciendo un archivo PHP o un Plugin, que es netamente codigo PHP, vBulletin nos ofrece 3 funciones para accesar a los datos, estos son:
    Código PHP:
    $vbulletin->db->query_first("SELECT");
    $vbulletin->db->query_read("SELECT");
    $vbulletin->db->query_read_slave("SELECT");
    $vbulletin->db->query_write("INSERT o UPDATE"); 
    Diferencias:

    query_first nos devuelve el primer resultado de la consulta en forma de un arreglo, es util si usas consultas que devuelven 1 sola fila como por ejemplo un conteo de registro o algun registro en especial
    Ejemplo:
    Código PHP:
    $usuario $vbulletin->db->query_first("SELECT *
                        FROM " 
    TABLE_PREFIX "user
                        WHERE userid=1"
    );
    echo 
    $usuario['userid'];
    echo 
    $usuario['username'];
    echo 
    $usuario['email'];
    //Etc de los demas campos 
    ***********************************************

    query_read
    y query_read_slave nos devuelve una coleccion de registros al que debemos recorrer para obtener cada registro
    Ejemplo:
    Código PHP:
    $usuario $vbulletin->db->query_read("SELECT * FROM " TABLE_PREFIX "user"); //todos los registros
    if ($vbulletin->db->num_rows($usuario) > 0//si hay 1 o más registros
    {
        
    $tabla '<table border="0">';
        
    $tabla .= '<tr><td class="tcat">Userid</td><td class="tcat">Nombre</td><td class="tcat">Correo</td></tr>';
        while (
    $reg_usuario $vbulletin->db->fetch_array($usuario)) //lleno $reg_usuario por cada usuario en los registros devueltos
        
    {
            
    $tabla .= '<tr><td class="alt1">'.$reg_usuario['userid'].'</td><td class="alt2">'.$reg_usuario['username'].'</td><td class="alt1">'.$reg_usuario['email'].'</td></tr>';
        }
        
    $tabla .= '</table>';
    }
    echo 
    $tabla//muestra todo una tabla con todos los usuarios del foro 
    Nota: query_read_slave usa una conexion esclava para las consultas, no la principal
    ***********************************************

    query_write no hay mucho que decir de esta funcion... basicamente se usa para hacer INSERTS o UPDATE de campos en tablas
    Código PHP:
    $vbulletin->db->query_write("UPDATE " TABLE_PREFIX "user SET
                    username = 'Nuevo Nick'
                    WHERE userid=1
                    "
    );
    //Actualizar un registro en la Base de datos 
    PD: TABLE_PREFIX es una costante definida en vBulletin que contiene el prefijo que has configurado para tu foro, es recomendable usarlo siempre ya que los nombres de tablas pueden varias de foro en foro (websites)


    ***********************************************

    Usuarios Avanzados: Hasta la version 3.8.4 (con la que se hizo este tutorial) las funciones (includes/class_core.php):

    • query_write
    • query_read
    • query_read_slave
    • query

    usan exactamente el mismo codigo, vBulletin mencionó que en un futuro (esperemos que en vB 4.0) si hagan la diferencia, asi que hay que ir acostumbrandonos nomás

  2. #2
    Miembro especial Miembro de diamante Array Avatar de Kas_Limon
    Fecha de ingreso
    13 ago, 08
    Mensajes
    2,093
    Gustado
    2 Veces
    Me Gustan
    0 Veces

    Predeterminado Re: Acceso a datos de Tablas, (query_first,query_read,query_write)

    tu si que sabes complacerme

    como siempre geniales tus tutos

  3. #3
    Miembro especial Miembro de diamante Array Avatar de Ricardo Núñez
    Fecha de ingreso
    17 dic, 08
    Ubicación
    San Diego, CA
    Mensajes
    2,057
    Gustado
    423 Veces
    Me Gustan
    148 Veces

    Predeterminado Re: Acceso a datos de Tablas, (query_first,query_read,query_write)

    Jhonnyf tu Siempre y tus Tutos que siempre se necesitam
    Cita Iniciado por Kas_Limon Ver mensaje
    tu si que sabes complacerme
    Eso sono un poco comprometedor xD es broma

  4. #4
    Miembro especial Miembro de plata Array Avatar de halcon00
    Fecha de ingreso
    30 ene, 10
    Ubicación
    Spain
    Mensajes
    71
    Gustado
    1 Veces
    Me Gustan
    14 Veces

    Question Re: Acceso a datos de Tablas, (query_first,query_read,query_write)

    Jhonnyf, En primer lugar gracias por compartir tus conocimientos con los novatos como yo.

    Utilizando tu codigo queria sacar una lista de los usuarios VIP y su fecha de VIP guardada en un campo de perfil (field15)

    Mi problema es que no se como unir la informacion para que la presente , vamos que no se como anidar los dos while. Si puedes hecharme una mano.

    Esto es lo que tengo del codigo, veras que el segundo while lo tengo comentado.

    Código PHP:
    <?
    require_once('./global.php');

    // Presenta Usuarios 
    $usuario $vbulletin->db->query_read("SELECT * FROM " TABLE_PREFIX "user WHERE usergroupid = 8"); //todos los registros   usergroupid = 8 VIP  (9 = VIP+)
    $fechaVip $vbulletin->db->query_read("SELECT * FROM " TABLE_PREFIX "userfield"); //todos los registros de campos perfil personales
    if ($vbulletin->db->num_rows($usuario) > 0//si hay 1 o más registros
    {
       
    $tabla '<table border="1">';
       
    $tabla .= '<tr><td class="tcat">Userid</td><td class="tcat">Nombre</td><td class="tcat">Correo</td><td class="tcat">Fecha VIP</td></tr>';
     
       while (
    $reg_usuario $vbulletin->db->fetch_array($usuario))//lleno $reg_usuario por cada usuario en los registros devueltos
       
       //while($reg_fechaVip = $vbulletin->db->fetch_array($fechaVip)) //lleno $reg_fechaVip por cada usuario en los registros devueltos
        
    {
     
             
    $tabla .= '<tr><td class="alt1">'.$reg_usuario['userid'].'</td><td class="alt2">'.$reg_usuario['username'].'</td><td class="alt1">'.$reg_usuario['email'].'</td><td class="alt2">'.$reg_fechaVIP['field15'].'</td></tr>';
     
     }
        
    $tabla .= '</table>';
    }
    echo 
    $tabla//muestra todo una tabla con todos los usuarios del foro
    De antemano muchas gracias.