Federer quando la fa facile e vince i tornei del Grande Slam con disinvoltura é simile a un carrello elettronico progettato con php, mysql e paypal?

Quante operazioni mentali compie Federer quando colpisce la palla? Sta giocando il tie-break decisivo del quinto set in un Grande Slam e ha un match point. L’avversario ha un servizio potente e imprevedibile, Federer aguzza lo sguardo da diventare un falco pronto a reagire alla minima sollecitazione. Quando la palla impatta verso il centro del campo Federer fa un balzo felino e calcola la traiettoria di arrivo: non solo, il corpo e i sensi si prepara non con l’esperienza e la migliore percezione di un superoe della Marvel a decidere in un istante la sorte della palla. Che cosa vuoi fare Federer limitarti solo a mandare la palla al di là della rete per deciderla al prossimo colpo? O vuoi tentare una magia che chiude il match? Federer scegli  in un millesimo di secondo la seconda opzione, sistema i piedi nel modo migliore, riesce a portare il colpo nel posto giusto al momento giusto trovando in velocità la postura corretta e il punto di rimbalzo della palla viene calcolato alla perfezione: il lungo linea che ne scaturisce è da urlo e passa l’avversario che aveva tentato di portarsi a rete per pareggiare l’incontro ma la palla finisce sull’ incrocio delle righe e Federer vince l’ennesimo torneo internazionale facendo sembrare tutto semplice, tempestivo e armonico quando in realtà la complessità che ha dovuto superare per arrivare all’ obiettivo non è roba su cui si può sorvolare. Immaginiamo adesso un utente che non trova un vino in commercio nel quotidiano e vuole acquistarlo on-line. Trova un e-commerce che gode di ottima reputazione in rete, si registra sul portale e seleziona i prodotti dal carrello elettronico. Ne prende diversi, poi ci ripensa, poi cambia le quantità e cancella alcuni ITEM e infine usando la carta di credito paga l’importo e deve solo attendere il corriere in settimana che gli consegnerà il tutto. Ci sono così tante differenze tra quello che ha fatto Federer in una frazione di secondo e quello che fa l’utente acquistando in rete completando un ordine velocemente con qualche click? Anche qui sembra tutto facile, ma quanta complessità ritroviamo tra le due situazioni? Nel primo caso abbiamo la percezione di un umano che fa un gesto atletico straordinario scegliendo in un istante tutta una serie di parametri che gli consentono di scoccare un colpo vincente (calcolo della traiettoria di arrivo, posizionamento del corpo dopo una corsa, imprimere forza sulla palla angolando in maniera perfetta la racchetta verso un punto che viene scelto con cura) mentre nel secondo caso abbiamo un utente che clicca sul pulsante abbinato al prodotto, passa una query pari all’ ID del prodotto, recupera le informazioni di prezzo dal database e aggiungo il prodotto alla variabile di sessione carrello/idprod con valore qta=1 e aggiorno la variabile di sessione tot_prezzo: infine mostro il contenuto del carrello. Ma non finisce qui perché poi recupero la variabile di sessione tot_prezzo. Aggiorno la variabile di sessione carrello/idprodotto con la nuova qta associata. Aggiorno la variabile di sessione tot_prezzo. Cancello la variabile di sessione tot_prezzo. Carico la pagina con il modulo d’ordine. Questo lungo parallelismo ci porta dove volevamo arrivare, le cose non sono mai facili come sembrano e anche quando sembra che sia tutto semplice andando a scavare nel backstage scopri che le dinamiche che fanno funzionare quel prodotto (che sia Federer o un oggetto come un carrello elettronico poco importa) sono sempre complesse anche quando ridotte all’ osso e con un click porti a casa l’ordine. Grazie all’ Ing. Copelli WEBSU https://su.video-corsi.com/ ottima piattaforma didattica abbiamo dato un occhiata a quello che significa in pratica questa complessità. Nel tutorial dove si simula la costruzione di un e-commerce usando tecnologie come php-mysql e paypal, abbiamo familiarizzato sulla cura e la meticolosità che servono per far nascere un progetto simile, qualsiasi cosa si voglia vendere. Tralasciando gli aspetti legali, burocratici e amministrativi che sono tanti e tutti da conoscere prima di rendere il proprio carrello elettronico un servizio pubblico, la fase di preparazione deve essere accurata e analizzata al dettaglio altrimenti si rischia di incappare nel blocco del programmatore, simile a quello dello scrittore, dove si sa come partire ma non si hanno le idee chiare su dove arrivare. Dovrò in sostanza pianificare una serie di azioni e mettere in piedi pagine, pulsanti e azioni che dovranno rispondere a esigenze ben precise. Dovrò inizializzare una variabile di sessione che al suo interno dovrà contenere alcune variabili come tot_prodotto e tot_prezzo e anche un array di dati composto da informazioni recuperate da un database di supporto come idprod1, id prod2 e le rispettive quantità. Dovrò preoccuparmi di tenere la variabile tot_prezzo aggiornata. Lo stesso ddevo fare per tot_prodotto. Dovrò prevedere una inclusione di pagine nel mio pragetto che in ogni fase mi mostrerà a video i dati aggiornati durante la mia navigazione, insomma una VISION è fondamentale prima di mettere in piedi un meccanismo vincente come il colpo deciso da Federer in una minuscola frazione di secondo. Stiamo parlando ovviamente di un tutorial didattico proposto da uno dei più validi formatori in circolazione sul territorio che dobbiamo considerare come ridotto all’ osso e vettoriale nella sua forma grezza, essenziale e minimalista alla Carver. Insomma figuriamoci a quante grane vado incontro se dovessi costruire un satellite che deve raggiungere Plutone! Memorizzando le variabili di sessione che sono una sorta di territorio protetto che conservano la flora e la fauna delle informazioni, in questo caso i nostri dati selezionati, svincolandoci dalle problematiche dei database che a noi servono solo per recuperare le informazioni unitarie, abbiamo così trovato la soluzione ai nostri problemi. Ma certamente la fase di preparazione non è ancora finita perché dovrò prevedere diverse funzioni in cui gli utenti risponderanno per fare delle cose. Gli utenti selezionano e aggiungono. Gli utenti in base alle loro scelte aggiornano il carrello. Gli utenti hanno dei ripensamenti e cancellano. Gli utenti infine decidono che ne hanno avuto abbastanza e comprano usando paypal e carta di credito. Fine della storia. Quindi per costruire il mio accrocchio avrà bisogno di particolari funzioni che svolgeranno compiti precisi:

una function add_prodotto()

una function update_prodotto()

una function del_prodotto()

una function show_carrello()

una function show_totale()

come ci suggeriscono i nomi delle funzioni add sta per aggiungere, update per aggiornare i dati dopo l’inserimento, del per cancellare a seconda dei ripensamenti dell’ utente e le due funzioni di mostra sono interattive come interfaccia grafica per l’utente che avrà sempre modo di modificare le sue selezioni. Non solo ma dovrò prevedere delle situazioni in cui le azioni sono guidate dalle scelte fatte dall’ utente: quinsi se l’utente fa x tu fai questo, se sceglie y, fai quest’ altro, se opta per x allora dirottalo su quella procedura a seconda dei casi update, delete o add. Ancora convinti che le cose semplici non siano anche complesse? Dovrò immaginare delle variabili di ingresso che entrano nelle pagine in base ai criteri sscelti dall’ utente e che queste variabili debbano essere cattuate e veicolate verso azioni specifiche in base a un meccanismo di trasmissione che avviene sulla url con il metodo get e di cattura. Vediamo ad esempio cosa troviamo in Home Page come contenuti:

-In alto per prima cosa ha le sue sessioni attivate, un pò di inclusioni e poi la funzione set_session() che dovrà abbracciare il valore delle nostre selezioni, accudire i dati selezionati e aggiornarli di volta in volta:

<?php
session_start();
include(‘include/libreria_carrello.php’);
include(‘include/db_inc.php’);
set_session();
?>

sempre in alto nella zona dedicata al carrello ci ritroviamo un <p class=”alignr”><?php show_totale(); ?></p> che tiene aggiornato il totale delle nostre spese. Sotto ci sarà una banale (si ha un pò di paura a usare questo termine dopo aver processato il braccio di Federer!) SELECT che fa ruotare i campi della tabella contenuta nel database mysql, collegato grazie all’ inclusione db_inc.php precedente, con la voce critica aggiungi al carrello. Questa voce è vitale perché:

<p class=”alignr”><a href=”mostra_carrello.php?action=add&idp=<?php echo $idp?>” >Aggiungi al carrello</a></p>

passerà a una pagina di nome mostra_carrello.php tramite il metodo get del punto di domanda una azione di richiamo funzione che prende l’id del prodotto selezionato e lo va a inserire nella nostra variabile di sessione che registra i nostri movimento per approdare infine al carrello. A questo punto è chiaro che abbiamo bisogno di una libreria di appoggio che conterrà delle funzioni ognuna delle quali impiegata per un compito specifico il file appunto incluso da include(‘include/libreria_carrello.php’); il nome da dare a queste funzioni dovrà essere esplicativo del lavoro che svolgerà lo snippet di codice, così su php show_totale(); non abbiamo nessun dubbio su dove vogliamo andare a parare. A questo punto senza vedere le altre pagine che fanno il lavoro sporco, ci siamo resi conto di avere raggiunto il nostro obiettivo che era quello di capire cosa c’è dentro la testa di Federer quando sferra un colpo vincente e porta a casa una partita e magari con essa anche un torneo di grande prestigio. In rete sulla storia di questo grande campione abbiamo molto materiale da sviscerare, vedere per esempio http://www.faccebook.eu/wp/2016/09/28/roger-federer-perche-e-il-piu-grande-di-roberto-dingiullo-recensione/ . Per questo turial di sperimentazione di Umbriaway Consulting é tutto. Per gli approfondimenti legati alla costruzione di un prototipo di carrello elettronico primordiale si consiglia l’iscrizione alla piattaforma del bravo Ing.Copelli https://su.video-corsi.com/

“Non ho mai battuto Federer, è troppo per me.
Ma magari quando lo affronterò nel Senior Tour …”
(David Ferrer, ex numero due del mondo, commentando l’inquietante conteggio negli scontri diretti con Federer: 0-16)

MIXINS SASS e sai cosa bevi!

web design umbria

All’ indirizzo https://www.farwebdesign.com/projectsass/mixins/ c’è un esempio di tecnica MIXINS caratteristica di SASS. Per spiegare che cosa sono e che fanno, pensiamo solo alle TECNICHE DI INCLUSIONE DI PHP CHE consente agli sviluppatori DI INTEGRARE nella pagina i famosi INCLUDE E REQUIRE che non fanno altro che raccogliere righe di codice esterne espresse sotto forma di file e inserirle nella pagina principale. Pensiamo solo a una Home Page che ha una testata e un footer che potrebbero diventare per semplicità di gestione semplicemente parti esterne facilmente gestibili che comunque si vedrebbero in primo piano senza limitazioni. In SASS questo meccanismo è integrato e legato però non a inclusioni esterne, ma interne, nel senso che io potrei benissimo disporre di un blocco base che di volta in volta potrebbe variare a seconda delle esigenze e in questo caso potremmo pensare di inserire dei parametri di ingresso che mi consentiranno di cambiare magari la dimensione del Font solo parzialmente come espresso da questo esempio.

in rete ci sono interessanti articoli sui MIXINS su come ottimizzare blocchi di codice riutilizzabili come per esempio https://engageinteractive.co.uk/blog/top-10-scss-mixins e tanti altri COME https://www.html.it/pag/49695/i-mixin/

La nostra pagina come struttura non differirà dagli esempi precedenti:

<head>
<meta charset=”UTF-8″ />
<link rel=”stylesheet” href=”css/main.css” />
<title>SASS Variables</title>
</head>
<body>
<nav class=”nav”>
<ul>
<li><a href=”#”>Home</a></li>
<li><a href=”#”>About Us</a></li>
<li><a href=”#”>Services</a></li>
<li><a href=”#”>Contact</a></li>
</ul>
</nav>

<section class=”banner”>
<h1>Page Heading</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam voluptatem consequuntur molestias nihil dolor delectus similique culpa fugiat, numquam magnam.</p>
</section>

<footer class=”footer”>
<h3>Footer Heading</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam, laudantium.</p>
</footer>
</body>

file main.scss presente nella cartella scss, in neretto sono presenti le parti su cui focalizzarci:

$color-primary: orange;
$color-secondary: gray;
$color-tertiary: royalblue;

$font-lg: 40px;
$font-md: 30px;
$font-sm: 20px;

.nav {
background-color: $color-primary;

ul li {
list-style: none;
}

a {
text-decoration: none;
font-size: $font-sm;
color: $color-secondary;

&:hover {
color: $color-tertiary;
}
}
}

@mixin headingStyles($fontSize: 50px) {
font-size: $fontSize;
color: $color-secondary;
text-align: center;
}

@mixin transition($param…) {
transition: $param;
}

.banner h1 {
@include headingStyles($font-lg);
}

.footer h3 {
@include headingStyles;
@include transition(color .5s, background-color 1s);

&:hover {
color: $color-tertiary;
background-color: $color-primary;
}
}

web designer umbriavediamo il file main.css presente nella cartella CSS generato in AUTOMATICO dal compilatore SASS attivabile con il famoso npm run watch che richiama un file batch specifico che abbiamo inserito nella root dell’ applicazione ossia nel file packages.json iizializzato a inizio progetto con il comando INIT da CLI (da come il tutto è descritto senza virgole, la dinamica ricorda proprio le macchine futuristiche di Leonardo :-)).

.nav {
background-color: orange; }
.nav ul li {
list-style: none; }
.nav a {
text-decoration: none;
font-size: 20px;
color: gray; }
.nav a:hover {
color: royalblue; }

.banner h1 {
font-size: 40px;
color: gray;
text-align: center; }

.footer h3 {
font-size: 50px;
color: gray;
text-align: center;
transition: color 0.5s, background-color 1s; }
.footer h3:hover {
color: royalblue;
background-color: orange; }

web designer umbriaImmaginare solo una tecnica di inclusione interna di blocchi di codici riutilizzabili, soggetti di volta in volta a seconda dei casi e delle circostanze a piccole variazioni in una pagina CSS è pura follia, per questo SASS é un strumento versatile e potente sempre inserito nella lista delle conoscenze che un web designer dovrebbe ostentare quando si propone alla Nasa con il suo CV per lanciare satelliti su Marte. La magia di questa tecnologia consiste nel fatto che quello che si vede usando i MIXINS in https://www.farwebdesign.com/projectsass/mixins/ non punta a qualcosa che esiste realmente, ma a qualcosa che non esiste se non in locale. Quando il compilatore genera dal nulla il file statico CSS siamo di fronte solo alla punta dell’ iceberg perché come abbiamo visto il grosso del lavoro prima della pubblicazione su server in rete avviene localmente su computer dell’ utente con la Common Line Interface che rimane in ascolto mentre progettiamo le nostre pagine dinamiche scss e che dovrà preoccuparsi di compilare ogni volta a runtime ogni nuova implementazione. Il tutto ricorda un pò Matrix, perché paradossalmente vediamo di fatto qualcosa che non c’è, o meglio che viene compilato in locale e non sul server del nostro service provider.

SEO: ma è vero o non è vero che?!

web developer umbriaAlla redazione di web design Umbria pervengono costantemente delucidazioni sulle problematiche seo legate al posizionamento. Ma è vero che un buon titolo non deve superare i dodici caratteri? Vero! Ma è vero che un buon titolo deve essere persistente, congruente, prominente? Vero! Ma è vero che un buon titolo deve contenere le keyword inserite poi anche nel testo del documento? Vero! Ma è vero che il titolo deve essere sempre diverso per tutte le pagine del proprio sito? Vero, risponde web developer Umbria, che si ferma un attimo per riprendere fiato. Con il titolo io comunico il tema della pagine ai miei potenziali clienti quindi è chiaro che il tema scotta e anche non poco! Ci sono strumenti in rete che possono aiutare in queste questioni, tra cui il famoso: https://search.google.com/ . Ma ora non distraete Digital Strategist Umbria dal continuare il suo gioco del true o false: ma è vero che se ho un sito web che intende vendere mobili e al posto di scrivere nella pagina web di un prodotto specifico qualcosa di congruente tipo “poltrona reclinabile rivestita” ma inserisco terremoto in Italia Centrale sto facendo una cazzata? Certamente! Ma è vero che se inserisco frasi di benvenuto come welcome al posto delle keyword calde faccio una cazzata? Aridaje, ma certamente, gli spider tendono a ignorare le stop word costituite da articoli, preposizioni, congiunzioni se non fanno parte di una chiave mirata. Attenzione allo spam però, perchè una ripetizione ossessiva rischierebbe di penalizzarci. Attenzione anche a lasciare vuoto il tag TITLE. Attenzioni anche a non entrare in conflitto con parole chiave abusate sul web, denominate “poison word”, evitare quindi l’uso nei titoli di parole come link, directory, forum etc. Quando Google estrapola i titoli, non sempre viene mostrato quello del tag corrispondente, ma la query di ricerca congiuntamente ai contenuti delle ancore, all’ analisi dei titoli del feed rss, ai contenuti delle directory come dmoz, all’ url della risorsa porta poi all’ elaborazione in uscita di un titolo ottimizzato. Non sorprendiamoci quindi se la nostra pagina web a volte ha un titolo che differisce da quello riportato da Google. E a questo punto con social media marketing Umbria torniamo a occuparci del vero o non è vero. Ma è vero che il tag description è importante perchè la sua definizione verrà estrapolata come sintesi per quel sito? Vero! Ma è vero che la description va curata ai minimi termini e resa essenziale in modo da circoscrivere e localizzare il fenomeno? Ma è vero che non deve superare le 12-15 parole ossia 140 e 160 caratteri?! Vero. Ma è vero che la description equivale a forgiare una sorta di claim per rendere attraente i contenuti della pagina e attirare il lead alla sua visita?! Vero! Ma è vero che le description influenzano gli snippet poi in uscita elaborati da Google per la presentazione del nostro prodotto/servizio nelle SERP? Vero! Ma è vero che l’unicità delle description va tutelata per ogni singola pagina? Vero. Ma è vero che il contenuto deve essere coerente con il tema del sito? Vero, sentenzia Faraoni Enrico, ceo di Umbriaway Consulting, che aggiunge, deve anche usare frasi articolate chiare e poco surreali e non deve essere volatile nel senso di generico, perchè la description convoglia l’utente verso qualcosa che sta cercando e quindi deve attirare con contenuti pertinenti il visitatore. Ma del meta tag keyword ne vogliamo parlare? Al contrario degli anni novanta oggi è irrilevante, tutto al più dobbiamo usarlo come un rafforzamento posizionale dell’ informazione o qualcosa che cattura una esigenza inespressa sui motori di ricerca non ancora frequente. Oggi quello che noi sappiamo sulla seo è che parliamo di una congruenza di molteplici fattori e non più di particelle isolate rilevanti, poi anche più di 40 keyword vengono considerate spam dai crawler (virgola spazio come criterio di separazione). Oggi il meta tag keywords è relegato al compito marginale di mafioso che suggerisce e rafforza a completamento di una comunicazione generale che va ben oltre il singolo tag. Ciò non toglie che una pertinenza e coerenza di contenuti va rispettata, perché se vogliamo disegnare un tondo non ci mettiamo a inserire nel nostro mosaico generali degli angoli. E sul meta tag language? Serve per sfruttare gli strumenti di traduzione automatica e nella proprietà content o nella class di un div posso scrivere “notraslate” per impedire la traduzione. E’ bene ricordare che i documenti vanno specificati a un server web, per questo un documento html ha la clausola iniziale doctype. Con il meta tag robots posso dire al crawler se indicizzare la pagina o meno e ci sono alcune proprietà come index, noindex, follow e nofollow che fanno al caso nostro per migliorare la qualità dei nostri contenuti. I follow e nofollow vengono usati sui link quando io voglio validare o meno l’autorevolezza di un link esterno che deve essere pertinente e di valore aggiunto ai nostri contenuti. Le modalità per impedire di visualizzare i contenuti sono molteplici, posso proteggere le password con le cartelle, usare il noindex al meta tag robots come detto o agire sul file htaccess nella root del sito. Se non inserisco nessun meta tag robots gli spider partiranno in quarta a indicizzare tutti i contenuti. All’ interno dei meta tag posso anche personalizzare quello che uno spider deve fare o non deve fare con una sintassi del tipo “nome dello spider” legata a “una azione da compiere”. E sul file robots.txt quali istruzioni posso impartire? Vitali sono le proprietà User Agent che fa riferimento a quale robot il comando si applica e Disallow che serve a indicare quale è il contenuto da bloccare. Ad esempio per bloccare l’accesso a tutti gli spider al file dio.html scriverò Disallow: /mio.html, per non leggere i pdf: Disallow: /*.pdf$ etc. In rete si possono trovare numerose informazioni correlate a come impostare il file robots.txt in base alle proprie esigenze. I meta tag sono anche utili per settare i contenuti dell’ autore che acquisteranno sempre più importanza e il set di caratteri unicode, il più performante per visualizzare lingue straniere come l’arabo per esempio risulta essere utf-8. I contenuti di una pagina vanno organizzati con delle intestazioni che risultano essere molto importanti in ottica seo. Un tah h1 seguito da un sottotitolo h2 rende performante le nostre keywords. L’uso di questi tag deve essere decrescente per indicare agli spider una progressione di rilevanza. I ragni del web scansionano dall’ alto in basso e da sinistra verso destra quindi macinano subito quello che trovano in cima nella pagina. Posso anche stilizzare i tag di intestazione con regole css dove stabilisco font e size. Parlando invece dei link ricordiamoci anche di ottimizzare l’attributo TITLE all’interno delle ancore, sappiamo che una performances seo si ottiene curando i dettagli rispetto ai competitors quindi se parlando di vendita di autoveicoli nel title che tutti omettono scrivo = vendita autoveicoli Terni avrò senza dubbio dei vantaggi rispetto a chi non lo fa. In questo caso aiuta i nostri utenti, dando una caratterizzazione definita, gli utenti ritornano da noi se sono soddisfatti del servizio offerto, è una semplice questione di accessibilità. Poi i link vanno curati con l’attributo nofollow nel caso in cui ad esempio alcuni commentando i nostri post inseriscono anche eventuali url pubblicitarie. Inserendo nofollow diciamo agli spider di non prendere in considerazione tali contenuti proposti. Nofollow significa che non vogliamo passare la nostra reputazione ai link target. Un altro attributo importante oltre al Rel=”nofollow” e il Rel = “canonical” , che specifica delle regole relativamente ai contenuti duplicati tipo ecommerce con prodotti quasi uguali che differiscono ad esempio per colore ma che hanno pagine uguali. Con questo attributo posso specificare delle regole di visibilità. Si parla di canonizzazione degli URL che è un fattore correlato ai fattori di successo del page rank. E’ stata introdotta anche la proprietà “alternate” all’ interno dei link per risolvere i problemi di duplicazione sulle lingue e per differenziare i template di riferimento. Inoltre la rilevanza portata dai tag come strong, corsivo e sottolineato va rispettata perché gli spider macinano contenuti che vengono messi in evidenza ad esempio dal grassetto e il nuovo tag <strong> che sostituisce il deprecato <b>. Secondo alcuni esperti di posizionamento l’influenza nell’ uso di questi tag sarebbe molto bassa, ciò non toglie che noi come seo specialist umbria dobbiamo applicare le tecniche migliori per cercare dei vantaggi competitivi rispetto ai concorrenti. Su SEOmoz l’incidenza sulla seo di questi tag è pari alla sedicesima posizione e tyra strong, italic e underline non vi sarebbe nessuna priorità. Tuttavia esistono anche semplici regole non scritte di accessibilità, più un testo è digeribile e gradevole per l’utente, maggiore è la possibilità che ritorni sulla nostra pagina. Poi ogni motore ha le sue regole, ad esempio per BING sembra essere importante la keyword all’ interno del tag BOLD <b>. Sempre in ottica di accessibilità è bene ricordarsi che l’attributo ALT delle immagini, il famoso testo alternativo se l’utente per qualche motivo non vede l’immagine, va stilato correttamente, meglio ancora se inserisco una keyword. Anche i tooltip sono molto utili per guidare l’utente verso la migliore esperienza conoscitiva del nostro sito e dei nostri contenuti. In uno dei prossimi articoli con web design Umbria, parleremo del web semantico, approfondendo la questione delle nuove sezioni introdotte da HTML5.

Primi passi con un progetto complesso mysql/php: un db relazionale é come una scacchiera, parola di web design Umbria!

web design umbriaLa maggior parte dei libri e manuali tecnici che parlano di php e mysql dedicano i primi capitoli almeno un paio a un overview generale e tutto un capitolo prolisso sull’ installazione di mysql e poi sull’ installazione di php e poi sull’ installazione del server apache, osservazione critica di web design Umbria. Installate in locale xampp https://www.apachefriends.org/it/index.html e risolvete un sacco di problemi dipodiché vi concentrate senza perdere troppo tempo alla sostanza dei contenuti e non a quelli della cornice dal momento che in rete se qualcuno desiderasse installare i pacchetti isolati trova una grande quantità di guide e informazioni su come districarsi per ottimizzare le varie configurazione ambiente. Sostanzialmente in una architettura client e server si instaura un rapporto perverso simile a due tenisti dove il client invia una riochiesta interrogazione per mano dell’ utente e dall’ altra parte una macchina infallibile se le istruzioni sono corrette risponde in maniera ottimizzata per dare delle risposte dal server che invia i dati elaborati al client. Volendo potremmo anche vedere un esempio tipo questo da inserire nel body: <p>Today’s Date (according to this Web server) is <?php echo date(‘l, F dS Y.’); ?> che genera nel browser questa risposta: Today’s Date (according to this Web server) is Sunday, October 08th 2017. Questo é la dimostrazione di quanto detto precedentemente anche se qui l’utente non fa nessuna richiesta diretta ma é la pagina che aggiorna sempre dinamicamente il contenuto. Vediamo i parametri usati da indirizzo http://php.net/manual/en/function.date.php dove scopriamo che la l sta per (lowercase ‘L’) A full textual representation of the day of the week; la F sta per A full textual representation of a month, such as January or March e naturalmente Y per l’anno in 4 cifre. Ora che le pagine siano dinamiche siamo contenti ma le cose diventano davvero ionteressanti quando di mezzo abbiamo un database mysql per interrogare i dati, pensiamo solo a un contenitore dove mettere tutte le nostre barzellette preferite per estrapolare poi davvero quello che é di ns interesse di volta in volta. Immaginiamo cento pagine con cento barzellette diverse, una per ogni singola pagina HTML all’ interno del DB posso posizionare tutte le mie barzellette in unica soluzione tabella all’ interno di campi testo univoci contrassegnati da un id di appartenenza che le identifica. web design umbriaLe barzellette verrebbero selezionate in automatico, le pagine dinamiche costruite in base alle interrogazioni e gli inserimenti andrebbero ad accrescre il nostro numero di record con una query di INSERT. Un database é composto da uno o più tabelle e poniamo il caso che lo chiamiamo in questo caso jokes al plurale. Poi creeremo una tabella che avrà tre colonne contrassegnate da id , joketext e jokedate e con varie righe , una per ogni barzelletta inserita. Per ragioni di buona progettazione ogni tabella di database dovrebbe sempre dare la possibilità di identificare ognuna delle sue righe in modo univoco. I criteri per la costruzione dei database relazionali vedono proprio nel concetto di ridondanza il loro punto di lavoro critico nel senso che i record non devono essere ripetuti all’ interno della tabella e anche dati che compaiono più volte occupano inutilmente spazio in memoria. La progettazione del DB é fase molto delicata e ricca di implicazioni. Se il server host non mette a disposizione una finestra di accesso é possibile anche da finestra di comando windows cmd collegarsi all’ indirizzo IP della macchina con la login tramite il comando da root mysql, quindi mysql -h hostname -u username -p, tutto questo per dire che imparare i comandi mysql da riga di comando é cosa molto importante e non solo armeggiare sulla parte grafica di phpadmin presente in localhost. ad esempio mysql>SHOW DATABASES; mostrerà una risposta tipo due row in set seguito dal tempo di esecuzione con la rappresentazione grafica elemntare dei database mysql e test che sono quelli di default messi a disposizione dal software. Se scrivessi mysql>DROP DATABASE test; cancellerei il database test questo per dire che bisogna fare molta attenzione a quello che viene digitato. Il punto e virgola é la fine del comando e quindi se si omette posso anche spezzare i comandi su più righe per una migliore lettura di quello che voglio ottenere. Per uscire dal software basta un mysql>QUIT e Bye di conseguenza. Il metodo di inserimento dei comandi che useremo per governare MySQL per tutto il resto della trattazione fa parte di uno standard generale detto Structured query language o SQL e possiamo riferirci a questo linguaggio anche dicendo semplicemente query visto che to query sta a significare interrogare, cercare. SQL é un linguaggio standard per interagire con i DB e non ci sono grandi differenze saltando altrove semmai cambiano solo i dialetti. Basta solo non fare condusione tra MySQL e SQL, il primo é il software che ci viene messo a disposizione per immagazzinare i dati mentre il secondo é il linguaggio di interrogazione per ottenere i risultati di manipolazione modellazione estrapolazione che ci interessano. web design umbriaPer creare un database da riga di comando mysql>CREATE DATABASE ijdb; Per iJdb (internet joke database) dopodiché per usarlo e selezionarlo scriverò mysql>USE iJdb; Un database é vuoto finché non vengono aggiunte delle tabelle, quindi dovremmo preoccuparci come prima cosa di costruire un contenitore adeguato per i nostri dati. Dal punto di vista didattico per inserire i dati in un DB possiamo usare un doppio metodo tipo mysql> INSERT INTO table_name SET colonna1=value1, colonna2=value2…; oppure mysql> INSERT INTO table_name (colonna1, colonna2) VALUES (value1, value2)..;nel secondo caso nella seconda forma del comando INSERT l’ordine con cui ordinate le colonne deve coincidere con l’ordine con cui ordinate i valori. Per visualizzare i dati, aggiunge web design Umbria, si usa il comando mysql>SELECT * FROM joke; che tradotto significa seleziona tutti gli oggetti dalla tabella joke. Se i risultati appaiono disorganizzati posso estrapolare solo quello che mi interessa con la formula mysql>SELECT id, jokedate FROM joke; potrei anche desiderare di vedere almeno una parte della barzelletta e lo posso fare con questo comando specificando i caratteri: mysql>SELECT ID, LEFT (joketext,20), jokedate FROM joke; con COUNT posso visualizzare il numero di risultati avuti come numero di righe mysql>SELECT COUNT(*) FROM joke; possiamo anche cercare determinati attributi tipo tirami fuori tutti i record che sono stati inseriti dopo una specifica data mysql>SELECT COUNT(*) FROM joke WHERE jokedate>= “2004-0101”; possiamo anche estrapolare quelle barzellette che al loro interno hanno una specifica porzione di testo con mysql>SELECT joketext FROM joke WHERE joketext LIKE “%chicken%”; con LIKE parola chiave dico a mysql che la colonna nominata deve soddisfare una specifica qualità. Il segno % indica che la parola cercata può essere preceduta e/o seguita da una qualsiasi stringa di testo.Posso combinare quanto visto precedentemente con l’operatore logico AND per cui posso combinare il where con e il like con l’uguale e maggiore come data appunto unendo le espressioni con AND. Per aggiornare i dati la nomenclatura é mysql>UPDATE table_name SET colonnaname = new value, …WHERE conditions ad esempio possiamo cambiare una specifica data con il comando mysql>UPDATE joke SET jokedate=”1994-03-01″ WHERE id=1; per cancellare mysql>DELETE FROM table_name WHERE conditions; Per cancellare tutte le barzellette con la parola chiave pollo: mysql> DELETE FROM joke WHERE joketext LIKE “%chicken%”; inutile ricordare che bisogna fare molta attenzione nell’ usare la parola chiave DELETE ad esempio un comando da riga come questo mysql>DELETE FROM joke; svuoterebbe la tabella in un battito di ciglia! Per capire la forza di un database relazionale dovremmeo lavorare sulla dipendenza e sui legami tra molte tabelle dove esistono complesse relazioni tra le entità coinvolte. In una delle prossime sessioni di allenamento con umbriaway consulting andremo a vedere l’interazione specifica con i file php per modellare questi dati segregati nel contenitore. In rete ci sono molte guidi di riferimento per avere una sintesi dei principali comandi mysql per esempio: https://mauriziosiagri.wordpress.com/it/mysql/mysql-comandi-utili

Blog su WordPress.com.

Su ↑