Estrarre la data di nascita dei clienti per auguri di compleanno

Ottima strategia di e-mail marketing quella di memorizzare per poi visualizzare le date di compleanno dei clienti. Con una piccola applicazione in php possiamo visualizzare i clienti che compiono gli anni oggi e nei prossimi 5 giorni. Clienti a cui possiamo mandare dei semplici auguri o gli auguri e delle offerte particolari se hanno scelto di ricevere delle promozioni dal nostro sito.
Vedia la funzione php:
- faccio la connessione al mio db
- mi creo la query per oggi e i 5 giorni successivi quindi:

for($d=0; $d<5;>
$data=date("m-d",mktime(date("H"),date("i")-15,0,date("m"),date("d")+"$d",date("Y")));##la data di oggi che si incrementa grazie al for###
$sql = "SELECT *
FROM utenti WHERE data LIKE '%$data%' ORDER BY id_ute DESC
";
##########visualizzo###########################################
$risultato = @mysql_query($sql,$connessione)
or die("Impossibile eseguire l'interrogazione.");


while ($riga = mysql_fetch_array($risultato)) {
$id_ute= $riga['id_ute'];
$nome = $riga['nome'];
$cognome = $riga['cognome'];
$data = $riga['data'];
$off = $riga['off'];####qui vedo se il cliente ha scelto di ricevere delle offerte##
$data = explode("-",$data);
if (in_array("$cognome $nome", $utente)){###questo mi permette di scartare i clienti ripetuti###
}else{
echo"
$cognome $nome
$data[2]/$data[1]/$data[0]
$off
<#a href=\"mostra_utente.php&id_ute=$id_ute\"#>Visualizza<#/a#>
";
}
$utente[ ]="$cognome $nome";###riempio l'array per controllare se ho cliente ripetuti##
}
#########fine visualizzo#######################
}

Utile se si vuole fare una campagna email marketing molto accurata. Nella scheda cliente si potrebbe avere già una mail pronta con gli auguri dove aggiungere i prodotti + visti dal cliente, ma non acquistati, ad un prezzo promozionale.

Facebook: foto degli iscritti al tuo gruppo o i tuoi amici

Semplice applicazione per visualizzare le immagini degli iscritti al tuo gruppo su FaceBook o semplicemente per visualizzare i tuoi amici:
<#script src="http://www.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"#><#/script#>
<#script type="text/javascript">FB.init("Tua_Api_Key", "");
<#div align="center"#>
<#fb:fan profile_id="id del tuo profilo/gruppo" stream="0" connections="8" width="240" height="260px"#>
Lavornado sulle variabili è possibile modificare la visualizzazione come + si preferisce in particolare:
- stream: se 1 visualizza le varie modifiche al proprio profilo. Se 0 toglie il riquadro.
- connections: numero di amici da visualizzare.
- width: larghezza del box.
- height: altezza del box. Da variare in base alla visualizzazioni
Così come impostato il box visualizza due righe da 4 img.
Ottimo per promuovere la propria pagina web su FB.
In questo sito, nella colonna di destra, un esempio.

Bottone AddThis monitorato come Analitycs

Ecco come monitorare il proprio bottone/applicazione AddThis, con richiesta codice al sito:
<#div class="addthis_toolbox addthis_default_style"#>
<#a href="http://www.addthis.com/bookmark.php?v=250" class="addthis_button_compact">
#Invita un amico a vedere questa pagina#
<#img src="http://s7.addthis.com/static/btn/sm-plus.gif" width="14" height="14" alt="Bookmark and Share" style="border:0" align="top"#/>
<#/a>

Grazie a questa funzione puoi: invitare un amico a vedere questa pagina, stamparla, aggiungerla ai tuoi preferiti, inserirla nel tuo profilo Facebook, MySpace, Twitter e altri...
<#/div>
<#script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js?pub=tuo cod personale"#><#/script#>

Java: obbligo di inserire N caratteri in textarea

Utile script che obbliga l'utente ad inserire almeno 350 caratteri nella textarea del form.
<#script type="text/javascript"#>
#
function controlla() {
if (document.getElementById("descrizione").value.length <>
di seguito l'impostazione del form:
<#form action="azione.php" method="post" class="bianco" onsubmit="return controlla();"#>
<#textarea name="descrizione" cols="35" rows="17" id="descrizione" class="inputbox"#>
<#input type="submit" value="Segnala" class="inputbox" /#>
<#/form#>
Un esempio presente qui>>

Individuare e visualizzare file in cartella

Semplice script per individuare i file presenti in una cartella precisa del vostro sito web. Se immagini le visualizziamo:

$cartella = opendir('../img_news'); ###la vostra cartella#########
while ($file = readdir($cartella)) {
if ( $file == ".." || $file == ".") {
}else{
echo"<\img src=../img_news/$file>
###qui visualizzo###

http://www.tuosito.com/img_news/$file



";
}

}

Script utile se si vuole avere l'elenco dei file presenti in una cartella

Penalizzazione per troppi link

Da un anno circa la tendeza di Google è quella di penalizzare i siti web che vendono spazi per inserire link di altri siti web.
Da questa constatazione ci siamo accorti sulla nostra pelle che Googl e ci penalizzava un nostro sito perchè aveva un mega menù con oltre 100 link. Tolti i link, attinenti all'argomento del sito, ma troppo dispersivi, le cose sono tornate normali.
Leggendo nel web, questa tendenza di penalizzazione sembra colpire anche i blog. Che hanno troppi link interni con i tag degli argomenti del blog.
Quindi il nostro consiglio è quello di togliere i troppi link e quindi di dividere il sito in sotto cartelle specifiche per ogni argomento trattato.
Questa pagina per calcolare i link interni del proprio sito web.
Un altro fattore che abbiamo notato e molto discusso, è lo scambio link con altri siti web. Avere il link del proprio sito web su troppe pagine del un'altro sito sicuramente è visto come spam. Per controllare la presenza di link vi rimandiamo a GoogleWebMasterTool -> il tuo sito web -> link che rimandano al tuo sito. Il problema rimane la presenza del link del nostro sito su troppe pagine del sito ospitante. Succede infatti che alcuni siti web abbiano delle parti fissi che girano su tutte le pagine del sito. Se il sito ospitante è uno shop che ha 1000 prodotti il nostro link sarà nella pagina di tutti e 100o prodotti, generando così uno spam.

6 regole per un indicizzare una pagina web

Da SeoMoz (forse il sito SEO + autorevole) ecco 6 regole fondamentali per indicizzare una pagina web e per non farla bannare da Google. Inutile dire che queste regole verrano usate per tutto il nostro sito web:

Page File Size No more than 150 kilobytes (Before Images, CSS and other Attachments)

Numero di link interni per pagina: non + di 100. Consigliati 90. Qui è possibile controllare il numero di link presenti nella pagina del proprio sito web. Il discorso dei link è fondamentale anche per un problema di penalizzazione su Google. Vi rimandiamo al nostro articolo sul "Megamenù".

Lunghezza "title tag": non più di 70. Consigliati 65.

Lunghezza "Meta Description": non più di 155. Consigliati 150.

Come scrivere l'indirizzo url:
- Con parametri (per indirizzi dinamici php, asp, etc...)
Al max due parametri:
Link inesatto:
http://www.mysite.com/brands.php?object=1&type=2&kind=3&node=5&arg=6
Link perfetto:
http://www.mysite.com/brands.php?nike

Utilizzo di sottocartelle
Non + di 4

Cattivo esempio:
http://www.mysite.com/people/places/things/noun/danny/car

Ottimo esempio:
http://www.mysite.com/people/danny/

Rispettare queste semplici regole ci aiuterà molto ad indicizzare nel migliore dei modi il nostro sito web.

Java: script back, torna indietro

Semplice script che rimanda alla pagina precedentemente visitata dall'utente. E sempre bene permettere all'utente di tornare indietro....
<#img src="img/torna_dietro.jpg" align="absmiddle"#><# a href="javascript: history.go(-1)"#>Torna indietro<#/a>

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

Un text editor per siti web in java

Potentissimo editor in java per il proprio sito web, compatibile con tutti i browser. Ricco di applicazioni, può essere integrato più o meno facilmente con php ed asp. Gli esempi disponibili vanno modificati perchè il form comunica solo una variabile generica.
Per visualizzare e memorizzare la nostra variabile nel db basta richiamare: $FCKeditor1

Per togliere i vari pulsanti, basta andare sul file fckconfing.js e togliere i parametri presenti nell'array: FCKConfig.ToolbarSets. La cosa fondamentale sarà controllare che l'array non si concluda con "virgola".
E' possibile scaricare l'editor qui >>