L'ultimo articolo scritto su Sir Bit risale a marzo 2014. La versione che state visitando è un archivio: le pagine sono accessibili come sempre e gli autori potrebbero rispondere ai commenti, ma non saranno inseriti dei nuovi articoli. Visita questa pagina per i dettagli.
Piani di luce azzurra su sagoma di testa umana

Quando si lascia all’utente la possibilità di caricare un’immagine, è sempre bene approntare più livelli di controllo: peso, dimensioni, estensione del file (1)

In questo tutorial di base vedremo come realizzare un semplice form per il caricamento di immagini da parte dell’utente, comprensivo di controlli.

Una volta inviato il form, il php si occuperà di controllare:
– che il file rientri entro certe dimensioni di peso
– che il file sia entro determinate dimensioni di larghezza e altezza (in pixel)
– che il file inviato sia di tipo immagine e cioè che abbia l’estensione gif, jpg o png

Lo script è liberamente scaricabile e già pronto per essere integrato nel vostro sito, con le dovute modifiche alle variabili numeriche e all’aspetto della pagina (che qui è lasciata volutamente spartana).

Form di invio

Il form non ha niente di particolare.
L’input sarà di tipo file. Ricordatevi, inoltre, di inserire il parametro “enctype” nel tag del form.

1
2
3
4
5
<form action="" method="post" enctype="multipart/form-data">
	<input name="image" type="file" />
	<br /><br />
	<input name="invia" type="submit" value="Carica immagine" />
</form>

Leggi Tutto >>

W di Worpress circondato da codice

WordPress ha una funzione automatica per estrarre gli articoli di una categoria. Ma a volte potremmo aver bisogno di farlo tramite una query manuale (1)

WordPress ha integrata una funzionalità automatica che gli permette di stampare a video i post di una categoria. E’ quello che succede ogni volta che cliccate su una categoria.
Ma se dovessimo ricreare noi la query per estrarre gli articoli di una specifica categoria, è utile sapere quali tabelle mettere in relazione tra loro.

La query seguente necessita solo di poche modifiche: l’id della categoria (contenuto nella variabile $id_categoria) ed eventualmente il valore del limit (che ora è impostato a 10: modificabile secondo le proprie esigenze).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$id_categoria=20;
$now=gmdate("Y-m-d H:i:s",(time()+(3600)));

$query="SELECT wp_posts.* FROM wp_posts, wp_term_relationships, wp_term_taxonomy, wp_terms WHERE";
$query.=" wp_posts.ID=wp_term_relationships.object_id";
$query.=" AND wp_term_relationships.term_taxonomy_id=wp_term_taxonomy.term_taxonomy_id";
$query.=" AND wp_term_taxonomy.taxonomy='category'";
$query.=" AND wp_terms.term_id=".$id_categoria;

$query.=" AND wp_posts.post_date <= '$now'";
$query.=" AND wp_posts.post_type='post'";
$query.=" AND (wp_posts.post_status IN ( 'publish', 'static' ))";
$query.=" AND wp_posts.post_password =''";

$query.=" ORDER BY RAND() LIMIT 10";

Leggi Tutto >>

Tutorial, cartoline e sfondi per la creazione di elementi natalizi

Con il mese di dicembre e l’avvicinarsi delle feste, ci si trova spesso nella necessità di creare qualche “presente natalizio” per i propri parenti o amici, oppure di creare un contorno a tema per i siti dei clienti più esigenti.
L’anno scorso abbiamo visto una carrellata di tutorial per generare elementi di Natale come effetto neve o ghiaccio sulle scritte, alberi decorati, cappelli di Natale e palle di neve.

Anche quest’anno ho recuperato alcuni tutorial interessanti dalla rete, che vi propongo in un elenco a cui trovate associati i rispettivi link e una breve descrizione.
Non solo: nell’elenco troverete link che rimandano a sfondi, a cartoline o elementi di Natale dei più disparati.
Buon divertimento!

TUTORIAL E CARTOLINE

Cartolina con pupazzo di neve

Pupazzo di neve in mezzo alla neve

Una semplice cartolina innevata con un simpatico pupazzo di neve. Con questo tutorial vi sarà mostrato come creare l’effetto “spruzzata di neve” sul cappello e l’ombra del pupazzo (utili per altre creazioni).

Link: http://www.photoshoplady.com/forums/3d-tutorials/165-create-christmas-card-awesome-snowman-night-scene.html#post569

Leggi Tutto >>

Schema di tabelle in relazione su sfondo blu

Il backup del database è un’abitudine utile e raccomandabile. Il problema sorge se dobbiamo importare dump di grandi dimensioni (1)

Uno dei problemi più grandi per un programmatore che deve lavorare con database è come importare un file .sql (tecnicamente dump) di grandi dimensioni.
Se adoperate phpmyadmin come interfaccia grafica o altri gestori di caricamento, a meno che non abbiate impostazioni particolari, sarete limitati a importare file da 24 mega. Non si tatta di una limitazione fatta per “infastidire” il programmatore: dump troppo estesi potrebbero mandare in timeout il server che ospita il database ed è quindi una misura di sicurezza.

Come fare, quindi, se abbiamo a che fare con dump di enormi dimensioni? Soprattutto se lavorate su e-commerce con pagine da migliaia di prodotti, è facile esportare un file di 40-50 mega. Se poi avete la necessità di importarlo su un’altra database, magari per una demo, oppure nello stesso database che si è corrotto, arrivano i guai.

Fortunatamente esistono software, anche gratuiti, che ci vengono in soccorso.
Uno di questi è SQL Dump Splitter (trovate il link al sito ufficiale in fondo all’articolo), un software creato da Philip Lehmann Bohm che si occupa di prendere un file .sql e di dividerlo in più file di minori dimensioni e con le dimensioni da noi impostate.

Leggi Tutto >>

Ajax - scritta su fondo azzurro

Tramite un’api di JQuery possiamo usare l’Ajax in modo rapido e utilizzando tutte le sue funzionalità (1)

Ajax è un potente strumento per gestire eventi in tempo reale nonostante l’uso di linguaggi lato server come php.
Come sa ogni programmatore con un minimo di esperienza nel campo, il php viene interpretato da un server: quello che vediamo a schermo è solo il risultato del processo. Non ci è possibile, quindi, eseguire uno script php in tempo reale una volta caricata la pagina (per esempio, non possiamo sostituire il contenuto di un div con un elemento estratto dal database in tempo reale: dobbiamo per forza ricaricare la pagina).

Questa operazione, però, ci è possibile farla appoggiandosi ad Ajax. Un’infarinatura di base, completa di esempio, l’abbiamo vista in un articolo precedente.

Esistono però delle soluzione alternative e più moderne a quelle viste nell’articolo. Jquery, per esempio, integra un’api capace di semplificarci la vita e di accedere alle funzionalità di Ajax in pochi passaggi.
Il concetto è lo stesso del precedente, ma eseguito in un minor numero di passaggi.

Lo script qui sotto (e che potete scaricare in formato zip) mostra un esempio molto semplice di utilizzo dell’Ajax tramite l’api di Jquery. In breve:
– al click sull’unico link della pagina, verrà richiamata la funzione javascript “stampa_blocchi()”. Come parametro gli passiamo un ipotetico valore “blocco1”.
– tramite ajax eseguiremo il file esterno “prova.php”. Questo riceverà il post $_POST[‘tipo’] che avrà valore “blocco1”. Il codice contenuto nel file “prova.php” viene tralasciato perché non necessario alla spiegazione: in ogni modo, tutto quello che sarà eleborato in questo file sarà poi restituito dall’ajax.
– il contenuto elaborato nel file “prova.php” sarà ritornato e stampato all’interno del div con id=stampa_blocchi

Leggi Tutto >>

Lavagna verde piena di formule matematiche

Il mysql ci mette a disposizione delle formule native per il calcolo all’interno delle query (1)

Se siete abituati a eseguire calcoli attraverso i linguaggi di programmazione lato server (come php e asp) e poi a riportare il risultato nelle query mysql, non sentitevi esclusi: è la procedura più comune. Questo perché i linguaggi di programmazione standard mettono a disposizione un numero di funzioni matematiche più complete rispetto a quelle eseguibili da mysql.

Ma in alcune situazioni, per esempio in una join molto complessa, diventa difficile (e a volte impossibile) eseguire un calcolo prima dell’avvio della query. Ecco quindi che le funzioni native del mysql sono indispensabili.

In questo articolo elenco, suddivisi secondo la tipologia, le varie funzioni matematiche del mysql con una breve spiegazione e un esempio di utilizzo di base. Per un approfondimento potete leggervi la documentazione che trovate in fondo.

ABS(X)
Restituisce il valore assoluto del valore passato.
SELECT ABS(-10);

ACOS(X)
ASIN(X)
ATAN(X)
COS(X)
COT(X)
SIN(X)
TAN(X)

Ritornano rispettivamente l’arcocoseno, l’arcoseno, l’arcotangente, il coseno, la cotangente, il seno e la tangente del valore passato.
Nella funzione dell’arcotangente possono essere passati due valori (mettiamo siano X, Y): in questo caso è come calcolare l’arcotangente di Y diviso X.
SELECT ACOS(0);
SELECT ASIN(0.2);
SELECT ATAN(2);
SELECT COS(PI());
SELECT COT(12);
SELECT SIN(PI());
SELECT TAN(PI());

CEIL(X) oppure CEILING(X)
FLOOR(X)

Entrambi i tipi di funzioni trasformano il valore passato in un intero. Ma nella prima l’intero risultante sarà sempre maggiore o uguale a X, mentre nella seconda sarà sempre minore o uguale a X. L’esempio qui sotto, quindi, darà come risultato rispettivamente 3 e 2.
SELECT CEILING(2.4)
SELECT FLOOR(2.4)

CONV(N, from_base, to_base)
Trasforma il formato di un numero, dal formato “from_base” al formato “to_base”. La base deve essere compresa tra 2 e 36. Il seguente esempio trasforma la stringa “a” da base 16 a base 2.
SELECT CONV(‘a’,16,2);

Leggi Tutto >>

Pagina di Sir Bit su Facebook

La schermata della pagina di Sir Bit, così come appariva nel momento della sua creazione. La personalizzazione è semplice e richiede pochi passaggi

Avete una vostra attività, un’azienda, con magari associato un sito web per identificarla e richiamare utenti. Oppure avete una passione, un hobby di carattere generale o un tema che volete condividere. O, ancora, sentite di conoscere e di aver qualcosa da dire sul calcio, sui luoghi meravigliosi del mondo o sul cantante tanto in voga in questo periodo.

Quali siano le ragioni, se la vostra intenzione è di creare una comunità seguita da altri utenti, una pagina su Facebook fa al caso vostro. E’ indubbio che i social network vadano di moda: il fattore di Facebook lo dimostra, così come l’enorme numero (milioni) di utenti che ogni giorno si connettono.
Soprattutto, al giorno d’oggi ogni azienda dovrebbe dotarsi di una pagina Facebook, dove promuovere i suoi prodotti e attirare il pubblico a “casa propria” o verso il sito web.

Certo, una volta creata la pagina dovrete darvi da fare per diffonderla e farla conoscere al pubblico, ma questa è un’altra storia e non è scopo di questo articolo scendere nel dettaglio sugli aspetti “SEO” della promozione (che richiederebbero tra l’altro una lunga spiegazione).
Qua scopriremo, invece, come costruire una pagina e come muovere i primi passi per diffonderla ai contatti usando gli strumenti nativi di Facebook. E’ più facile di quanto si possa immaginare.

Per un esempio concreto, potete dare un’occhiata alla pagina ufficiale di Sir Bit. Se siete interessati a seguire gli articoli del sito, cliccate su “Mi piace” per non perdervi le pubblicazioni settimanali del blog ( tra l’altro in questo modo mi aiuterete a spargere la voce, con i miei ringraziamenti anticipati =) ).

Leggi Tutto >>

Biscotto vicino a bandiera dell'Unione Europea

I cookies (letteralmente “biscotti”) possono essere creati, modificati e gestiti anche con un puro javascript. Con funzioni prefatte, il sistema è semplice (1)

Se usate linguaggi di programmazione lato server, come php o asp, la gestione dei cookies è abbastanza semplice, perché esistono già delle funzioni predisposte. Può capitare, però, che dobbiate creare o modificare i cookies agendo esclusivamente tramite javascript, per esempio al verificarsi di un evento in JQuery.

La gestione dei cookies tramite javascript non è complicata, anche se la comprensione della funzione di lettura (per i neofiti) non è propriamente a portata di mano.

Scrittura e controllo del cookies

Il codice seguente non ha bisogno di ritocchi. Il suo scopo è di leggere il cookie con il “nome” passato come parametro.
Dopodiché controlla la sua esistenza (guardando se la sua lunghezza è >0). Alla fine, recupera il valore contenuto nel cookie.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//controlla l'esistenza del cookie con il nome passato
function check(nome){
	if (document.cookie.length > 0){
		var first = document.cookie.indexOf(nome + "=");
		if (first != -1){
			first = first + nome.length + 1;
			var end = document.cookie.indexOf(";",first);
			if (end == -1) end = document.cookie.length;
			return unescape(document.cookie.substring(first,end));
		}else{
			return "";
		}
	}
	return "";
}

Leggi Tutto >>

Libri accostati con titoli di varie lingue

Un sito multilingua, per essere efficiente, può appoggiarsi a un database, in modo da permettere all’utente stesso di modificare i propri testi (1)

Nello scorso articolo abbiamo visto come impostare il codice per tradurre un sito in multilingua. Il codice permetteva di tradurre il sito in una o più lingue facendo riferimento a pochi file fisici da modificare.
In quell’esempio la connessione al database ci serviva soltanto per estrarre la lingua di default da far comparire e non era indispensabile: l’estrazione poteva essere sostituita facilmente da un controllo manuale del get. Ma in quel caso avevamo a che fare con del testo statico.

Come dobbiamo comportarci, invece, con il testo dinamico? Per intenderci, mi riferisco ai campi di database estratti e quindi stampati a video, che devono essere tradotti in base alla lingua scelta.
Esistono, come sempre, diversi approcci per arrivare alla soluzione: ve ne propongo uno elementare, che si rifà all’articolo precedente. Consiglio quindi di riguardarlo e di scaricarvi lo script, perché le basi usate saranno le stesse. In particolare tenete presente:
– la tabella “lingua”, che contiene i prefissi delle lingue usate nel sito
– la creazione della costante LANG, che contiene il prefisso della lingua corrente

In fondo vedremo inoltre un metodo più elegante per gestire la lingua. In base all’indirizzo IP dell’utente, ricaveremo lo Stato di provenienza e, di conseguenza, la sua lingua.

Leggi Tutto >>

Mappamondo pieno di bandiere degli Stati

I siti che vogliono aprirsi all’estero devono preventivare una gestione multilingua delle pagine (1)

Vi è mai capitato di dover gestire un sito in due o più lingue? No? Allora siete stati fortunati, perché con l’apertura all’estero (e in particolare per i siti di e-commerce) sempre più siti anche di “piccola taglia” vi chiedono di affiancare alla lingua italiana almeno quella inglese.

Quando progettate un sito web, di qualsiasi tipo, dovreste già pensarlo come se fosse un multilingua: spesso, infatti, il cliente vi chiederà soltanto in seguito l’aggiunta di una seconda o terza lingua. Se non avete previsto in anticipo l’aggiunta, risolvere il problema potrebbe richiedervi di stravolgere molte delle query che estraggono dati dal database.

In questo articolo vi propongo un sistema per gestire un sito web con un numero indefinito di lingue. Non è l’unico metodo possibile e può essere perfezionato, ma dopo vari miglioramenti lo ritengo un approccio affidabile di base e che permette di agire agevolmente sui testi modificando pochi file.
Il linguaggio utilizzato è il php con database di tipo mysql, ma è possibile seguire lo stesso procedimento per qualsiasi altro linguaggio.

All’interno dello script, liberamente scaricabile, troverete il codice essenziale che mostra la gestione in multilingua di una pagina: dovrete adattarlo voi al vostro sito.
Inoltre troverete i dump delle tabelle essenziali del database.

La tabella della lingua

Prima di tutto creiamo nel database la tabella “lingue” (trovate il dump da importare chiamato “lingue.sql”, dove sono già predisposte l’italiano e l’inglese).
La tabella da importare sarà questa:

1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE IF NOT EXISTS `lingue` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(255) NOT NULL,
  `estensione` varchar(2) NOT NULL,
  `predefinita` tinyint(1) NOT NULL DEFAULT '0',
  `nascosto` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

INSERT INTO `lingue` (`id`, `nome`, `estensione`, `predefinita`, `nascosto`) VALUES
(1, 'Italiano', 'it', 1, 0),
(2, 'Inglese', 'en', 0, 0);

Il campo “predefinita” indica quale lingua da settare per default. Presumibilmente è l’italiano, per cui dovrete inserire il valore 1 associato all’italiano (come da esempio). Il campo “nascosto” è in più, nel senso che potrà tornarvi utile nel caso in cui decidiate per qualche motivo di sopprimere una lingua (basta impostare il relativo record a 1).

Consiglio: fate in modo che l’estensione sia sempre di due caratteri, potrebbe tornarvi utile nel caso in cui dobbiamo effettuare controlli particolari sulla lunghezza del valore get.

Leggi Tutto >>