Crea sito

Pillole di WordPress – Prelevare e inserire uno o più valori da ed in una tabella non standard

| 4 marzo 2009 | 0 Comments

Ammettiamo di avere una nostra tabella all’interno del db di WordPress, per esempio di un nostro plugin e di voler fare tre cose su questa tabella.

  1. Estrarre una lista di valori.
  2. Estrarre un solo valore.
  3. Inserire una lista di valori.

Iniziamo dalla tabella. Facciamo caso di averne una dal nome wp_mind_visitors e prima di tutto di voler estrarre tutti i valori di alcune righe che corrispondono alla nostra ricerca.

wordpress_db_01

Come ricerca mettiamo di voler prendere i valori ip, os,browser e nation in cui nation è uguale a “IT” e browser è uguale a “MSIE 7.0”. La query SQL equivalente sarà la seguente:

“SELECT ip, os, browser, nation FROM wp_mind_visitors WHERE nation = ‘IT’ AND browser = ‘MSIE 7.0‘”

Prepariamo il codice php per WordPress per fare questa chiamata. Per prima cosa dobbiamo dichiarare il $wpdb, un array standard già contenente i parametri di collegamento al nostro db. poi tichiariamo il nome della nostra tabella assegnandolo ad una variabile, dopo la query in altra variabile ed infine eseguiamo la query ottenendo i risultati.

global $wpdb; //<– richiamiamo l’array di WordPress con i parametri del db

$table = wp_mind_visitors; //<– dichiariamo il nome della tabella in cui effettuare la ricerca

$query = “SELECT ip, os, browser, nation FROM $table WHERE nation = ‘IT’ AND browser = ‘MSIE 7.0′“; //<– dichiariamo la ricerca che vogliamo fare seguendo il costrutto SQL

$results = $wpdb->get_results($query, ARRAY_A); //<– effettuiamo la query nel db e assegnamo i risultati all’array vuoto $results

A questo punto non resta che rendere visualizzabile il contenuto dell’array $results. Ciò che vi è dentro sarà del tipo:

    [0] => Array
        (
            [ip] => 1327565721
            [os] = > Windows XP
            [browser] = > MSIE 7.0
            [nation] => IT
        )

    [1] => Array
        (
            [ip] => 1327598083
            [os] = > Windows XP
            [browser] = > MSIE 7.0
            [nation] => IT

        )
    ... etc etc

Quello che dobbiamo fare è semplicemente un ciclo che mostra i contenuti scorrendo tutto l’array. ed useremo il foreach().

foreach($results as $result) { //<– ogni “riga” dell’array $results verrà assegnata all’array $result
echo $result[‘ip’].”<br />”;

echo $result[‘os‘].”<br />”;

echo $result[‘browser‘].”<br />”;

echo $result[‘nation’].”<br />”;

}

A questo punto il risultato sarà stampato a video nella pagina.

Passiamo al secondo tipo di query che ci eravamo prefissati all’inizio. Obbiettivo: prendere il contenuto di una sola riga del db. Sarà praticamente tutto identico tranne che per due cosette. a) qualsiasi sia il numero dei results ottenuti con una query, quella presa sarà soltanto il primo risultato, gli altri saranno scartati. b) per stamparlo non serve il ciclo del foreach. Mettiamo, per esempio, sempre utilizzando la tabella precedente per comodità, di voler ottenere l’ ‘id’ di un determinato ip da noi fornito. Usiamo l’ip 1379305082″, quello che vogliamo quindi ottenere è “7”. La query da utilizzare sarà la seguente:

“SELECT id FROM wp_mind_visitors WHERE ip = ‘1379305082‘”

Il codice php WordPress sarà il seguente:

global $wpdb; //<– richiamiamo l’array di WordPress con i parametri del db

$table = wp_mind_visitors; //<– dichiariamo il nome della tabella in cui effettuare la ricerca

$query = “SELECT id FROM $table WHERE ip = ‘1379305082“; //<– dichiariamo la ricerca che vogliamo fare seguendo il costrutto SQL

$result = $wpdb->get_var($query); //<– effettuiamo la query nel db e assegnamo il risultato alla variabile vuota $result

echo $result.”<br />”; //<– stampiamo a video il contenuto della variabile, ovvero “7”

Per il terzo punto iniziale, ovvero l’inserimento di una lista di valori, il processo sarà simile. La query sarà:

“INSERT INTO $table (ip, os, browser, nation) VALUES (‘$ip’, ‘$os’, ‘$browser’, ‘$nation’)”;

Il contenuto delle variabili $ip, $os, $browser e $nation, naturalmente, lo avremo dichiarato prima di effettuare la query. Il codice php per WordPress sarà:

global $wpdb; //<– richiamiamo l’array di WordPress con i parametri del db

$table = wp_mind_visitors; //<– dichiariamo il nome della tabella in cui effettuare la ricerca

$ip = 1461033289;

$os = “Windows XP;

$browser = “MSIE 6.0;

$nation = “IT“;

$query = “INSERT INTO $table (ip, os, browser, nation) VALUES (‘$ip’, ‘$os’, ‘$browser’, ‘$nation’)”;

//<– dichiariamo l’inserimento che vogliamo fare seguendo il costrutto SQL

$insert = $wpdb->query($query) //<– effettuiamo la query di insert

In questo caso da stampare a video non ci sarà nulla e il risultato sarà l’inserimento di una 11 riga (qualora il campo id sia per preimpostazione della tabella autoincrementato) simile a questa:

wordpress_db_02

E’ tutto! Buona fortuna!

Link funzioni: http://codex.wordpress.org/Function_Reference/wpdb_Class

VN:F [1.9.22_1171]
Rating: 10.0/10 (2 votes cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)
Pillole di WordPress - Prelevare e inserire uno o più valori da ed in una tabella non standard, 10.0 out of 10 based on 2 ratings

Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Category: Informatica

About the Author ()

Leave a Reply