Joomla.it Forum
Non solo Joomla... => Sviluppo => : james81 24 Mar 2010, 10:07:09
-
Ciao a tutti, stò creando un modulo per visualizzare dati esterni al db di joomla. Il problema è che la query che ho utilizza le classi:
posto la query che utilizzo per prelevare i dati dal mio db:
$query = "SELECT id, obj_id FROM jos_leppson WHERE obj_id='".$id."'";
$database->setQuery($query);
$database->loadObject($record);
questa è invece la connessione che utilizzo per il db ma che non và bene per la select in quanto non è una classe.
Ora volevo capire come devo strutturare la mia connessione al db per la query che ho?
Graciess
-
ciao james81,
stai facendo un po di confusione, la query che vuoi usare non funziona perché non hai caricato il codice della classe e non la hai intanziata, non perché e OOP ;)
rivedi il codice originario, e troverai i pezzi che mancano, altrimenti dovrai fare la connessione con il metodo 'classico'... (lo trovi su php.net)
ciao,
marco
-
esatto, dato che purtroppo non ho la possibilità di variare tutte le query, quello che volevo capire era come variare/inizializzare la classica connessione che utilizzo al db per poter utilizzare quella query, attualmente utilizzo questa:
$host="xx.xx.xx.xx";
$user="xxxxxxxxxxx";
$password="xxxxxx";
$name="xxxxxx";
$conn = mysql_connect($host, $user, $password) or die("connesione non riuscita");
$db=mysql_select_db($name) or die("Impossibile selezionare db");
preciso che le query utilizzate sono quelli standard di joomla, quindi "in teoria" dovrei solo recuperare nel codice di joomla la parte relativa alla connessione al db e includerla nel mio file esterno.
c'è in joomla un file dove viene effettuata la connessione einzializzata??...così da utilizzare un include ??
-
scusa ma hai creato l'oggetto database prima di fare la query?
Se guardi sul docs trovi ampia documentazione
M.
-
no non ho creato l'oggetto, ho modificato e creato il modulo utilizzando le query che c'erano già, logicamente provandolo integrato a joomla funziona, ora il modulo è esterno a joomla quindi devo ricreare la connessione al db.
-
scusa ma stai creando un modulo che funziona in joomla per visualizzare dati da un db diverso da quello di joomla, o stai cercando di far girare un modulo joomla all'esterno di joomla?
ciao
-
ora il modulo è esterno a joomla quindi devo ricreare la connessione al db.
--------------------------------------------------------------------
no no... devi anche riscriverti tutte le classi del framework se ne esci.
M.
-
esatto, devo ricreare la connessione e non sò come fare
-
devi anche ricreare qs:
$database->setQuery($query);
$database->loadObject($record);
che fuori dal framework non esistono...
tu dici:
stò creando un modulo per visualizzare dati esterni al db di joomla
-------------------------------------------------------------------
basta usare il normalissimo mvc usando tutti i metodi di Joomla
il database deve essere lo stesso di joomla, non importa se aggiungi una tabella non tua.
oppure la tabella sta su un'altro db, quindi nuova connessione etc.
O fai anche qs cosa attraverso il fw joomla creando un'ulteriore oggetto db (??!!) o ne esci ma non ti preoccupare più di joomla, diventa classico scripting e in joomla non vedresti nulla.
Attenzione che l'hosting ti permetta di uscire dal loro dominio con le query...
M.
-
io avrei risolto così ma non funziona!...si collega al databse in maniera corretta ma non preleva i dati!!!
// connessione a MySQL con l'estensione MySQLi
$mysqli = new mysqli("xxx.xxx.xxx.xxx", "user", "pass", "nomedatabse");
// verifica dell'avvenuta connessione
if (mysqli_connect_errno()) {
// notifica in caso di errore
echo "Errore in connessione al DBMS: ".mysqli_connect_error();
// interruzione delle esecuzioni i caso di errore
exit();
}
else {
// notifica in caso di connessione attiva
echo "Connessione avvenuta con successo1";
}
// chiusura della connessione
$query = "SELECT id, obj_id FROM tabella WHERE obj_id='".$id."'";
$mysqli->setQuery($query);
$mysqli->loadObject($record);
-
guarda che non puoi usare una classe senza sapere cos'è una classe o usare un framework cercando di evadere non appena non riesci a seguire il paradigma proposto.
Non hai creato l'oggetto db perchè joomla darebbe una connessione ad un db che non ti serve
poi pretendi di usarne i metodi setQuery e loadObject
come fai?
certo che sono comodi da usare quei metodi, ma sono costruiti a monte da altre classi del framework di joomla, normalmente le query non si fanno così e questo vale per load object se cerchi infatti nontrovi una funzione mysql che si chiami così.
M.
-
ok, allora come dovrei impostare la mia query?
-
come una qualsiasi connessine e successiva query mysql
$hst="localhost"; // host
$usr="root"; // user
$pwd=""; // password
$dbn=""; // nome database
mysql_connect($hst, $usr, $pwd) or die("Connessione al database non riuscita");
mysql_select_db($dbn) or die("Nessun database selezionato");
$res=mysql_query("SELECT * FROM tabella") or die ( mysql_error() );
while($row = mysql_fetch_array($res)) {
array dei risultati
}
Buona fortuna e occhio alle sqlinj
M.
-
etu hai fatto un ciclo wihle per le righe se dovessi fare una select come dovrei impostarla??
-
che significa ciò che hai detto?
scusa ma visto che lavoravi sul framework joomla davo per scontato tu conoscessi php/mysql...
... sennò come faccio a spigarti?
M