Foros del Web » Programando para Internet » PHP »

Leer datos de dos tablas de WP

Estas en el tema de Leer datos de dos tablas de WP en el foro de PHP en Foros del Web. Hola foro! Necesito hacer una consulta a la base de datos asociando dos tablas de WP: wp_posts y wp_postmeta. Los pongo un poco en contexto: ...
  #1 (permalink)  
Antiguo 09/08/2016, 09:05
Avatar de fakulicious  
Fecha de Ingreso: mayo-2008
Ubicación: Mendoza
Mensajes: 140
Antigüedad: 15 años, 11 meses
Puntos: 2
Leer datos de dos tablas de WP

Hola foro!
Necesito hacer una consulta a la base de datos asociando dos tablas de WP: wp_posts y wp_postmeta.

Los pongo un poco en contexto: estoy desarrollando la web de un evento, con el tema Gather, que viene con un plugin para que las personas se registren en el evento. Pero este plugin no trae ningún módulo donde pueda visualizar o exportar en forma de listado o tabla todos los inscriptos al evento.

Este plugin crea un post con el post_type "cth_eventres", y en la tabla wp_postmeta guarda toda la información de la persona (nombre, apellido, email, etc)

Por ejemplo:

wp_posts
ID: 2222
post_type: cth_eventres

wp_postmeta
meta_id: 1111
post_id: 2222
meta_key: pur_fname
meta_value: Juan

meta_id: 1112
post_id: 2222
meta_key: pur_lname
meta_value: Perez

meta_id: 1113
post_id: 2222
meta_key: pur_email
meta_value: [email protected]

Es decir, por cada persona que se inscribe al evento crea un registro en la tabla wp_posts y varios registros (uno por cada dato de la persona) en la tabla wp_postmeta.

Lo que necesito hacer es un script en PHP, por fuera del Wordpress, que recorra todas las personas que se registraron en wp_posts y que por cada una me muestre los datos de esa persona.

(ACLARO: solo utilicé nombre, apellido y email para ejemplificar, pero los datos son muchos más)

Ya intenté haciendo dos consultas, con un while dentro de otro, y no funciona. Este es el código, seguro está mal.

Código PHP:
<?php

$link
=mysql_connect("localhost","usuario","pass");

mysql_select_db("basededatos",$link) OR DIE ("Error: No es posible establecer la conexión");

$consulta mysql_query("SELECT ID FROM wp_post WHERE post_type='cth_eventres'"$link);
echo 
'<ul>';
while(
$row mysql_fetch_array($consulta)){
    
$id_registro $row[0];
    
$datos mysql_query("SELECT meta_key, meta_value FROM wp_postmeta WHERE post_id = $id_registro;"$link);
    while(
$campo mysql_fetch_array($datos)){
        echo 
'<li>Nombre: ';
        if(
$campo[0] == 'pur_fname'){
            echo 
$campo[1];
        }
        echo 
'</li>';
    }
}
echo 
'</ul>';

?>
¿Alguna idea?

Gracias foro!
__________________
Facundo
http://www.creactivo.com.ar
  #2 (permalink)  
Antiguo 09/08/2016, 14:28
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Leer datos de dos tablas de WP

Tu post me parece un poco mal expuesto y no nos indicas que error concreto te da o cual es el problema concreto.

Por otro lado si va a ser algo puntual y no reutilizable, y sabes que el post_id para todos los registros va a ser el mismo, no necesitas hacer 2 consultas con dos bucles.

El primer bucle es prescindible, por que entiendo que solo necesitas o esperas un registro de la primera consulta ademas le añadiria un limit 1.

Con esto te valdria para la primera consulta en lugar del bucle.
Código PHP:
Ver original
  1. $row = mysql_fetch_array($consulta);

mysql_fetch_array te recupera los datos como un array asociativo y numerico
puedes utilizar los nombres de las columnas para aceder a los datos, ya que de esta forma es mas facil visualizar el codigo.

Código PHP:
Ver original
  1. // en lugar de
  2. $row[0];
  3. //utiliza
  4. $row['nombre_de_la_columna'];
__________________
Unset($vida['malRollo']);

Etiquetas: mysql, registro, select, sql, tabla, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:19.