APPUNTI

Modulo di ricerca di un input su tabelle concatenate

Mi sono imbattuto nella necessità di effettuare una ricerca concatenate su tabelle wodpress e dopo qualche minuto ho partorito il topolino in php 🙂

global $wpdb; // carico le variabili globali di wp per il collegamento al db
$tabpost=$wpdb->prefix."posts", tabmeta=$wpdb->prefix."postmeta"; // imposto il nome delle tabelle
$ricerca="rossi"; // la mia ricerca 
// preparo la stringa SQL da eseguire
stringa_sql ="
SELECT 
	post.ID, 
	data.meta_value, 
	tel.meta_value,
	nom.meta_value, cog.meta_value
FROM $tabpost AS post
	INNER JOIN $tabmeta AS data ON (post.ID = data.post_id AND data.meta_key = 'nascita')
	INNER JOIN $tabmeta AS tel ON (post.ID = tel.post_id AND tel.meta_key = 'telefono')
	INNER JOIN $tabmeta AS nom ON (post.ID = nom.post_id AND nom.meta_key = 'nome')
	INNER JOIN $tabmeta AS cog ON (post.ID = cog.post_id AND cog.meta_key = 'cognome')
	WHERE post.post_type='cliente' and post.post_status='publish' 
	AND (data.meta_value LIKE '%". ricerca."%'
		OR tel.meta_value LIKE '%".$ricerca."%' OR nom.meta_value LIKE '%". $ricerca."%' OR cog.meta_value LIKE '%". $ricerca."%' OR CONCAT(nom.meta_value,' ', cog.meta_value) LIKE '%".$ricerca."%' OR CONCAT(cog.meta_value,' ', nom.meta_value) LIKE '%".$ricerca."%' OR
		post.ID = '".$_REQUEST['ricerca']."'
		)
	
	ORDER BY post.ID
";

$wpdb->show_errors(); // mi preparo a memorizzare eventuali errori
$my_ricerca= $wpdb->get_results($stringa_sql); // eseguo la stringa SQL
$wpdb->print_error(); 
print_r($my_ricerca); // leggo a video array generato
// volendo posso impostare un ciclo foreach per lavorare i record
foreach ($my_ricerca as $nominativo){
   //... leggo i campi dell'array
}