| Per chi fosse interessato ad implementare nel proprio sito una funzione che calcoli i bioritmi... Leggere beneDopo mesi passati a cercare (invano) uno script che mi permettesse di calcolare l'andamento dei bioritmi, ho deciso di farmelo da me. Ovviamente l'output è molto grezzo, in quanto il codice che troverete sotto serve solo ad implementare il calcolo dei bioritmi e a ricavarne il grafico, per la grafica ci pensate voi. Come ogni cosa che faccio, il codice è usabile e modificabile da chiunque... sarebbe bello solo sapere se viene usato e se viene apportata qualche miglioria e magari vederlo in azione in qualche altro sito ( giusto per sentirmi orgoglioso). Di seguito troverete i 3 file necessari al funzionamento e una spiegazione. Per la sua implementazione si presuppone che sappiate un pò di php. Sulla pagina pagina facebook potete trovare altre info e contattarmi per qualche segnalazione e/o correzione e/o chiarimento. Per vederlo in azione potete andare qui: http://gozforum.altervista.org/stelle2/bio_input.phpmentre il raw-output che troverete dopo aver uppato sul vostro server i 3 file è il seguente: http://gozforum.altervista.org/bioritmz/bio_input.phpMa prima una breve spiegazione: QUOTE Il funzionamento è semplice. Non mi dilungo nel funzionamento del codice, dei bioritmi e di tutte le funzioni per la manipolazione del tempo. «Bioritmz» si compone di 3 file: bio_input.php: E' semplicemente il file dove tramite una form viene inserita la data di nascita. Sono tre variabili $giorno, $mese, $anno e vengono passate con metodo POST alla pagina calcolo_giorni.php che avrà il compito di processare la data. calcolo_giorni.php E' il core dello script. In pratica in questo file vengono fatti tutti i calcoli. A grossi linee funziona nel seguente modo: PARTE I: Prende le variabili passate da bio_input.php, esegue un controllo sui caratteri e crea una sessione in modo tale che i valori siano reperibili in ogni pagina. PARTE II: Applica le funzioni di tempo, in modo tale da rendere la data idonea a ciò che serve a noi. Dopo aver processato la data, calcolato i giorni ecc ecc, effettua il calcolo del bioritmo tramite un ciclo for. Nel dettaglio le variabili che vengono usate sono: $n_giorni=semplicemente il numero di giorni tra la data attuale ( $a) e la data di nascita ($data_nascita) $n=numero di giorni di cui calcolare il bioritmo (nota. questa deve corrispondere alla dimensione del vettore nel file grafico_bio.php) $fh,$eh,$ih=sono rispettivamente i valori dei bioritmi (fisico,emotivo,intellettivo) ricavti tramite quella formula) PARTE III: Plot dei risultati e inserimento del grafico tramite un iframe grafico_bio.php E' il file che serve alla costruzione del grafico. Per far questo mi sono appoggiato alla libreria grafica phpGraphLib. Libreria che ogni volta mi conferma i suoi profondi limiti ma alla fine e semplice da usare e quindi la uso =). Non stò a dilungarmi nel funzionamento, in caso vi dovesse servire, qui potete trovare la traduzione del manuale sul come usarla: https://goz.forumcommunity.net/?t=44781049e ora i 3 file: bio_input.php CODE <?php // DOPO MESI TRASCORSI A CERCARE UNO SCRIPT CHE MI PERMETTESSE DI CALCOLARE IL BIORITMO HO DECISO DI FARMELO IO!!! // QUESTO SCRIPT PUO' ESSERE RIUTILIZZATO E MODIFICATO IN PIENA LIBERTA'. // SAREBBE GRADITO CHE OGNI EVENTUALE PERFEZIONAMENTO AL CODICE MI VENGA SEGNALATO IN MODO TALE // DA POTERNE USUFRUIRE PURE IO XD. // g'oz[2012] ascia2004(at)hotmail(dot)com
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Bioritmz-v0.1</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <meta name="keywords" content="calcolo dei bioritmi" /> <link rel="stylesheet" type="text/css" media="screen" href="css/style.css" />
</head> <body>
Seleziona la data in cui sei nato e calcola l'andamento dei tuoi bioritmi nei prossimi 30 giorni <br><br>
<form action="calcolo_giorni.php" method="post"><br>
<table cellpadding="20px" align="center" >
<tr> <td> Giorno:<br> <select name="giorno"> <option value="1">1 </option> <option value="2">2 </option> <option value="3">3 </option> <option value="4">4 </option> <option value="5">5 </option> <option value="6">6 </option> <option value="7">7 </option> <option value="8">8 </option> <option value="9">9 </option> <option value="10">10 </option> <option value="11">11 </option> <option value="12">12 </option> <option value="13">13 </option> <option value="14">14 </option> <option value="15">15 </option> <option value="16">16 </option> <option value="17">17 </option> <option value="18">18 </option> <option value="19">19 </option> <option value="20">20 </option> <option value="21">21 </option> <option value="22">22 </option> <option value="23">23 </option> <option value="24">24 </option> <option value="25">25 </option> <option value="26">26 </option> <option value="27">27 </option> <option value="28"> 28</option> <option value="29">29 </option> <option value="30"> 30</option> <option value="31">31 </option>
</select> </td> <td> mese:<br> <select name="mese"> <option value="1">gennaio</option> <option value="2">febbraio</option> <option value="3">marzo</option> <option value="4">aprile</option> <option value="5">maggio</option> <option value="6">giugno</option> <option value="7">luglio</option> <option value="8">agosto</option> <option value="9">settembre</option> <option value="10">ottobre</option> <option value="11">novembre</option> <option value="12">dicembre</option>
</select>
</td> <td>Anno:<br> <select name="anno"> <option value="1970">1970</option> <option value="1971">1971</option> <option value="1972">1972</option> <option value="1973">1973</option> <option value="1974">1974</option> <option value="1975">1975</option> <option value="1976">1976</option> <option value="1977">1977</option> <option value="1978">1978</option> <option value="1979">1979</option> <option value="1980">1980</option> <option value="1981">1981</option> <option value="1982">1982</option> <option value="1983">1983</option> <option value="1984">1984</option> <option value="1985">1985</option> <option value="1986">1986</option> <option value="1987">1987</option> <option value="1988">1988</option> <option value="1989">1989</option> <option value="1990">1990</option> <option value="1991">1991</option> <option value="1992">1992</option> <option value="1993">1993</option> <option value="1994">1994</option> <option value="1995">1995</option> <option value="1996">1996</option> <option value="1997">1997</option> <option value="1998">1998</option> <option value="1999">1999</option> <option value="2000">2000</option> <option value="2001">2001</option> <option value="2002">2002</option> <option value="2003">2003</option> <option value="2004">2004</option> <option value="2005">2005</option> <option value="2006">2006</option> <option value="2007">2007</option> <option value="2008">2008</option> <option value="2009">2009</option> <option value="2010">2010</option> <option value="2011">2011</option> <option value="2012">2012</option>
</select> </td>
</table><br><br></div> <center><input type ="submit" name="submit" value="Invia"></center> <br>
<br>
<br><br><br><br>
</body> </html> calcolo_giorni.php CODE <?php
//PRIMA PARTE session_start(); $giorno = $_POST['giorno'] ; $mese = $_POST['mese'] ; $anno = $_POST['anno'] ;
$_SESSION['giorno'] = $giorno; $_SESSION['mese'] = $mese; $_SESSION['anno'] = $anno;
$_SESSION['n'] = $n; $_SESSION['c'] = $c; $_SESSION['fh'] = $fh; $_SESSION['eh'] = $eh; $_SESSION['ih'] = $ih; if (preg_match('/['.preg_quote($chrs,'/').']/',$n)) header('Location: ERRORE.html'); if (preg_match('/['.preg_quote($chrs,'/').']/',$c)) header('Location: ERRORE.html'); if (preg_match('/['.preg_quote($chrs,'/').']/',$fh)) header('Location: ERRORE.html'); if (preg_match('/['.preg_quote($chrs,'/').']/',$eh)) header('Location: ERRORE.html'); if (preg_match('/['.preg_quote($chrs,'/').']/',$ih)) header('Location: ERRORE.html');
$a=time();
$data_nascita= mktime(0,0,0,$mese,$giorno,$anno) ;
$n_giorni = floor(($a - $data_nascita) / 86400); echo (" <br>Data di nascita: $giorno/$mese/$anno ");
for ($n = 0; $n <= 30; ++$n) {
$fh[$n] = round(100*sin(deg2rad(360*(($n_giorni+$n) / 23)))); $eh[$n] = round(100*sin(deg2rad(360*(($n_giorni+$n) / 28)))); $ih[$n] = round(100*sin(deg2rad(360*(($n_giorni+$n) / 33))));
$c[$n]=date(' d M', ((86400*$n)+$a));
}
$b=date('D d M Y', $a); echo (" <br><br>Oggi $b: <font color='red'>fisico $fh[0]%</font>, <font color='blue'>emotivo $eh[0]%</font>, <font color='green'>intellettivo $ih[0]%</font> ");
$_SESSION['n'] = $n; $_SESSION['c'] = $c; $_SESSION['fh'] = $fh; $_SESSION['eh'] = $eh; $_SESSION['ih'] = $ih;
?>
<br><iframe class="posizione" src="grafico_bio.php" width="550" height="420"></iframe> grafico_bio.php CODE <?php session_start();
$n = $_SESSION['n'] ; $c = $_SESSION['c'] ; $fh = $_SESSION['fh'] ; $eh = $_SESSION['eh'] ; $ih = $_SESSION['ih'] ; if (preg_match('/['.preg_quote($chrs,'/').']/',$n)) header('Location: ERRORE.html'); if (preg_match('/['.preg_quote($chrs,'/').']/',$c)) header('Location: ERRORE.html'); if (preg_match('/['.preg_quote($chrs,'/').']/',$fh)) header('Location: ERRORE.html'); if (preg_match('/['.preg_quote($chrs,'/').']/',$eh)) header('Location: ERRORE.html'); if (preg_match('/['.preg_quote($chrs,'/').']/',$ih)) header('Location: ERRORE.html');
//echo (" $fh[0],$eh[0],$ih[0]. $fh[1],$eh[1],$ih[1]. $fh[2],$eh[2],$ih[2].");
//Grafico a linee
include("phpgraphlib.php");
//Impostiamo la dimensione della griglia del grafico (Larghezza, Altezza)
$graph=new PHPGraphLib(500,400); $h = count($fh); /* for ($n = 0; $n <= $h; ++$n) {
$data1[$n]=array($c[$n]=>$fh[$n]); $data2[$n]=array($c[$n]=>$fh[$n]); $data3[$n]=array($c[$n]=>$fh[$n]); }*/
$data1=array($c[0]=>$fh[0],$c[1]=>$fh[1],$c[2]=>$fh[2],$c[3]=>$fh[3],$c[4]=>$fh[4], $c[5]=>$fh[5],$c[6]=>$fh[6],$c[7]=>$fh[7] ,$c[8]=>$fh[8],$c[9]=>$fh[9],$c[10]=>$fh[10],$c[11]=>$fh[11],$c[12]=>$fh[12],$c[13]=>$fh[13], $c[14]=>$fh[14],$c[15]=>$fh[15],$c[16]=>$fh[16],$c[17]=>$fh[17],$c[18]=>$fh[18], $c[19]=>$fh[19],$c[20]=>$fh[20],$c[21]=>$fh[21],$c[22]=>$fh[22],$c[23]=>$fh[23], $c[24]=>$fh[24],$c[25]=>$fh[25],$c[26]=>$fh[26],$c[27]=>$fh[27],$c[28]=>$fh[28], $c[29]=>$fh[29],$c[30]=>$fh[30]);
$data2=array($c[0]=>$eh[0],$c[1]=>$eh[1],$c[2]=>$eh[2],$c[3]=>$eh[3],$c[4]=>$eh[4], $c[5]=>$eh[5],$c[6]=>$eh[6],$c[7]=>$eh[7] ,$c[8]=>$eh[8],$c[9]=>$eh[9],$c[10]=>$eh[10], $c[11]=>$eh[11],$c[12]=>$eh[12], $c[13]=>$eh[13],$c[14]=>$eh[14],$c[15]=>$eh[15],$c[16]=>$eh[16],$c[17]=>$eh[17], $c[18]=>$eh[18],$c[19]=>$eh[19],$c[20]=>$eh[20],$c[21]=>$eh[21],$c[22]=>$eh[22], $c[23]=>$eh[23],$c[24]=>$eh[24],$c[25]=>$eh[25],$c[26]=>$eh[26],$c[27]=>$eh[27], $c[28]=>$eh[28],$c[29]=>$eh[29],$c[30]=>$eh[30]);
$data3=array($c[0]=>$ih[0],$c[1]=>$ih[1],$c[2]=>$ih[2],$c[3]=>$ih[3],$c[4]=>$ih[4], $c[5]=>$ih[5],$c[6]=>$ih[6],$c[7]=>$ih[7],$c[8]=>$ih[8],$c[9]=>$ih[9],$c[10]=>$ih[10], $c[11]=>$ih[11],$c[12]=>$ih[12],$c[13]=>$ih[13],$c[14]=>$ih[14],$c[15]=>$ih[15], $c[16]=>$ih[16],$c[17]=>$ih[17],$c[18]=>$ih[18],$c[19]=>$ih[19],$c[20]=>$ih[20], $c[21]=>$ih[21],$c[22]=>$ih[22],$c[23]=>$ih[23],$c[24]=>$ih[24],$c[25]=>$ih[25], $c[26]=>$ih[26],$c[27]=>$ih[27],$c[28]=>$ih[28],$c[29]=>$ih[29],$c[30]=>$ih[30] );
//Aggiungo i valori di cui sopra $graph->addData($data1, $data2, $data3);
//Indichiamo alla libreria di non mostrare le barre $graph->setBars(false);
//Di conseguenza segnaliamo che si tratta di un grafico a linee $graph->setLine(true);
$graph->setXValues(true); $graph->setYValues(true);
//Visualizza il valore del punto $graph->setDataValues(false);
//Indichiamo il colore $graph->setDataValueColor('red');
$graph->setLineColor('red','blue','green'); //$graph->setGoalLine(-6);
$graph->setGoalLineColor("blue");
//Creo il grafico $graph->createGraph();
session_destroy()
?> Edited by g'oz - 3/9/2012, 10:23
|