Joomla.it Forum
Non solo Joomla... => Sviluppo => : Gioacchino Cipriano 01 Dec 2012, 12:10:26
-
Ciao a tutti,
ho necessità di realizzare una pagina php con codice personalizzato per la stampa di un PDF utilizzazndo FPDI (FPDF), ma non risesco a far pescare i dati dal DB.
nella pagina ho inserito questo pezzo di codice:
<?php
define( '_JEXEC', 1 );
define( '_VALID_MOS', 1 );
define( 'JPATH_BASE', dirname(__FILE__) );// eventualmente indicare il percorso della root di joomla
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
$user =& JFactory::getUser();
$utente = $user->username;//
echo $user->name;
?>
Che funziona e mi mostra il correttamente il nome utente, ma quando vado a fare una quaery al DB, in questo modo:
<?php
$db = JFactory::getDBO();// Get a database object
$query = "SELECT * FROM #__dati WHERE id = 31";
$db->setQuery($query);
$result = $db->query();
$row = $db->loadAssoc();
//print_r($row);
$fattura=$row['fattura'];
$fattura=iconv('UTF-8', 'windows-1252', $fattura);
echo $fattura;
?>
non stampa niente.
Why?
-
"print_r($row);" o il vardump cosa stampano?
-
invece di fare
$result = $db->query();
$row = $db->loadAssoc();
scrivi $row=$db->loadObject();
cosi accedi al risultato come un oggetto e ti risparmi quelle 2 righe
-
"print_r($row);" o il vardump cosa stampano?
Non stampano niente.
Non so se può essere utile, facendo echo print_r($row);
mi stampa 1.
:'(
-
invece di fare
$result = $db->query();
$row = $db->loadAssoc();
scrivi $row=$db->loadObject();
cosi accedi al risultato come un oggetto e ti risparmi quelle 2 righe
:( Prima dovrei riuscire a collegarmi al DB.
-
vuoi stampare
echo $collocazione;
ma dove lo assegni il contenuto d quella variabile?
inoltre togli
$result = $db->query();
che viene già eseguito da 'loadAssoc'
-
vuoi stampare
echo $collocazione;
ma dove lo assegni il contenuto d quella variabile?
inoltre togli
$result = $db->query();
che viene già eseguito da 'loadAssoc'
Ho sbagliato a riportare l'echo quello che eseguo io è echo $fattura;
-
ma sei sicuro che non si colleghi al database?
in teoria ti darebbe un errore xche non riconoscerebbe la funzione loadAssoc.
prova a modificare la query, alcune volte se fai una where su un intero ma gli passi una stringa '31' non funziona, prova a passargli 31 senza apici
-
Niente: anche senza apici.
Provo a rispiegare il problema, devo creare una pagina php per la stampa di un PDF utilizzando FPDI (FPDF).
Provando ad inserire il codice con soucerer mi legge il DB ma non mi produce il PDF. Nel codice devo inserire require_once('fpdf.php');
require_once('fpdi.php');
che non funziona (penso possa essere un limite di sourcerer) quindi sto tentando con una pagina esterna a joomla che richiamo all'interno di un wrapper, ma in questo caso non riesco a collegarmi al DB, con il codice indicato nel primo post. >:( >:( :'( :'(
-
WHERE id = '31';";
"SELECT * FROM #__dati WHERE id = 31";
-
WHERE id = '31';";
"SELECT * FROM #__dati WHERE id = 31";
Corretto, ma non è quello.
-
Bah secondo me hai problemi che non vedi, hai gli errori abilitati?
Io sto creando un cron proprio ora e nel file che gestisce il cron ho le medesime istruzuini per inizializzare l'ambiente.
Comunque in che joomla stai lavorando xche dichiari la variabile _VALID_MOS che serve solo nelle versioni legacy
Inoltre il file che hai creato si trova nella root o in una cartella xche senno
define( 'JPATH_BASE', dirname(__FILE__) );
non funziona
-
Bah secondo me hai problemi che non vedi, hai gli errori abilitati?
Io sto creando un cron proprio ora e nel file che gestisce il cron ho le medesime istruzuini per inizializzare l'ambiente.
Comunque in che joomla stai lavorando xche dichiari la variabile _VALID_MOS che serve solo nelle versioni legacy
Inoltre il file che hai creato si trova nella root o in una cartella xche senno
define( 'JPATH_BASE', dirname(__FILE__) );
non funziona
Joomla 1.5.26
Il file è nella root, avevo anche provato in una cartella ma modificandolo in:
define( 'JPATH_BASE', realpath(dirname(__FILE__) .'/..' ) );
-
non so che dirti, stai sicuramente sbagliando qualcosa ma non mi rendo conto di cosa, puo essere anche legato all'mabiente in cui sei, questa e l'intestazione del mio file e fidati che accedo al database
define( '_JEXEC', 1 );
define('JPATH_BASE', str_replace(array('/cron','\cron'),'',dirname(__FILE__)) );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
$db=JFactory::getDBO();
/////stampa tutto
$query='select * from #__content';
$db->setQuery($query);
$result=$db->loadObjectList();
print_r($result);
il mio file si trova in una cartella cron
se non ti funzione allora hai altri problemi
-
non so che dirti, stai sicuramente sbagliando qualcosa ma non mi rendo conto di cosa, puo essere anche legato all'mabiente in cui sei, questa e l'intestazione del mio file e fidati che accedo al database
define( '_JEXEC', 1 );
define('JPATH_BASE', str_replace(array('/cron','\cron'),'',dirname(__FILE__)) );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
$db=JFactory::getDBO();
/////stampa tutto
$query='select * from #__content';
$db->setQuery($query);
$result=$db->loadObjectList();
print_r($result);
il mio file si trova in una cartella cron
se non ti funzione allora hai altri problemi
proverò con il tuo, però banalità: sto lavorando in http://localhost/miosito/
, può essere l'ambiente locale che non mi fa funzionare?
-
no, xche anche io sono in locale
-
no, xche anche io sono in locale
:( :'(
Ma cavolo ho creato questo file seguendo le istruzioni che mi hai dato e l'ho salvato nella cartella pdffiles.<?php
define( '_JEXEC', 1 );
//define( 'JPATH_BASE', dirname(__FILE__) );
define('JPATH_BASE', str_replace(array('/pdffiles','\pdffiles'),'',dirname(__FILE__)) );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
//require_once('fpdf.php');
//require_once('fpdi.php');
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
// Get a database object
$db = JFactory::getDBO();
$query = "SELECT * FROM #__chronoforms_dati WHERE cf_id = 31";
$db->setQuery($query);
$result=$db->loadObjectList();
print_r($result);
$fattura=$result->fattura;
echo "Fatttura N° ".$fattura;
?>
e non funziona neanche così e non mi pare neanche tanto diverso dalle vostre indicazioni.
-
fai una cosa prova a mettere in cima
ini_set('display_errors',1);
per vedere se ti da errori.
penso che il tuo problema non sia nel file ma da un'altra parte xche senno non si spiega
-
fai una cosa prova a mettere in cima
ini_set('display_errors',1);
per vedere se ti da errori.
penso che il tuo problema non sia nel file ma da un'altra parte xche senno non si spiega
Non mi displaia nessun errore. ???
-
allora non so come aiutarti, ma il resto del sito funziona bene?
-
allora non so come aiutarti, ma il resto del sito funziona bene?
Sì sì, ora sto provando con sourcerer per inserire direttamente il codice creando le sessioni per ogni dato che passo ad una pagina per la creazione del PDF e pare funzionare, non mi piace molto creare 30 sessioni, ma se non ho alternative...
A meno che ci sia qualche plugin che rompe i cavolini, provo anche a disabilitarli giusto per escludere.
-
Ciao, giusto un feedback.
Ho risolto utilizzando Chronoforms (visto che lo utilizzo anche per altro) per la gestione dei dati dal DB e con una Custom Code ho raccolto i dati che ho inviato con un header location al file per la stampa del PDF.
Ciao.
P.S. Però strana sta cosa.