Database esterno

7 contenuti / 0 new
Ultimo contenuto
Database esterno

Ciao a tutti

mi sto avvicinando adesso al mondo Drupal e devo dire che mi affascina molto ma ho un dubbio sui database.

So che qualcosa è già stato detto nei forum ma non sono riuscito a capire bene se esiste una soluzione al mio problema.

Io vorrei poter inserire una o più pagine del sito che mi vadano a leggere e a visualizzare i dati presenti in un altro db mysql però non sono riuscito a capire dai post precedenti se questo è fattibile.
Ho letto risposte che dicevano di inserire le tabelle interessate all'interno del db di Drupal ma a me questa soluzione non piace molto perchè vorrei mantenere il db separato, è possibile fare questa operazione?

Grazie a tutti e scusate se la domanda è già stata fatta ma vorrei chiarirmi bene le idee per poter decidere se continuare a studiare Drupal per un progetto che dovrei realizzare.

Saluti a tutto il forum

Marco

edit: avevo capito male la domanda....

non so se si possa fare perchè drupal apre una connessione con un DB. nel caso sia possibile connettersi a più database contemporaneamente (e qui parliamo di php) allora puoi farlo tu nel tuo modulo.
Se drupal supporta una connessione ad un db arbitrario prova drupaldocs.org (guida alle aPi)

Grazie per la risposta, ho fatto un test e sono riuscito a connettermi ad un db esterno a quello di drupal solo che mi succede una cosa strana.

Per connettermi ho creato una nuova pagina e ho abilitato l'inserimento del codice php, come codice ho messo questo:

<?php
$link
=mysql_connect("localhost","mio_user","mia_pwd")
or die (
"Non riesco a connettermi al server");
mysql_select_db ("mio_db", $link)
or die (
"Non riesco a selezionare il db");
$tutto = "SELECT * FROM mia_tabella";
$query = mysql_query ($tutto,$link)
or die (
"Non riesco ad eseguire la richiesta");
while (
$valori = mysql_fetch_array ($query)){
$a1 = $valori ["cognome"];
$a2 = $valori ["nome"];
$a3 = $valori ["nome_utente"];
echo
$a1;
echo
"-";
echo
$a2;
echo
"-";
echo
$a3;
echo
"<br>";
}
mysql_close ($link);
?>

con questo codice mi vengono visualizzati i dati nella pagina creata solo che la pagina non ha il tema che ho applicato al sito, è una pagina bianca che mostra i dati del db e con il solo link Home.

Dove sbaglio?

ciao a tutti

Marco

Drupal offre soluzioni eleganti anche per il collegamento con più database:
http://drupal.org/node/18429
...fatto questo sopra, "butti nel cesso" (scusa l'espressione :-) ) le istruzioni per mysql standard di php, ed usi quelle con astrazione di Drupal (http://drupaldocs.org/api/head/group/database). Le query ti diventano parametrizzate e ti copri le spalle anche da attacchi di "SQL insertion", oltre che ritrovarti un sistema multiserver sql (per lo meno mysql e postgresql). Oltretutto puoi utilizzare le istruzioni per creare tabelle ordinabili e paginate:
http://drupaldocs.org/api/head/function/pager_query
http://drupaldocs.org/api/head/function/tablesort_pager

Ciao
Gianni

Ciao Gianni

grazie mille per la risposta, seguendo il tuo consiglio sono riuscito a collegarmi al db esterno che mi interessava.
Hai ragione per quanto riguarda il manuale ma essendo io un newbie trovo difficile districarmi tra le mille funzionalità di Drupal, se poi consideri che il mio inglese non è il massimo siamo a posto :)
Comunque mi guarderò quei link che mi hai dato.

Permettimi però una domandina veloce, con db_set_active io seleziono il db sul quale voglio lavorare ma tutte le connessioni ai db che io configuro nel file settings.php restano sempre aperte, giusto?
Non ci sono problemi se non si chiude la connessione a un db?

Grazie ancora e perdona un povero niubbo.

Ciao

Marco

"********* se poi consideri che il mio inglese non è il massimo siamo a posto :) **********"

....a chi lo dici, ho postato due quesiti e nessuno mi ha risposto, non credo per la difficoltà, ma per il mio inglese maccheronico ;-)

"********* Non ci sono problemi se non si chiude la connessione a un db *********"

No, alla fine dell'esecuzione dello script si chiudono da sole. Esistono anche delle connessioni persistenti (durano fin quando non gli arriva un comando di chiusura), ma NON sono utilizzate da Drupal, e non son quasi mai utilizzate in script in genere (per ovvi motivi)

Ti invio un mio piccolo pezzo di codice che fa una query su una tabella "gest_user" e su due campi "name", "address" e restituisce una tabella temizzata, ordinabile e ordinata per nome con tanto di legenda (un buon esempio da cui partire). Provala con i dovuti cambiamenti, all'interno di una pagina, impostando il tipo a PHP.

// Costruisci i titoli da mostrare nella tabella
$header = array(
array('data' => t('Nome'), 'field' => 'name', 'sort' => 'asc'),
array('data' => t('Indirizzo'), 'field' => 'address'),
);
// Visualizza la lista nella tabella
$result = db_query("SELECT name,address FROM {gest_user}".tablesort_sql($header));
while ($dati = db_fetch_object($result)) {
$rows[] = array($dati->name, $dati->address,);
}
// Temizzazione della tabella e titoli
$output = theme('table', $header, $rows);
print $output;

P.S.
Per Michele (credo che sia il webmaster),
O non so utilizzare i tag di quoting e codice, o questo tema (css) ha dei problemi con questi tipi di tag: il quoting è poco visibile e il codice è troppo piccolo :-)

Ciao
Gianni

Gianni sei stato molto gentile ad aiutarmi ma ti sei rovinato con le tue mani perchè ti chiederò sicuramente altre cose :):):)

Per ora proverò i tuoi consigli e vedrò cosa sono capace di combinare.

Grazie

ciao

Marco