MySQL: Query tra due date

Questa query ci aiuta a estrapolare tutti i record che sono stati inseriti in una arco di tempo ben definito:
$sql = "SELECT *
FROM catture WHERE data_mese between 20090501 and 20090524 and appro =\"si\" AND gara=\"2\" ORDER BY score_v_m DESC, score_m DESC, data_mese ASC";

Inutile dire che qundo l'utente inserisce l'informazione il db deve memorizzare il giorno di inserimento.

Usata per una gara di pesca virtuale presente qui >>
In questo caso il db ci darà tutte le catture inserite ed approvate dal 01/05/2009 al 24/05/2009, le ordine per due diversi punteggio, dandoci così il primo classificato.
Per tutti quelli che pensano di creare una gara e classifica virtuale.

Thumbnail al volo con php

Script veloce, veloce che ci permette di ridimensionare le img inseriti nel nostro sito con misura impostata nell'url dell'img:
########inizio codice###########
if (!isset($image)){ // if not generate an error image
$img = ImageCreate(100, 100);
$red = ImageColorAllocate($img, 255, 0, 0);
$yellow = ImageColorAllocate($img, 255, 255, 0);
ImageString($img, 5, 20, 20, "Bad", $yellow);
ImageString($img, 5, 20, 40, "size", $yellow);
ImageString($img, 5, 20, 60, "given!", $yellow);
ImagePNG($img);
ImageDestroy($img);
exit();
}

// attempt to load the big image
if (!$bigimage = @ImageCreateFromJPEG($image)) { // if loading fails
$img = ImageCreate(80, 80); // generate an error
$red = ImageColorAllocate($img, 255, 0, 0); // image
$yellow = ImageColorAllocate($img, 255, 255, 0);
ImageString($img, 5, 20, 20, "Image", $yellow);
ImageString($img, 5, 20, 40, "not", $yellow);
ImageString($img, 5, 20, 60, "found!", $yellow);
ImagePNG($img);
ImageDestroy($img);
exit();
}

// all seems to be OK so start the processing
// create the new image using the tnsize parameter
$tnimage = imagecreatetruecolor($tnsize, $tnsize);
// allocate the background colour for the thumbnail
$darkblue = imagecolorallocatealpha($tnimage, 0, 0, 127);
// set the background as transparent
imagecopyresampled($tnimage,$darkblue);
imagefilledrectangle($tnimage, 0, 0, $destW, $destH, $darkblue);
// get the parameters of the big image
$sz = GetImageSize($image);
// load our internal variables
$x = $sz[0]; // big image width
$y = $sz[1]; // big image height
// find the larger dimension
if ($x>$y) { // if it is the width then
$dx = 0; // the left side of the new image
$w = $tnsize; // the width of the new image
$h = ($y / $x) * $tnsize; // the height of the new image
$dy = 0; // the top of the new image
}else{ // if the height is larger then
$dy = 0; // the top of the new image
$h = $tnsize; // the height of the new image
$w = ($x / $y) * $tnsize; // the width of the new image
$dx = 0; // the left edgeof the new image
}
if ($w>$h) {
$tnimage = imagecreatetruecolor($w, $h);
}else{
$tnimage = imagecreatetruecolor($w, $h);
}
// copy the resized version into the thumbnal image
imageCopyResampled($tnimage, $bigimage, $dx, $dy, 0, 0, $w, $h, $x, $y);
// generate the PNG image
ImagePNG($tnimage);
// release the memory used by the thumbnail image
ImageDestroy($tnimage);
// release the memory used by the original big image
ImageDestroy($bigimage);
// all done!
####fine cod#########################

l'immagine la richiamiamo così:
img src="tnp.php?big.jpg&tnsize=150" dove tnp.php è il file dove metteremo il codice sopra riportato sopra. e la var tnsize e la misura max che vogliamo dare alla nostra img.
Utilissimo

strpos: controllare se una stringa contiene uno specifico carattere

Spesso vogliamo controllare se i nostri utenti inseriscono la "@" nel proprio indirizzo mail. Quindi ci risulta utile questo semplice script:
$email="tuamailiol.it";
if(strpos($email,"@")){
$stato_email="abbiamo la @";
}else{
$stato_email="non abbiamo la @";
}
Stamperà: "non abbiamo la @"

E' possibile anche usare "ereg" ma a nostro parere la funzione strpos è migliore. Vediamo un esempio:
if(ereg("@.*",$email)){
$stato_email="abbiamo la @";
}else{
$stato_email="non abbiamo la @";
}

ereg_replace: ottenere una parte di stringa

Esempio interessante per ottenere una parte di stringa:
$nostro_testo="testo in italiano da qui: testo in inglese";
usando ->
$nostro_testo = ereg_replace("\da qui:.*\$", "", $nostro_testo);
e avremo in visualizzazione: "testo in italiano"

Utile magari per siti in multilingua per una sola text area.
In alternativa si può usare explode per cui:
$nostro_testo="testo in italiano da qui: testo in inglese da qui: testo in spagnolo";
$nostro_testo = explode("da qui:", $nostro_testo);
echo"$nostro_testo[0]"; testo in italiano
echo"$nostro_testo[1]"; testo in inglese
echo"$nostro_testo[2]"; testo in spagnolo

Un server per php, in locale

Questo post lo dedichiamo a chi decide di avvicinarsi al php e mysql, e per questo necessita di un server dove poter testare i propri script, magari quelli che ha trovato nel nostro blog.
Per fare questo non serve, almeno per l'inizio, uno spazio web on-line...basta installare easyphp, un programma, in italiano, che con dei semplice click ci permetterà di trasformare il nostro computer un vero e proprio server, con quasi tutte le estensioni php, mysql ed altro....
Qui il link per EasyPhp

184 idee di markentig, Marketing per seo. Per avere un'idea

Segnaliamo questo strepitoso libro di marketing:
"I piccoli saranno i primi. 184 sorprendenti idee di marketing" di Seth Godin grande uomo di marketing, una macchina di idee....
Per chi cerca ispirazione o per chi cerca una motivazione. Molto incentrato sulla forza del web ed in particolare sul social marketing applicato ai network.
Da comprare e da leggere in un sol colpo.

Differenza tra date, php

Per sapere quanto è durato un evento:

$data_i="2009-04-21"; #data inizio#
$data_o="2009-05-05"; #data odierna#

$differenza=(strtotime("$data_o") - strtotime("$data_i"))/(86400);

Molto utile per la programmazione con le date

Explode date, ottenere giorno mese ed anno da date. PHP

Un piccolo explode per ottenere giorno, mese ed anno dal campo date così strutturato: gg-mm-aaaa

la data di oggi:
$data_o_v=date ("Y-m-d",mktime(date("H"),date("i")-15,0,date("m"),date("d"),date("Y")));
mi da: 2009-05-05
mi tiro fuori i campi:

$data_o=explode("-", $data_o_v); #uso la variabile data_o perchè data_o_v mi potrebbe riservire#
quindi ho:
echo"$data_o[2]/$data_o[1]/$data_o[0]"; -> 05/05/2009

Digg buttom, condividere le proprie pagine, in java. Seo

Senza usare un riga di codice dinamico ecco un bottone java per condivedere tutte le pagine del proprio sito sul social network Digg.
N.b: i ... equivalgono a < >
...script type="text/javascript...
digg_url = 'WEBSITE_URL'; #########questo va tolto##############
digg_bgcolor = '#ff9900';
digg_skin = 'compact';
digg_window = 'new';
.../script...
...script src="http://digg.com/tools/diggthis.js" type="text/javascript"... .../script...

il risultato di seguito:



Partendo dal concetto che la condivisione sarà il punto fondamentale per l'indicizzazione dei propri siti web.
Non dimentichiamoci di creare un account su Digg.

Convertire caratteri speciali, php

Come togliere i caratteri speciali e spesso e volentieri invisibili che disturbano il nostro codice:

$pippo= str_replace("\n","", $pippo);
$pippo = str_replace("\r","", $pippo);
$pippo = str_replace("\t","", $pippo);

Codice che risolverà il dannoso problemi degli spazi invisibili

Visualizzare file esterni con safe_mode abilitato, script php

Capita più spesso che i server in cui girano i nostri siti siano protetti dalla modalità safe_mode abilitata. A capita sempre più spesso che ci sia utile l'accesso a file esterni, come file xml. Di seguito un utile script che visualizza sul nostro sito la pagina di www.php.net

#usage:
$r = new HTTPRequest('http://www.php.net');
echo $r->DownloadToString();
class HTTPRequest
{
var $_fp; // HTTP socket
var $_url; // full URL
var $_host; // HTTP host
var $_protocol; // protocol (HTTP/HTTPS)
var $_uri; // request URI
var $_port; // port
// scan url
function _scan_url()
{
$req = $this->_url;
$pos = strpos($req, '://');
$this->_protocol = strtolower(substr($req, 0, $pos));
$req = substr($req, $pos+3);
$pos = strpos($req, '/');
if($pos === false)
$pos = strlen($req);
$host = substr($req, 0, $pos);
if(strpos($host, ':') !== false)
{
list($this->_host, $this->_port) = explode(':', $host);
}
else
{
$this->_host = $host;
$this->_port = ($this->_protocol == 'https') ? 443 : 80;
}
$this->_uri = substr($req, $pos);
if($this->_uri == '')
$this->_uri = '/';
}
// constructor
function HTTPRequest($url)
{
$this->_url = $url;
$this->_scan_url();
}
// download URL to string
function DownloadToString()
{
$crlf = "\r\n";
// generate request
$req = 'GET ' . $this->_uri . ' HTTP/1.0' . $crlf
. 'Host: ' . $this->_host . $crlf
. $crlf;
// fetch
$this->_fp = fsockopen(($this->_protocol == 'https' ? 'ssl://' : '') . $this->_host, $this->_port);
fwrite($this->_fp, $req);
while(is_resource($this->_fp) && $this->_fp && !feof($this->_fp))
$response .= fread($this->_fp, 1024);
fclose($this->_fp);
// split header and body
$pos = strpos($response, $crlf . $crlf);
if($pos === false)
return($response);
$header = substr($response, 0, $pos);
$body = substr($response, $pos + 2 * strlen($crlf));
// parse headers
$headers = array();
$lines = explode($crlf, $header);
foreach($lines as $line)
if(($pos = strpos($line, ':')) !== false)
$headers[strtolower(trim(substr($line, 0, $pos)))] = trim(substr($line, $pos+1));
// redirection?
if(isset($headers['location']))
{
$http = new HTTPRequest($headers['location']);
return($http->DownloadToString($http));
}
else
{
return($body);
}
}
}
?>

Da provare, senza abusare

Number_format per l'euro €

Il comando number_format nasce per il dollaro e/o sterlina, quindi per l'euro, in visualizzazione, possiamo avere dei problemi. Vediamo come risolverli:

Abbiamo il nostri prezzi:
$prezzo1="550.50";
###il . è fondamentale per la somma,senza . non si somma con il prezzo2###
$prezzo2="550.30";
con una semplice somma avremo:
$totale=$prezzo1+$prezzo2;
e avremo in visualizzazione: 1100.80

risultato che non è corretto per l'euro, si richiede la , per i decimali e il .
ecco number_format che ci aiuta:

$totale=number_format($totale, 2, ',', ' '); ##visualizza 2 decimali divisi da , e le migliaia divisi da spazio###
$totale=str_replace(" ",".",$totale); ###trasformo lo spazio in .####
quindi in visualizzazione avrò: 1.100,80

N.B: il valore creato è solo un valore di visualizzazione, per sommarlo dovremo sempre lavorare con il totale creato senza number_format