Script php estrazione dati da db per tasker

Considerando una tabella nel db fatta così:

Tabella interventi
id | id_cliente	| tipo_intervento	| descrizione  
---------------------------------------------------
1 |	21	| 	a1 		| desc1 
2 | 	25	| 	a2 		| desc2 
3 | 	25 	| 	a3 		| desc3 
4 | 	29 	| 	a4 		| desc4 
5 | 	30 	| 	a5 		| desc5 


Questo è lo script php

define( 'DB_HOST', 'localhost' );
define( 'DB_USER', 'user' );
define( 'DB_PASSWORD', 'pass');
define( 'DB_NAME', 'nomedb' );

//connessione al db
$conn_id = @mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die ('KO|500|problema temporaneo del server (Internal Server Error)1');
@mysql_select_db(DB_NAME, $conn_id) or die ('KO|500|problema temporaneo del server (Internal Server Error)2');
// @mysql_query("SET NAMES '".DB_CHARSET."'", $conn_id) or die ('KO|500|problema temporaneo del server (Internal Server Error)3');

$query = "SELECT * FROM interventi WHERE id_cliente = 25";

$result = mysql_query($query, $conn_id);

while ($data = mysql_fetch_assoc($result)) {
	$arraydati[] = $data;
}

echo json_encode($arraydati);

questo il risultato dello script

[
	{"id":"2","id_cliente":"25","tipo_intervento":"a2","descrizione":"desc2"},
	{"id":"3","id_cliente":"25","tipo_intervento":"a3","descrizione":"desc3"}
]

Ed in fine questo è lo scriptlet

var httpd = global('HTTPD');
var jsonparsed = [];
jsonparsed = JSON.parse(httpd);
setGlobal('TIPO', jsonparsed[0].tipo_intervento);

La differenza è nel tipo di dato generato, nell’esempio di facebook il risultato è un array unidimenzionale invece il risultato di quella query è un array bidimensionale.
Infatti vengono estratte 2 righe dalla tabella, in ogni caso anche se il risultato è una sola riga, per come è strutturato lo script php, lo scriptlet funziona.
La differenza è nel jsonparsed[0].
0 per la prima riga, 1 per la seconda ecc.

Visualizzare i like di una pagina facebook in un widget con tasker

Questo task permette di avere il numero di facebook  likes di una pagina in un widget.
image

Per il widget sto usando Zooper pro ma è possibile utilizzare qualsiasi altra app che legga le variabili di tasker (uccw, minimalistic text, ecc. )

Il task può essere accoppiato ad un profilo di cron orario.
image

Fa una richiesta al server facebook, alla pagina http://graph.facebook.com/facebookpage, riceve il risultato in json. Uno scriptlet parsa i dati
image

ed in fine viene messo in una variabile per il widget.

I like è solo una delle molte informazioni che la pagina graph di facebook restituisce.

Questo è uno screen del task
image

Questa è la descrizione testuale del task
Facebook Like (25)
A1: Ottieni HTTP [ Server:Porta:http://graph.facebook.com/facebookpage Percorso: Attributi: Cookies: User Agent: Timeout:10 Tipo Mime:text/plain File di Uscita: Fidati di qualsiasi certificato:Off ]
A2: JavaScriptlet [ Codice:var httpd = global(‘HTTPD’);
var jsonparsed =[];
jsonparsed = JSON.parse(httpd);
setGlobal(‘LIKES’, jsonparsed.likes); Librerie: Auto Uscita:On Timeout (Secondi):45 ]
A3: Zooper Widget Pro Variable [ Configurazione:#TLIKES# = %LIKES Pacchetto:org.zooper.zwpro Nome:Zooper Widget Pro Variable Timeout (Secondi):0 ]

Questo invece è l’xml

<TaskerData sr="" dvi="1" tv="4.6u2m">
	<Task sr="task25">
		<cdate>1355744034829</cdate>
		<edate>1423088721783</edate>
		<id>25</id>
		<nme>Facebook Like</nme>
		<pri>10</pri>
		<Action sr="act0" ve="7">
			<code>118</code>
			<Str sr="arg0" ve="3">http://graph.facebook.com/facebookpage</Str>
			<Str sr="arg1" ve="3"/>
			<Str sr="arg2" ve="3"/>
			<Str sr="arg3" ve="3"/>
			<Str sr="arg4" ve="3"/>
			<Int sr="arg5" val="10"/>
			<Str sr="arg6" ve="3">text/plain</Str>
			<Str sr="arg7" ve="3"/>
			<Int sr="arg8" val="0"/>
		</Action>
		<Action sr="act1" ve="7">
			<code>129</code>
			<Str sr="arg0" ve="3">var httpd = global('HTTPD');
var jsonparsed =[];
jsonparsed = JSON.parse(httpd);
setGlobal('LIKES', jsonparsed.likes);</Str>
			<Str sr="arg1" ve="3"/>
			<Int sr="arg2" val="1"/>
			<Int sr="arg3" val="45"/>
		</Action>
		<Action sr="act2" ve="7">
			<code>31664</code>
			<Bundle sr="arg0">
				<Vals sr="val">
					<com.twofortyfouram.locale.intent.extra.BLURB>#TLIKES# = %LIKES</com.twofortyfouram.locale.intent.extra.BLURB>
					<com.twofortyfouram.locale.intent.extra.BLURB-type>java.lang.String</com.twofortyfouram.locale.intent.extra.BLURB-type>
					<net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS>org.zooper.zw.tasker.var.extra.STRING_TEXT</net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS>
					<net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type>java.lang.String</net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type>
					<net.dinglisch.android.tasker.subbundled>true</net.dinglisch.android.tasker.subbundled>
					<net.dinglisch.android.tasker.subbundled-type>java.lang.Boolean</net.dinglisch.android.tasker.subbundled-type>
					<org.zooper.zw.tasker.var.extra.INT_VERSION_CODE>1</org.zooper.zw.tasker.var.extra.INT_VERSION_CODE>
					<org.zooper.zw.tasker.var.extra.INT_VERSION_CODE-type>java.lang.Integer</org.zooper.zw.tasker.var.extra.INT_VERSION_CODE-type>
					<org.zooper.zw.tasker.var.extra.STRING_TEXT>%LIKES</org.zooper.zw.tasker.var.extra.STRING_TEXT>
					<org.zooper.zw.tasker.var.extra.STRING_TEXT-type>java.lang.String</org.zooper.zw.tasker.var.extra.STRING_TEXT-type>
					<org.zooper.zw.tasker.var.extra.STRING_VAR>LIKES</org.zooper.zw.tasker.var.extra.STRING_VAR>
					<org.zooper.zw.tasker.var.extra.STRING_VAR-type>java.lang.String</org.zooper.zw.tasker.var.extra.STRING_VAR-type>
				</Vals>
			</Bundle>
			<Str sr="arg1" ve="3">org.zooper.zwpro</Str>
			<Str sr="arg2" ve="3">Zooper Widget Pro Variable</Str>
			<Int sr="arg3" val="0"/>
		</Action>
		<Img sr="icn" ve="2">
			<cls>com.facebook.katana.LoginActivity</cls>
			<pkg>com.facebook.katana</pkg>
		</Img>
	</Task>
</TaskerData>