Afișarea datelor dintr-un tabel personalizat
Caut câteva sfaturi despre cum să gestionez următoarea situație:
În trecut (cu mult timp în urmă) când lucram ocazional cu php/mysql, era relativ ușor să extragi/afișezi date dintr-un tabel folosind antetul tabelului în interogarea "WHERE". (adică SELECT * FROM 'table' WHERE 'column-name' = 'query'). Tabelele aveau coloane pentru fiecare bucată de informație precum email, telefon, adresă etc.
În prezent lucrez la un proiect care folosește un tabel instalat în baza de date de către un plugin, unde vreau să folosesc o parte din acele date într-o altă zonă a site-ului care nu are legătură cu plugin-ul.
În loc să aibă o coloană pentru fiecare tip de informație ca mai sus, acest tabel are:
- o coloană user_id care este legată de contul wordpress al utilizatorului
- o coloană meta_key. Această coloană are intrări precum adresă, număr de telefon etc. (acestea ar fi numele coloanelor în exemplul meu de mai sus)
- o coloană meta_value. Această coloană conține datele pentru fiecare tip de meta_key (adresa propriu-zisă, numărul de telefon etc.)
Ceea ce vreau să fac este să obțin valoarea pentru fiecare element pentru un anumit user_id și să precompletez un formular care este trimis.
Deci ID-ul utilizatorului, numele și emailul sunt extrase din tabelul users al bazei de date WP când sunt autentificați folosind funcția wp_get_current_user(). Odată ce am ID-ul utilizatorului, vreau să afișez adresa, numărul de telefon etc. ale acelui utilizator din celălalt tabel în formularul meu, dar sunt blocat la interogarea sql
Ceva de genul:
global $wpdb;
$current_user = wp_get_current_user();
$uid = $current_user->ID;
$table = $wpdb->prefix . 'plugin-table';
Apoi vreau să selectez adresa și numărul de telefon etc. ale utilizatorului și să le afișez ca bucăți individuale de informații, deci:
$mobile
$address
$studentnumber
astfel încât să le pot folosi unde am nevoie
Care ar fi modul corect de a interoga baza de date pentru a obține informațiile pe care le caut?
Sper că totul are sens...

Deci, următorul cod funcționează:
$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/>';
}
totuși simt că 'foreach' nu este cu adevărat sintaxa/terminologia corectă de utilizat?

global $wpdb;
$table_name = $wpdb->prefix . 'your_table_name'; // Numele tabelului cu prefixul WordPress
$results = $wpdb->get_results(
"SELECT * FROM $table_name" // Interogare SQL pentru a selecta toate datele din tabel
);
foreach($results as $row) // Parcurgem fiecare rând din rezultate
{
echo $row->id; // Afișăm ID-ul fiecărui rând
}

OK, deci poate explicația de mai sus nu a fost foarte clară?
Am făcut progrese și acum am următorul cod:
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;
}
Context rapid:
- Coloana um_key reprezintă tipul de date (telefon, adresă, etc.)
- um_value este coloana cu informația propriu-zisă
Dacă elimin AND 'um_key' = 'student_number'
din interogarea SQL, rezultatul va afișa toate rândurile care au user_id corect, dar eu doresc să afișez doar rândul specific care are um_key 'student_number'
Orice ajutor este binevenit
