Joomla.it Forum
Joomla! 3 => Joomla! 3 => : samurai.sette 22 Nov 2015, 19:06:33
-
Ciao a tutti.
Ho un problema con il mio sito e vorrei chiedere il vostro aiuto, e non sono riuscito a trovare una soluzione.
Come da oggetto dovrei inserire in un articolo un grafico Google chart. Voglio subito sottolineare che i dati presenti nel grafico non sono "fissi" ma cambiano in continuazione e quindi si trovano in un database MySQL. Pertanto ho scritto un codice PHP/HTML che mi permette di visualizzare tale grafico. Se questo codice lo avvio all'esterno di Joomla funziona perfettamente, ma se lo inserisco all'interno di un articolo di Joomla il grafico non si vede!!!
Secondo voi quale può essere il problema?
Ringrazio anticipatamente tutti.
Ciao.
A chiunque fosse interessato a leggere il codice
<?php
require_once ("sessioni.php");
require_once ("testlogin.php");
$user = $_SESSION['username'];
$con=mysql_connect("localhost","root","") or die("Errore di connessione con il database!!!!");
mysql_select_db("monitoraggio", $con);
$sql="SELECT *, COUNT(temperatura) AS 'count' FROM $user GROUP BY id";
$sth = mysql_query($sql) or die('Query fallita: ' . mysql_error());
$rows = array();
//flag is not needed
$flag = true;
$table = array();
$table['cols'] = array(
array('label' => 'id', 'type' => 'string'),
array('label' => 'temperatura', 'type' => 'number')
);
$rows = array();
if ($sth) {
while($r = mysql_fetch_assoc($sth)) {
$temp = array();
$temp[] = array('v' => (string) $r['id']);
$temp[] = array('v' => (int) $r['temperatura']);
$rows[] = array('c' => $temp);
}
}
$table['rows'] = $rows;
$jsonTable = json_encode($table);
?>
<html>
<head>
<script type="text/javascript" src="[url=https://www.google.com/jsapi]https://www.google.com/jsapi[/url]"></script>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
google.load("visualization", "1.1", {packages:["line"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable(<?=$jsonTable?>);
var options = {
chart: {
title: 'Monitoraggio',
subtitle: 'Acquisizione di prova',
}
};
var chart = new google.charts.Line(document.getElementById('linechart_material'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="linechart_material" style="width: 600px; height: 350px;"><>
<a href="logout.php">Chiudi sessione
</body>
</html>
-
Ciao benvenuto sul forum, è normale l'editor di joomla "tronca" i codici per ragioni di sicurezza, per inserire il codici puoi disattivare l'editor mettendo su nessun editor in configurazione globale o usare l'ottimo plugin sourcerer (http://extensions.joomla.org/extension/sourcerer), una volta installato sotto l'editor troverai il pulsante inserisci codice nella finestra che si apre inserisci il tuo codice tra i tag {source}qui_il_tuo_codice{/source} eliminando il codice di esempio, cosi il codice verrà eseguito.
Per favore quando inserisci codici nei post qui sul forum usa il tag code con il tasto apposito # che vedi nell'editor selezionando il codice da mostrare grazie :)
-
Per cortesia non togliere i tag code che ho rimesso per una maggiore leggibilità del tuo post, grazie.
-
Ciao samurai.sette,
prova anche questa estensione per inserire i grafici di Google in Joomla:
http://extensions.joomla.org/extensions/extension/living/education-a-culture/ja-google-charts
-
Ciao Tomtom aveva eliminato il tag code? ciao Alex, anche io l'avevo vista quella estensione ed anche quella di SP sai se questo Plugin fa la stessa cosa http://extensions.joomla.org/extensions/extension/living/education-a-culture/jb-googletrends o è solo per dati di google?
-
no, jb-googletrends è solo per visualizzare i google trends delle ricerche non per visualizzare i propri dati con le API dei grafici di Google
-
Ciao a tutti e grazie mille per le risposte. Innanzitutto scusate se ho scritto male il post.
Vi spiego come ho proceduto:inizialmente avevo inserito il codice nell'editor di joomla (ovviamente all'interno del tag code) ma non funziona; poi avevo provato il plugin sourcer (consigliato anche da Red) ma in questo caso il body del sito web resta bianco e il grafico non si vede.
Per quanto riguarda le due estensioni che mi avete consigliato andrebbero anche bene, ma il problema è che non si collegano ai database MySql e per me questo è fondamentale.
Consigli?
Ciao.
-
sei sicuro che ja-google-charts non si collega ad una sorgente dati esterna?
Mi pare di ricordare che sia possibile indicare una url ad un semplice file csv, nel loro esempio utilizzano anche un foglio di calcolo dinamico ospitato su google drive.
-
ciao alexandex.grazie per la risposta.
Ricordi bene, ma per me sarebbe importante che l'applicazione si collegasse direttamente con il database MySql e non stare ogni volta a creare il file.
Ti spiego il perchè: il mio database MySql è collegato direttamente con un macchinario e ne riceve in continuazione dati; quindi l'applicazione deve collegarsi direttamente al database MySql per trasformare i dati in grafico. le due applicazioni che mi avete consigliato, da quello che ho capito, richiedono per forza la selezione di un file e questo mi creerebbe non pochi problemi. è per questo motivo che ho scritto un codice che mi permette di collegare il database con i grafici di google;l'unico problema è che all'interno di joomla non vuole proprio funzionare...
Consigli?
Ciao.
-
puoi provare a dare in pasto al grafico un file php o altro che genera in automatico il file CSV aggiornato in tempo reale.
-
Prova a modificare i path dei file che richiami nel codice, se nella root vanno bene, quando gira nell'articolo il path cambia in relazione a dove viene eseguito il php.
-
Ciao ragazzi, grazie per i consigli. Provo entrambe le soluzioni e vi faccio sapere. Ciao, grazie.
-
Ciao ragazzi.
Ho provato i vostri consigli ma niente, non sono riuscito a risolvere. Ma ho pensato una cosa e vorrei chiedervi: dato che il grafico funziona perfettamente al di fuori di joomla, è possibile che sia joomla stesso che mi "blocca" il codice che inserisco e quindi impedisce la sua visualizzazione? Se sì, si può modificare qualche impostazione di joomla?
Ciao, grazie.
-
non diventarci matto, se la tua pagina html funziona esternamente allora includila nell'articolo con un modulo wrapper
-
nemmeno inserendo il codice con sourecerer?
-
Ciao a tutti.
Il codice che ho scritto l'ho provato a inserire sia con il "codice sorgente" di joomla che con sourecerer ma niente, non ne vuole sapere di funzionare. Funziona solo esternamente a joomla. Voglio però precisare che il codice è per metà in php (scritto da me) e per metà in html (fornito da google). Ho notato anche una cosa: se inserisco solo il codice html fornito da google ed indico dei dati fissi il grafico si vede!!!
Comincio a pensare che joomla non permette la connessione php-mysql, e per me questo è fondamentale. Se ciò è vero rimango molto deluso perchè l'ho sempre ritenuto un ottimo programma facile da usare.
Cosa ne pensate?
Ciao.
-
Non sono espertissimo di queste cose, anzi per niente, ma non penso sia joomla ad impedire conessioni a db mysql, potresti provare plotalot (http://extensions.joomla.org/extension/plotalot) che nella descrizione dice
Query the local site database or any other MySql database
o fare come ha suggerito alexred senza impazzire troppo metti il tuo file in wrapper
-
Joomla coi suoi file si collega al suo db, se tu inserisci file esterni che debbono collegarsi a db esterni joomla non c'entra per nulla. Hai verificato i path quando inserisci il codice nell'articoolo questi cambiano. verifica con firebug e firefox se le librerie e tutti i file esterni che chiami dal tuo codice vengono caricate.
-
Ciao tomtomeight.
Ho provato a fare come mi hai detto tu, ma il codice php ha una peculiarità: se provassi a visualizzare il suo codice tramite un qualsiasi browser e/o programma, semplicemente non leggerei nulla perchè il php non permette di leggere il suo codice, e in parte è quello che è successo a me.
Quindi non sono in grado di dire se le librerie e i file esterni vengono caricati, ma io credo di sì perchè lo stesso codice funziona perfettamente all'esterno a joomla.
Arrivato a questo punto le ipotesi sono due:
1) joomla non permette la connessione tra php e mysql, e se questo è vero rimango sempre più deluso in quanto questo programma è basato proprio sul linguaggio php e sui database mysql!!!
2) joomla per qualche oscuro motivo non mi visualizza il grafico
Ora non mi resta che provare il modulo wrapper ma non so come funziona e non ho trovato nessuna guida. Qualcuno mi sa indirizzare?
Ciao, grazie
-
Non sono d'accordo, joomla non c'entra con l'impedire la lettura di un db esterno. Ho in alcuni casi anche io utilizzato codice in articoli senza utilizzare plugin e altro e l'unico problema che ho riscontrato è stato dover rivedere il path dei richiami ai file esterni, magari prova a mettere url assoluti. Comunque puoi certamente verificare se le librerie esterne vengono caricate, io lo verifico con firebug basta attivarlo e leggere l'html nella sezione head
-
Ciao a tutti. Niente da fare!!! Joomla non ne vuole proprio sapere di mostrare il mio benedetto grafico; ho anche provato un modulo wrapper e non funziona; ho provato a mettere url assoluti ed idem.
Ho provato a verificare se le librerie esterne vengono caricate o meno ma come ho già spiegato in precedenza il codice che ho scritto è per metà in php e per metà in html. La particolarità del php è che non dà la possibilità di leggere il suo codice, quindi non sono in grado di fare questa verifica; comunque sono certo di si perchè ho provato a cambiare il nome del database mettendo un nome inventato e mi ha dato subito un errore.
A questo punto l'unica spiegazione logica è proprio quella che sostenevo in precedenza e cioè che è joomla stesso che per qualche motivo oscuro mi impedisce di visualizzare il grafico (probabilmente per motivi di sicurezza interna).
Se qualcuno ha un idea o suggerimento sarei molto grato.
Ciao.
-
il codice che ho scritto è per metà in php e per metà in html. La particolarità del php è che non dà la possibilità di leggere il suo codicemotivi di sicurezza interna).
Ti fai delle idee sbagliate, la particolarità del php è che genera codice html che puoi benissimo leggere, io ti ho invitato a leggere le librerie .js con firebug, per verificare se vengono caricate, ma tu non ci provi nemmeno forte delle tue errate convinzioni.
Fai questo sforzo e con firefox leggi cosa viene caricato, le librerie stanno nella sezione head
-
Ciao tomtomeight. Scusa se non ho risposto in questi giorni ma sono stato un pochino impegnato.
Ho fatto come mi hai detto e per non spiegarmi male ho allegato una immagine .jpg per mostrarti cosa è contenuto nella sezione head.
Ma non ho capito una cosa: come faccio a capire se una libreria viene caricata oppure no? Da dove lo vedo?
Ciao.
-
Lo vedi dai percorsi e aprendo le freccette +.
Se vedi il percorso ed aprendo il + vedi pure il codice allora significa che è stato caricato se vedi il percorso ma non il codice allora hai sbagliato path.
-
Ciao tomtomeight.
Ho aperto le freccette e credo che sia ok, ma non sono sicuro e ti chiederei un favore: puoi osservare per un attimo le due immagini che ho postato e dirmi se ho effettivamente ragione?
Grazie, ciao.
-
Da tab mi e difficile controllare ma tu devi cercare i file che vengono richiesti dal codice php che hai messo nell'articolo. Se metti un link al sito magari domani da pc ci guardo.
-
Ciao tomtoeight.
Purtroppo non posso metterti il link perché il sito non è ancora online. Comunque ho ricontrollato con firebug e nella sezione head non ho trovato traccia dei file richiesti dal codice php.
Sarà questo il problema?
Eventualmente come correggo il path?
Ciao, grazie.
-
Sì se in firebug non trovi traccia significa che non vengono trovati come da path che hai inserito, è questo il problema che sto cercando di farti capire fin dall'inizio, essendoci passato. Prova ad inserire tante volte ../ prima del path che hai adesso fino a che i file vengono caricati e letti, inizi con ../file.js poi ../../file.js e così via ovviamente al posto di file.js metti il vero nome del file e se contenuto in qualche cartella metti pure quella.
In alternativa prova col pth assoluto, cioè richiami il file a partire da http:// eccetera lo consideri come se fosse un url esterno anche se non lo è.
-
Ciao tomtomeight.
Ho fatto come mi hai detto ma niente da fare, non funziona...
Ma ho notato una cosa: se nell'articolo inserisco soltanto il codice preso dal sito di google chart con punti "fissi", allora il grafico funziona perfettamente senza nessun tipo di problema!!!
Mha...
-
Ma hai attivato da editor JCE consenti codice php?
-
Ciao, questo non l'ho fatto. Dove si fa?
-
Direttamente da amministrazione componente jce, vedi i profili ed attiva il php solo per l'administrator e solo in backend.
-
Niente da fare, non ne vuole proprio sapere :'(
-
Scusate se mi intrometto ma hai provato anche l'estensione che ti avevo suggerito qui (http://forum.joomla.it/index.php/topic,255604.msg1188198.html#msg1188198)? plotalot (http://extensions.joomla.org/extension/plotalot) che nella descrizione dice
Query the local site database or any other MySql database
-
Ciao $Red. Grazie per il tuo intervento.
Ho provato plotalot e funziona. Ma nel mio caso, purtroppo, non va bene e ti spiego il perché: nel mio database Mysql ci sono tante tabelle, ognuna indipendente dall'altra. Quando un utente entra nel mio sito deve effettuare il login e visualizzare solo il grafico collegato alla sua tabella e non deve poter visualizzare gli altri grafici. Purtroppo plotalot mi chiede solo i dati per accedere ad una tabella (database, host, user, password).Se volessi inserire del codice scritto da me non posso, ad eccezione di una riga di query per selezionare i dati della tabella.
Comunque sono riuscito a visualizzare il grafico con un collegamento esterno di joomla, anche se questo non mi piace...
Se hai altre idee fammi sapere, ciao