Mostrar datos desde una tabla personalizada
Solo busco un poco de consejo sobre cómo manejar esto:
En el pasado (hace mucho tiempo) cuando hacía trabajo ocasional con php/mysql, era relativamente fácil extraer/mostrar datos de una tabla usando el encabezado de la tabla en la consulta "WHERE". (es decir, SELECT * FROM 'table' WHERE 'column-name' = 'query'). Las tablas tendrían columnas para cada pieza de información como email, teléfono, dirección, etc.
Actualmente estoy trabajando en un proyecto usando una tabla que fue instalada en la base de datos por un plugin donde quiero usar algunos de esos datos en una área diferente del sitio no relacionada con el plugin.
En lugar de una columna para cada tipo de información como arriba, esta tabla tiene
- una columna user_id que está vinculada a la cuenta de WordPress del usuario
- una columna meta_key. Esta columna tiene entradas como dirección, número de teléfono, etc. (estos serían los nombres de columna en mi ejemplo anterior)
- una columna meta_value. Esta columna contiene los datos para cada tipo de meta_key (la dirección actual, número de teléfono, etc.)
Lo que busco hacer es obtener el valor de cada elemento para un user_id particular y pre-llenar un formulario que se envía.
Así que su ID de Usuario, Nombre y email se obtienen de la tabla users de la base de datos de WP cuando están conectados usando la función wp_get_current_user(). Una vez que tengo el ID de Usuario, quiero mostrar la dirección, número de teléfono etc. de ese usuario desde la otra tabla en mi formulario pero estoy atascado en la consulta sql
Algo como:
global $wpdb;
$current_user = wp_get_current_user();
$uid = $current_user->ID;
$table = $wpdb->prefix . 'plugin-table';
Luego quiero seleccionar la dirección y número de teléfono etc. del usuario y mostrarlos como piezas individuales de información, así:
$mobile
$address
$studentnumber
para poder usarlos donde sea necesario
¿Cuál sería la forma correcta de consultar la base de datos para obtener la información que estoy buscando?
Espero que todo tenga sentido...
Entonces, lo siguiente funciona:
$result = $wpdb->get_results ( "SELECT * FROM $studentTable WHERE `user_id` = $uid AND `um_key` LIKE 'student_number' ");
foreach($result as $studentNumber){
echo $studentNumber->um_value.'<br/>';
}
aunque siento que 'foreach' no es realmente la sintaxis/terminología correcta para usar?

De acuerdo, tal vez lo anterior no estaba muy bien expresado.
Desde entonces he avanzado un poco de la siguiente manera:
global $wpdb;
$current_user = wp_get_current_user();
$uid = $current_user->ID;
$fname = $current_user->first_name . " " . $current_user->last_name;
$email = $current_user->user_email;
$studentTable = $wpdb->prefix.'um_metadata';
$result = $wpdb->get_results ( "SELECT * FROM $studentTable WHERE `user_id` = $uid AND 'um_key' = 'student_number' ");
foreach($result as $studentNumber){
echo $studentNumber->um_value;
}
Contexto rápido:
- La columna um_key es el tipo de dato (teléfono, dirección, etc.)
- um_value es la columna con la información
Si elimino AND 'um_key' = 'student_number'
de la consulta SQL, el resultado mostrará todas las filas que tengan el user_id correcto, pero solo estoy buscando mostrar específicamente la fila que tenga el um_key 'student_number'
Cualquier ayuda es apreciada
