ePrometeusCorsoLinuxLinux
testi articoli
Testi Articoli  Download
Home | OpenSource | PhpNuke | Programming | SysAdm | 
CorsoJava è ora Video! Free for all!
Clicca Qui!
PHPNUKE I BLOCCHI
PHPNuke: i blocchi
I blocchi esterni RDF/RSS
Blocchi personalizzati
Oroscopo
Conclusioni


<<< Oroscopo >>>
Facciamo adesso un esempio più complesso: la realizzazione di un blocco personalizzato che visualizza l'oroscopo. La caratteristica di questo blocco è quella di visualizzare l'oroscopo di un segno per volta, a caso, ogni volta che viene visualizzata una pagina. Per rendere il codice significativo, ci preoccuperemo di mettere gli oroscopi nel database, e provvederemo la prossima volta a creare una interfaccia di amministrazione che consenta di modificarli.

Per prima cosa dobbiamo quindi creare una tabella di database e metterci dentro le previsionii che vogliamo visualizzare. Il codice SQL è il seguente:

create table oroscopo (
  segno varchar(30) primary key,
  previsioni varchar(255)
);

insert into oroscopo values('Ariete',
  'Sono in arrivo molti soldi.');
insert into oroscopo values('Toro',
  'Guai in vista. State attenti.');
insert into oroscopo values('Gemelli',
  'Vi aspetta un periodo di riflessine.');
insert into oroscopo values('Cancro',
  'Influssi negativi dalle stelle. Serata tranquilla.');
insert into oroscopo values('Leone',
  'La fretta &egrave; cattiva consigliera.');
insert into oroscopo values('Vergine',
  'Amore alle stelle, soldi alle stalle.');
insert into oroscopo values('Bilancia',
   'Bilanciate ragione e sentimento.');
insert into oroscopo values('Scorpione',
   'Momenti pungenti per il partner.');
insert into oroscopo values('Sagittario',
  'La luna si intromette negli affari vostri.');
insert into oroscopo values('Capricorno',
  'Fate voi la prima mossa.');
insert into oroscopo values('Acquario',
  'Serenit&agrave; fa rima con rassegnazione.');
insert into oroscopo values('Pesci',
  'Momento magico per tutta la settimana.');

Se state utilizzando MySQL, e il database si chiama "nukedb", con  utente "nukeuser" e password "nukepass", salvando l'SQL in un file "oroscopo.sql" potete creare la tabella con il comando:
mysql -u nukeuser -pnukepass nukedb <oroscopo.sql
Scriviamo dunque il codice, che sarà contenuto in un file "html/blocks/block-Oroscopo_del_Giorno.php".  I problemi da risolvere sono due: il primo è la scelta casuale dell'oroscopo da visualizzare, il secondo è una interrogazione al database per estrarre l'oroscopo scelto e visualizzarlo.

Vediamo innanzitutto  come fare a scegliere casualmente l'oroscopo da visualizzare. La funzione PHP "rand(0,11)" mi ritorna un numero casuale tra 0 e 11. Siccome per individuare il segno nel database uso il nome, specifico un array per selezionare il segno su cui fare la query. Ovvero creo qualcosa come "segni = array('ariete', 'toro' ....)". Per trovare l'oroscopo dal database occorre eseguire una query utilizzando le consuete "mysql_pconnect", "mysql_query" e "mysql_fetch_array". Il codice risultante sarà il seguente:

<?php

if (eregi("block-Oroscopo_del_Giorno.php",$PHP_SELF)) {
Header("Location: index.php");
die();
}

/* scegliamo il segno */
$segni = array('Ariete', 'Toro', 'Gemelli', 'Cancro',
'Leone', 'Vergine', 'Bilancia', 'Scorpione',
'Sagittario', 'Capricorno', 'Acquario', 'Pesci');
$segno = $segni[rand(0,11)];

/* leggiamo la previsione */
global $dbhost, $dbuname, $dbpass, $dbname;

mysql_pconnect($dbhost, $dbuname, $dbpass);
mysql_select_db($dbname);
$previsioni = mysql_fetch_row(
mysql_query(
"select previsioni from oroscopo where segno='$segno'"));

/* ritorniamo il blocco */
$content = "<b>$segno</b>:"
."<br>$previsioni[0]";

?>
Da notare l'uso del "global" per ottenere le variabili di configurazione per collegarsi al database, ovvero "$dbhost", "$dbname", "$dbuname" e "$dbpass". Queste variabili sono definite nel file "config.php" di cui abbiamo parlato la volta scorsa, e possono essere utilizzate per accedere  al database. Siccome il blocco è chiamato dentro una funzione, senza l'uso esplicito del "global" la connessione al database fallisce (le variabili suddette infatti non sarebbero visibili). In Figura 3 possiamo vedere il risultato dei nostri sforzi:


Figura 3
ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com