Visualizzazione dei dati da una tabella personalizzata

26 apr 2020, 07:41:02
Visualizzazioni: 23.7K
Voti: 1

Sto cercando un consiglio su come gestire questa situazione:

In passato (molto tempo fa) quando facevo occasionalmente lavori con php/mysql, era relativamente facile estrarre/visualizzare dati da una tabella usando l'intestazione della tabella nella query "WHERE" (es. SELECT * FROM 'table' WHERE 'column-name' = 'query'). Le tabelle avevano colonne per ogni tipo di informazione come email, telefono, indirizzo, ecc.

Attualmente sto lavorando su un progetto che utilizza una tabella installata nel database da un plugin dove voglio utilizzare alcuni di quei dati in un'area diversa del sito non correlata al plugin.

Invece di una colonna per ogni tipo di informazione come sopra, questa tabella ha:

  • una colonna user_id che è collegata all'account WordPress dell'utente
  • una colonna meta_key. Questa colonna ha voci come indirizzo, numero di telefono, ecc. (questi sarebbero i nomi delle colonne nel mio esempio precedente)
  • una colonna meta_value. Questa colonna contiene i dati per ogni tipo di meta_key (l'indirizzo effettivo, il numero di telefono, ecc.)

Quello che voglio fare è ottenere il valore di ogni elemento per un particolare user_id e pre-compilare un modulo che viene inviato.

Quindi il loro ID utente, nome ed email vengono estratti dalla tabella users del database WP quando sono loggati usando la funzione wp_get_current_user(). Una volta che ho l'ID utente, voglio visualizzare l'indirizzo, il numero di telefono ecc. di quell'utente dalla altra tabella nel mio modulo ma sono bloccato sulla query sql

Qualcosa del genere:

global $wpdb;    
$current_user = wp_get_current_user();
$uid = $current_user->ID;

$table = $wpdb->prefix . 'plugin-table';

Poi voglio selezionare l'indirizzo e il numero di telefono ecc. dell'utente e visualizzarli come singole informazioni, quindi:

$mobile
$address
$studentnumber

in modo da poterli utilizzare dove necessario

Qual è il modo corretto per interrogare il database per ottenere le informazioni che sto cercando?

Spero che tutto abbia senso...

1
Commenti

qualcuno…? Devo spiegarlo meglio?

Daniel Florian Daniel Florian
28 apr 2020 08:10:57
Tutte le risposte alla domanda 3
0

Quindi, il seguente codice funziona:

$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/>';
}

anche se sento che 'foreach' non è proprio la sintassi/terminologia corretta da utilizzare?

28 apr 2020 12:01:42
0
global $wpdb;

// Ottiene il nome della tabella con il prefisso di WordPress
$table_name = $wpdb->prefix . 'your_table_name';

// Esegue la query per selezionare tutti i record dalla tabella
$results = $wpdb->get_results(

    "SELECT * FROM $table_name"

);

// Cicla attraverso i risultati e mostra l'ID di ogni riga
foreach($results as $row)
{

    echo $row->id;

}
7 ott 2020 23:15:31
0

OK, forse quanto sopra non era formulato molto bene?

Da allora ho fatto qualche progresso come segue:

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;
}

Contesto rapido:

  • La colonna um_key contiene il tipo di dato (telefono, indirizzo, ecc.)
  • um_value è la colonna con l'informazione

Se rimuovo AND 'um_key' = 'student_number' dalla query SQL, il risultato mostrerà tutte le righe con il corretto user_id, ma io sto cercando di visualizzare solo la riga specifica che ha um_key uguale a 'student_number'

Ogni aiuto è apprezzato

28 apr 2020 10:44:11