ON PAGE FACTOR: ottimizzare le pagine web

Off Page factors smart clouds

Sono tanti i fattori che possono influenzare il posizionamento, i fattori interni ON PAGE in un progetto vanno curati nei dettagli. Certo poi senza attività promozionale (il SEM) non si va da nessuna parte ma come si suol dire Roma non è stata costruita in un giorno. Il primo passo da fare è la SCELTA DEL NOME DI DOMINIO che deve essere NON CONFONDIBILE nella comunicazione e nel messaggio che si vuole dare, dovrebbe contenere una Keyword e deve riflettere la realtà aziendale. Statisticamente le estensioni . INFO e .BIZ sono molto usate per azioni di SPAM e quindi soggette a PENALIZZAZIONI. Il DOMAIN NAME SYSTEM funziona come risolutore dei nomi di dominio, cioè traduce gli indirizzi IP numerici in parti semantiche comprensibili legate a quell’ IP o anche l’equivalente verbale di quell’ IP. Domini come business.com o casino.com sono stati venduti per cifre astronomiche, perchè? Perchè la scelta di dominio può portare acqua al proprio mulini, in questo caso dobloni. Il CYBERSQUATTING è una tecnica scorretta che vuole occupare nomi di dominio per poi rivenderli. Esistono entità che assegnano l’unicità, consultare ad esempio https://www.icann.org/ , oggi possono essere concessi domini con particolare estensione strategica come www.android.google o www.iphone.apple per esempio. Queste assegnazioni personalizzate però va detto sono molto costose ma le grandi aziende possono comunque beneficiare strategicamente della spesa effettuata. Per i comuni mortali è bene ricordare che il nome di dominio devve essere relativamente per questioni di praticità, deve diventare indimenticabile. E’ buona norma testare prima l’effetto che fa con amici e parenti. Il nome di dominio deve differenziarsi dagli altri e non va confuso deve essere esplicitamente chiaro sulla comunicazione che si vuole trasmettere. Certo che se il dominio www.sonofelice.it è occupato una pessima idea sarebbe quella di andare a registrare www.felicesono.it perchè si crea confusione e ambiguità. Il nome di dominio deve rispecchiare il brand aziendale, ad esempio www.barilla.it. Se l’azienda non ha le caratteristiche della Barilla basta cercare quelle caratteristiche aziendali che rendono quell’ azienda unica ed esclusiva in modo da estrapolare indicazioni funzionali. I domini .ORG e . NET rispecchiano le comunità in rete e quindi sono sempre molto graditi ma come azienda però non sono funzionali. Se ti vuoi muovere nelle macroaree europee devi prendere una estensione .EU, è bene tenere presente che la congruenza è premiante sul WEB e che se prendo un dominio .IT e poi presento una serie di prodotti in russo, la mia comunicazione non è di tipo lineare ma presenta delle contraddizioni. Molto dibattuta è la questione dei trattini in quanto un sito come www.energia-solare-umbria.com tende ad essere macinato da GOOGLEBOT come una frase composta da tre parole in quanto i trattini sono considerati per il motore spazi, ma siamo sicuri che da sole queste parole abbiano un senso organicamente compiuto? I siti dove sono presenti trattini i trattini sono difficili da pronunciare e da ricordare. Certamente si possono usare scorciatoie nel senso che si possono estrapolare delle keywords a coda lunga e usare la loro efficacia come registrazione di nuovi domini che puntano al principale tramite REDIRECT. Attenzione a NON DUPLICARE CONTENUTI su domini differenti. Certamente se le persone sono costrette ad usare la parola chiave direttamente nel link il valore aggiunto seo si commenta da solo esistono tecniche come la RANKABILITY mche usano un termine generico + una parola chiave. L’individuazione della parola chiave è importante e si possono estrapolare coppie di keyword in modo da arrivare a disegnare il contesto globale. Gli esempi che riportano i libri specializzati fanno leva ad esempio sul business dei pannelli fotovoltaici e quindi possiamo individuare le parole “pannelli fotovoltaici, energie rinnovabili, energia solare, energia elettrica, celle energetiche”. Combinando questa mappa con quelle del brand aziendale possiamo individuare ad esempio il nome di dominio (ad esempio SolarEnergy.it può essere un buon inizio). Bisogna trovare dei compromessi tra la SEO e il BRAND aziendale. Certamente l0idea di usare il trattino per evidenziare delle parole chiave a coda lunga con il REDIRECT ha la sua suggestione e la sua utilità pratica. Teniamo sempre presente che la SEO è una disciplina basata sull’ esperienza personale, una percezione soggettiva ma anche nelle sue metriche misurabili che si basa su test, prove e deduzioni. Certamente alcuni errori pacchiani vanno evitati, tipo la registrazione di un dominio fatta un decennio fa dove però dentro non si è mai mosso nulla a livello di contenuti, la duplicazione di contenuti e altre amenità. La storicità di dominio ha la sua importanza solo se i protagonisti del brand o servizio che si intende promuovere intendono movimentare con contenuti freschi ed aggiornati le pagine elargendo preziosi consigli che alimentano indirettamente una preziosa idea di consulenza su criticità esistenti. Il compito del webmaster o chi per lui, è quello di creare contenuti freschi, nuovi e di qualità, la questione della storicità lascia il tempo che trova anche se è pur vero che GOOGLE ha nel suo segreto algoritmo da elisir di lunga vita anche BREVETTI che lavorano in tal senso ma che non devono influenzare il nuovo imprenditore. Certo è che i BACKLINK di un sito degli anno novanta che parla di cucina si porta dietro una storicità che diventa credibilità e quindi tradotto miglior posizionamento. Il DOMAIN GRABBIN, tecnica che prevede l’acquisto di più nomi di dominio, serve nell ‘ottica del posizionamento seo? Se se registrano più nomi di dominio che vengono reindirizzati verso il principale con un redirect senza che vengano creati e modellati dei contenuti pertinenti la cosa ha poco senso, si certamente si tolgono spazi di dominio alla concorrenza e si estendono i confini del proprio recinto, ma quello che è efficace per la seo sono contenuti che poi reindirizzano verso il sito principale. Potrebbe essere vantaggioso registrare sottodomini corti anche per organizzare per sottogerarchie i contenuti del proprio progetto. Umbriabus.it è diverso da umbria-bus.it e da busumbria.it? Certamente! Strategicamente il primo identifica la collocazione geografica più pertinente e i due possono essere usati come sottodomini che con un REDIRECT puntano al sito principale. I domini che contengono parole chiave hanno più significato per la seo anche in ottica di scambio link. Una registrazione multipla per i nomi di dominio migliora il posizionamento nel caso diretto dei sottodomini, ma anche indirettamente nel caso del redirect di domini paralleli perchè questi ultimi magari migliorano la credibilità presso i fornitori rispetto al sito principale che è difficilmente pronunciabile e che tramite redirect comunque possono linkare il sito anche sui propri spazi promozionali per maggiore fruizione e visibilità. Dopo la scelta del dominio e tutte le valutazioni annesse e connesse arriva la SCELTA DELLE KEYWORD per identificare la nostra attività. Queste keyword dovranno essere ricorrenti all’ interno del testo e dei META TAG ma senza esagerare per non incorrere in penalizzazioni. Esperimenti di EYE-TRACKING hanno dimostrato che l’attenzione umana focalizza solo i primi risultati e non vanno oltre la terza pagina per cercare risultati pertinenti alla ricerca.Ci sono centinai di possibilità per essere scelti con delle frasi e query pertinenti e occore sondare quali sono sfruttabili e competitive rispetto a keyword troppo inflazionate ma di maggiore uso comune. Le keyword fanno parte di un concetto EURISTICO perché alla base i presupposti alla soluzione di un problema nato dalla domanda contenuta nella query. Per la scelta della keyword dobbiamo individuare i bisogni dei nostri utenti, conoscere le diverse tipologie di parole chiave che abbiamo a disposizione, dobbiamo metterci nei panni dell’ utente e immaginare le sue digitazioni, dobbiamo trovare un elenco di termini e sinonimi associati al nostro brand, magari studiando i nostri competitors nelle prime posizioni dei motori e guardando i loro articoli e il loro codice html. E’ importante poi usare i tools di supporto come lo strumento gratuito messo a disposizione da Google con adwords. Le Keyword scelte dovranno popolare titoli, contenuti, metatag, attributi, nomi di categoria etc. Le keyword meno competitive sono più facilmente posizionabili.

Annunci

Ancora tu? Non dovevamo vederci più? Battisti aveva in testa il dragone quando se ne uscito con la sua canzone di successo? Il dragone é scientificamente perdente? E perché Nakamura ci ha vinto con l’over 2700 di nero a Gibilterra? Lucho57 vs Faraoni Enrico e 17..gh5!? Novità Teorica con delirio

Ma il dragone non va a casa scientificamente? Il bianco non vinceva sempre in tutte le varianti? Hanno trovato qualcosa di nero per rivitalizzare qualche linea? Nakamura gioca il dragone nei tornei di alto livello e vince, perché lo fa? Calma, calma qui si dettano le mode e solo perché c’è una vittoria tutti si mettono a giocare il dragone! Ebbene si, nella partita di preallenamento per la serie A2 faraoni Enrico alias Nando Anando propone la sua bestia immonda a un impavido bianco (Lucho57, tempi veloci, chess24, 2 febbraio 2018)

1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 Ancora tu? Non dovevamo vcederci più? E’ molto raro che venga accettata la sfida sulle linee principali perché di solito vince non sempre il giocatore più bravo ma solo quello meglio preparato su quella linea. Per questa ragione dopo la seconda mossa del nero il bianco ha numerose alternative minori valide da sperimentare 6. Be3 Bg7 7. f3 O-O 8. Qd2 Nc6 9. Bc4 Bd7 10. O-O-O Rc8 11. Bb3 Ne5 12. h4 h5 13. Bg5 Rc5 14. g4 hxg4 15. f4 Nc4 16. Qe2 b5 17. h5!?

la variante principale é 17 f5! Da5 e si apre un mondo

17..gxh5!? il nero fa la sua novità teorica!

(17… Nxh5 e 17 ..Tg5!? 18 fg5 Ch5 con posizioni nebulose contemplate dalla moderna teoria delle aperture)

18. Bxf6 Bxf6

(18… exf6 19. Ndxb5 Nxb2 20. Kxb2 Qa5 21. Rd5 Bxb5 22. Rxc5 Qxc3+ 23. Kxc3 Bxe2 posizione giocabile per entrambi)

19. Nf5

(19. f5! Kg7! non facile da vedere come piano difensivo 20. Rxh5 Rg8 21. Qxg4+ Kf8 22. Qh3 Qb6 23. Rh7 Ke8 24. Qh5 Rf8 25. Qe2 Nxb2 26. Kxb2 Rxc3 27. Kxc3 Qc5+ 28. Kd2 Qxd4+ 29. Qd3 Qf2+ 30. Kc1 Qf4+ 31. Kb1 Qe5 32. Kc1 e il bianco deve subire il perpetuo sulle case nere altrimenti l’alfiere in g7 che ce lo metto a fare?)

19… Bxf5 20. Rxh5 Bxc3!?

(20… Bd7! 21. f5 Ne5 22. Rdh1 Rxc3 23. bxc3 e6 24. Qh2 Bg5+ 25. Kb1 Kg7 26. fxe6 Bxe6 27. Bxe6 fxe6 28. Rh7+ Kf6 29. Qh5 Nf3 30. Qxg4 Ke5 31. Qg3+ Rf4 32. Rd1 Kxe4!! e il nero gioca per vincere un giocatore normale difficilmente vedrebbe queste mosse di re al centro della scacchiera in pieno medio gioco)

21. bxc3 Qa5 22. Bxc4

(22. Qh2?? Qa3+ 0-1)

22… Qa3+ 23. Kd2 Rxc4 24. Qxg4+! gulp

24..Bg6 25. Rh3 Rxe4 26. Qh4 f5 27. Rg1 Kf7 28. Rxg6 Ke8 29. Qh5 Kd7 30. Rg8!! porca puzzola  30..Re1!! arigulp

(30… Rxg8? 31. Qxf5+ Kc7 32. Qxe4)

31. Kxe1 Qc1+ 32. Qd1 Qxd1+ 33. Kxd1 Rxg8

e il finale del bianco a gioco corretto é senza speranze. Che dire? Questa novità teorica del nero si può giocare? In questa partita ci sono mosse tattiche allucinanti di ogni tipo e per tutti i gusti anche nascoste nelle analisi, solo nel dragone sono possibili motivi tattici esasperati di complicata bellezza, per ora ha ragione NAKAMURA, il dragone, ANCORA TU, concludiamo con il testo della canzone immortale di Battisti:

 

Ancora Tu non mi sorprende lo sai
Ancora Tu ma non dovevamo vederci più
E come stai, Domanda inutile
Stai come me e ci scappa da ridere
Amore mio hai già mangiato o no
Ho fame anch’io e non soltanto di te
Che bella sei sembri più giovane
O forse sei solo più simpatica
Oh lo so cosa tu vuoi sapere…
Nessuna no ho solo ripreso a fumare…

Sei Ancora Tu purtroppo l’unica
Ancora Tu l’incorregibile
Ma lasciarti non è possibile
No lasciarti non è possibile
Lasciarti non è possibile
No lasciarti non è possibile
Sei Ancora Tu purtroppo l’unica
Sei Ancora Tu l’incorregibile
Ma lasciarti non è possibile
No lasciarti non è possibile

Lasciarti non è possibile

No lasciarti non è possibile

Disperazione gioia mia
Sarò Ancora Tuo sperando che non sia follia
ma sia quel che sia
abbracciami amore mio
abbracciami amor mio
Ché adesso lo voglio anch’io
Ancora Tu, non mi sorprende lo sai
Ancora Tu, ma non dovevamo vederci più
E come stai? Domanda inutile
Stai come me e ci scappa da ridere
Amore mio hai già mangiato o no
Ho fame anch’io e non soltanto di te
Che bella sei sembri più giovane
o forse sei solo più simpatica

 

23 Cc6! di Ljubojevic ed é subito punto: quando le parole del poeta si elevano insieme a Java ed Eclipse!

Nell’indimenticabile torneo di Bugojno ’86 indirizzo http://www.chessgames.com/perl/chesscollection?cid=1012088 c’è un dato analizzando la classifica finale che non può essere trascurato, il vincitore si ritrova un bello zero subito da un certo Sokolov. Ma guardando bene che ci fa un giocatore come Ljuboievic in terza posizione? Il fatto é che in quel torneo macinava idee e immaginazione, ad esempio contro Timman ecco cosa riesce a fare http://www.chessgames.com/perl/chessgame?gid=1092162 da qui la pseudo domanda del titolo: il nero gioca 22..Tg8 pensando di venirne fuori o aveva previsto che cosa sarebbe accaduto alla mossa successiva? Se é un superprofessionista il neofita dira tra se che l’avrà vista per forza questa risorsa ma non puoi ottenere sangue da una pietra, più di tanto quando finisce in posizione inferiore non puoi fare. Quindi 23 Cc6 e il nero finisce in guai grossi. Ma non tergiversiamo e con social media marketing Umbria entriamo nel vivo della programmazione Java grazie al fatto che il lavoro precedente sulla configurazione dell’ IDE ha prodotto buon esito come si evince all’ indirizzo: https://umbriawaydesign.wordpress.com/2018/01/19/cosa-succede-quando-un-giocatore-viene-mortificato-e-di-cognome-fa-mortimer-chiedilo-al-gm-eclipse/; in questa scorribanda formativa o autoformativa vediamo le caratteristiche dell’ IDE, osservando in dettaglio alcune funzionalità. La struttura é quella che si vede barra del titolo, barra dei menù, barra degli strumento, a sx abbiamo la gestione folder progetto al centro troviamo lo spazio per la stesura del codice a dx mi ritrovo la sezione outline e tasklisk che si possono spostare o chiudere con soluzioni flessibili grazie al trascinamento per rendere comoda la struttura personalizzata. In genere la visualizzazione cambia con le diverse modalità del progetto, in gergo vengono chiamate PROSPECTIVE con opzioni di visualizzazione verticale oppure orizzontale. Quello che a noi preme sapere che queste interfaccia visuali consentono sempre una altissima possibilità di personalizzazione e che ci sono sempre diverse soluzioni a un tipo di problema. Esiste anche una modalità di visualizzazione chiamata NAVIGATOR come finestra messa a fianco ad EXPLORER ma molte cose non sono strettamente necessarie. Posso anche impostare la visualizzazione gerarchica sui packages ma spesso queste varianti dipendono dalla soggettività del programmatore. Nella parte inferiore ho una finestra di debug dove cliccando due volte ho anche il dettaglio avanzato che punta al file incriminato. Eclipse di per se é un labirinto stile posizione analizzata sopra, piena di mosse e di contromosse! Il tutto é facile e intuitivo ma le voci di menù sono molteplici e un minimo di smanettamento é auspicabile prima di prendere possesso dello strumento. Posso anche scegliere le modalità di debug dalla barra degli strumenti per esempio, che mi presenta un menù a discesa per le mie esigenze su quale file intervenire. L’editor di codice della finestra principale é davvero potente! E’ ricca di aiuti e suggerimenti per guidare il web developer javista (se ci é consentito dall’ accademia della crusca) per individuare al più presto quello che non funziona e che manca per far funzionare l’accrocchio! Tornando alla questione posta da social media marketing Umbria  all’ inizio, cosa accade quando un agonista non vede una mossa in analisi, ossia quando l’avversario tira fuori dal cilindro dei colpi tattici come quello di Karpov alla mossa 49 all’ indirizzo http://www.chessgames.com/perl/chessgame?gid=1068476, certamente queste bordate destabilizzano e oltre a rafforzare la sicurezza del potenziale vincitore come in tutti gli sport, servono a gettare nel panico la mente del secondo giocatore che perderà il bandolo della matassa incapace di trovare delle mosse forti che potrebbero risollevare gli esiti della lotta.

Abbiamo il DOVERE di parlare di WEB FORM in PHP e della spettacolare partita di TAL giocata nel 1985 vs Ftacnik!

social media marketing umbriaBasta con i buzzurri giochi di parole che hanno consentito alla Juventus di approdare alla semifinale di Coppa Italia contro il Torino grazie a una partita taroccata per un errore umano al minuto settanta quando quel poveraccio di arbitro DOVERI (candidato a visionare prossimamente tornei di freccette) si permetteva di fare grandi danni a quegli sportivi che non tifano Juventus. Finiamola con questa becera rivendicazione e parliamo delle mosse di Tal lo scacchista. Come possiamo definire la Mikhail Tal vs Lubomir Ftacnik Nimzowitsch Memorial (1985), Naestved DEN, rd 8, Sicilian Defense: Scheveningen. Classical Variation (B84) 1-0 in 31 mosse? Un pestaggio sportivo ? O qualcosa simile a una prestazione sonora dei Nirvana modello Come As You Here? Qualcosa di vero c’è a giudicare l’ultimo parallelismo, le parole del testo esaltato da Kurt Kobain sono incomprensibili come le mosse tattiche giocate dal bianco: http://www.chessgames.com/perl/chessgame?gid=1045773. E’ complicato anche ricamarci sopra una bella telecronaca del tipo clamoroso allo Stadium, il bianco vince facile grazie a una incertezza della VAR. Le mosse di Tal sono semplici e oculate nella loro scelleratezza. Come soppesare una mossa come 15 f6!? Il nero forse si aspettava questa spinta di attacco? Un aspetto salta subito all’ occhio e cioé che tutto sommato i pezzi neri sono temporaneamente ripiegati sull’ ultima traversa a esprimere un potenziale limitato rispetto a un gioco di squadra che potrebbero orchestrare. E dopo 20 Ah6 come avrà cambiato la sua valutazione il nero? Avrà finalmente capito in guai seri, chiede social media marketing Umbria? Per le prestazioni di Tal e le sue best games vedere link http://www.chessgames.com/perl/chesscollection?cid=1005503. E ora passiamo a parlare di WEB FORMS per gli sviluppatori PHP che sono strumento o risorse messe a disposizione per consentire all’ utente di processare i dati, sottolinea social media marketing Umbria. Hai presente un modulo di LOGIN? Hai presente dettagli come nome , cognome, indirizzo, mail? Siamo dentro ai web form ma anche ai METODI che servono per processare e spedire queste informazioni. PHP offre un vasto campionariod i opzioni per gestire i FORM al meglio e non dimentichiamoci poi dell’ integrazione con JQuery ed Ajax che consentono un aggiornamento senza passare per il rendering della pagina. Passiamo a valutare con mano e a toccare un esempio pratico che social media marketing Umbria ha messo in piedi all’ indirizzo http://www.farwebdesign.com/php/Example8-webforms.html. Il tag FORM come si evince dalla gallery circoscrivono l’ambito di lavoro della spedizione dei dati e come tutti i tag HTML prevedono la solita apertura chiusura di rito. In una architettura client server, cioé all’ interno di un sistema dove qualcuno richiede e qualcun’ altro predisposto a rispondere, risponde, esistono due modi diversi di spedire i dati GET e POST. Coh get come si evince dal link di cui sopra le variabili transitano sopra la URL e sono visibili il che potrebbe essere un problema in termini di sicurezza, fa notare social media marketing Umbria, per questo spesso si usa il metodo (METHOD nello script) POST dove il tutto passa sotto silenzio in maniera coercitiva! HTTP per Definisce il protocollo di trasferimento ipertestuale come comunicano il server e il client. L’ & come simbolo separa le variabili nella stringa URL nel metodo GET. In uno dei prossimi articoli con social media marketing Umbria affronteremo la spinosa questione del perché l’uomo non sia ancora allunato su Marte (si fa per dire!).

PHP: un buon libro per vedere in azione i fondamenti!

agenzia web marketingUn buon libro per imparare PHP é quello che suggeriamo in questo post da cui preleviamo un estratto. PHP. Una sigla con la quale tutti noi che navighiamo in rete abbiamo avuto a che fare qualche volta (anche semplicemente per aver trovato una pagina con il suffisso “.php”). Una sigla che per qualcuno evoca un obiettivo da raggiungere nell’ambito dello sviluppo di siti web. Che per qualcun altro evoca uno dei primi CMS, quel famoso “PHP-Nuke” tanto in voga qualche anno fa. Che per i miei ex compagni di università evoca notti insonni passati davanti al computer per passare un esame… ! Ma alla fine una sigla che per noi rappresenterà un modo per creare siti dinamici. Ecco, mettiamoci subito d’accordo sul termine “dinamico”. Capita spesso (è capitato anche a me) di avere clienti che chiedono un sito “dinamico”, e con “dinamico” il 99% delle volte intendono un sito “che si muove” (con animazioni in Flash, per intenderci). Non è affatto così. E per capire cosa si intende correttamente per “dinamico”, dobbiamo sapere che il linguaggio PHP è un linguaggio lato server, a differenza, per esempio, di JavaScript che invece è un linguaggio lato client. Cosa significa questo in breve? Significa che uno script JavaScript verrà interpretato dal vostro browser, che eseguirà il codice e si comporterà di conseguenza. Invece le operazioni di un linguaggio lato server come PHP saranno compiute, come dice il termine stesso, dal server, che consegnerà al client (e cioè al browser nel nostro caso) la pagina HTML, codificata dopo aver eseguito una serie di operazioni. Avete mai provato a vedere il codice delle pagine PHP sulle quali navigate? Bene, avrete sicuramente notato che se cliccate “sorgente pagina” (io uso Firefox) su una pagina di un sito in PHP vedrete che in realtà non c’è neppure una riga di codice PHP, ma soltanto HTML. Se invece osservate il codice di una pagina che ha uno script JavaScript, vedrete al contrario lo script nella sua interezza. Perché succede questo? Molto semplice: il codice PHP sta sul server, che lo interpreta e, come detto prima, consegna al browser la pagina già codificata. Per questo motivo vedete solo HTML e non PHP. Quindi, non è neppure possibile copiare il codice PHP (una volta che è stato eseguito) da un altro sito. Tornando quindi al termine “dinamico”, ora possiamo dire che i linguaggi lato server producono dinamicamente il contenuto a seconda delle richieste dell’utente, anche con interrogazioni al database (l’interazione tra PHP e un database di tipo MySQL è uno degli argomenti di questo corso). Ecco cosa si intende per “dinamico”! Pensiamo per esempio a un sito che ci serve per cercare un dato in un database con centinaia di campi: per esempio un indirizzo di un ristorante in un sito che ospita un database di tutti i ristoranti d’Italia. Noi cercheremo un ristorante in Liguria (magari attraverso un semplice form di ricerca), e il server, interpretando la nostra richiesta, ci produrrà in modo dinamico una pagina che conterrà gli indirizzi di tutti i ristoranti liguri memorizzati nel database, tralasciando quelli che non ci interessano. Invece intendiamo con “statico” un sito prodotto con un linguaggio come HTML: esiste una sola pagina ed è quella per tutti, e non ci sono contenuti che vengono prodotti a seconda delle richieste dell’utente. Prima di iniziare a mettere le mani sul codice, è necessario sapere che creare un sito con PHP (alcuni dicono anche “programmare in PHP”!) è un po’ diverso rispetto a creare un sito con HTML e CSS, perché abbiamo bisogno di qualche strumento aggiuntivo, necessario per poter svolgere il nostro compito. Quello che ci serve è un cosiddetto “ambiente di sviluppo” (o “piattaforma di sviluppo”, se preferite): dal momento che PHP è una tecnologia lato server, dovremo creare un piccolo server sul nostro computer in modo tale che il nostro codice possa funzionare, e insieme a questo server dovremo avere anche un programma che ci permetterà di gestire il database, se vorremo utilizzarlo. La scelta è vivamente consigliata, perché se iniziate a mettere le mani sul PHP, prima o poi vi capiterà sicuramente di dover creare un sito PHP/MySQL. Ma di questo parleremo più avanti! E infine, ovviamente, dovremo avere installato sul nostro computer, oltre a server e database, il codice. Queste tre componenti (codice, server e database) costituiscono l’ambiente di sviluppo. Sono davvero molti gli ambienti di sviluppo che si trovano in giro per la rete, ma io vi consiglio WAMP, acronimo di Windows (tra poco vi dirò come fare con Linux), Apache (il nome del server), MySQL (il database: il programma integrato in WAMP per la gestione dei database è PhpMyAdmin) e, naturalmente, Php. Per scaricare WAMP basta recarsi sul sito http://www.wampserver.com (o http://www.wampserver.com/en, se non avete familiarità con il francese). Dicevo, per gli utenti che utilizzano Linux, l’ambiente di sviluppo (server, PHP e MySQL: potete chiamarlo “Lamp”, con la “L” che sta per “Linux”) si trova già nel sistema operativo e basterà avviarlo (vi consiglio però di scaricare PhpMyAdmin da http://www.phpmyadmin.net, è un programma favoloso). Altrimenti potete utilizzare un altro ambiente, che si chiama XAMPP e va benissimo anche per chi usa un Mac: trovate l’ambiente di sviluppo all’indirizzo http://www.apachefriends.org. Io preferisco WAMP (e lo conosco molto meglio), quindi faremo riferimento a questo ambiente, perché è molto semplice, è veloce da utilizzare e non richiede alcuna conoscenza di base! A questo punto facciamo un bel download (è pubblicato con licenza GNU GPL, quindi è libero e gratis!) e installiamo la piattaforma sulla nostra macchina (durante l’installazione dovremo indicare un browser che ci servirà quando faremo le prove: indicate pure il vostro browser preferito). Clicchiamo sull’icona di WAMP per farlo avviare: noteremo che nella barra delle applicazioni apparirà un’icona a forma di W racchiusa in un rettangolo (nelle versioni più datate, l’icona era invece una specie di semicerchio), che in fase di caricamento sarà dapprima rossa, poi gialla e infine diventerà tutta verde: solo quando l’icona sarà tutta verde potremo iniziare a lavorare. Facciamo ora clic con il tasto sinistro del mouse sull’icona: vedrete un elenco di voci, e per spiegarle partiamo dal fondo. L’ultimissima, “Metti online”, ci serve se vogliamo mettere in rete il nostro server (magari stiamo chattando con un’amica o con un amico e vogliamo fargli vedere la nostra creazione! Quindi all’inizio, visto che non avremo niente da far vedere, non ci servirà). Le due successive, “Ferma tutti i servizi” e “Riavvia tutti i servizi”, ci servono se vogliamo “spegnere” oppure “riavviare” il nostro server virtuale, e la terzultima “Avvia tutti i servizi”, sarà da utilizzare dopo che avremo, per un motivo o per l’altro, “spento” il nostro server (la dicitura “tutti i servizi” si riferisce alle componenti dell’ambiente di sviluppo, e cioè il server stesso, il linguaggio PHP e il database). Troviamo poi “MySQL”, “PHP” e “Apache”: queste tre voci hanno sottomenù con le varie configurazioni. Lasceremo quelle di default, che ci vanno benissimo così come sono: andranno cambiate solo se utilizzeremo dei CMS e ci serviranno delle modifiche particolari. La prossima voce è “www directory” ed è importantissima, perché è la cartella dentro alla quale inseriremo tutti i nostri progetti. Proviamo a farci clic con il tasto sinistro: per ora è vuota, fatta eccezione per la pagina index.php che è la pagina principale del server virtuale. Ne parleremo in modo più approfondito tra pochissimo. Abbiamo poi il nostro PhpMyAdmin, il programma che serve per gestire database di tipo MySQL: quando lavoreremo sui database, noi utilizzeremo MySQL. L’ultima voce che troviamo partendo dal basso è “Localhost”: proviamo a cliccarci sopra. Vedrete che si aprirà il vostro browser preferito (… o almeno quello che avete indicato al momento dell’installazione) con la pagina principale di Wampserver, e cioè quell’index.php di cui si diceva poco fa: la pagina ci mostra la configurazione del server, i “tools” (che sono i già citati programmi per il database assieme a phpinfo(), la pagina che ci mostrerà le configurazioni del PHP) e infine i nostri progetti! Per adesso la colonna è vuota, ma per riempirla si fa prestissimo. Andiamo nella www directory, creiamo una cartella e chiamiamola “nuovosito”: torniamo sul Localhost e vedremo che nella colonna “Your Projects” troveremo “nuovosito”. Ma torniamo al punto da cui siamo partiti: la sigla. Cosa significa PHP? È un cosiddetto acronimo “ricorsivo”, perché significa “PHP Hypertext Preprocessor” (“PHP Preprocessore di Ipertesti”): un acronimo ricorsivo è un acronimo in cui una delle lettere sta per la sigla, insomma un acronimo che contiene se stesso. “Preprocessore” è invece un termine informatico con il quale ci si riferisce a un programma che compie alcune operazioni preliminari prima dell’esecuzione del codice: il nostro linguaggio contiene il termine “preprocessore” perché prima di inviare la pagina HTML finale all’utente vengono interpretate, appunto, le istruzioni del codice, quindi prima che la pagina HTML venga consegnata al nostro browser, il preprocessore PHP compie alcune operazioni. Che espressione utilizzeremo per indicare PHP? O meglio… che tipo di linguaggio è? Non è ovviamente un linguaggio di markup. Il papà di PHP, il danese nato in Groenlandia Rasmus Lerdorf, lo chiama “linguaggio di scripting”, quindi io direi di utilizzare questa espressione, che sta bene anche con JavaScript. Curiosità: PHP è stato inventato nel 1994. Da allora ne ha fatta di strada! I vantaggi che derivano dall’utilizzo di PHP sono davvero molti e li scopriremo man mano che andremo avanti con il corso. Possiamo anticipare che PHP è facile da apprendere (certo, ci vogliono un po’ di pratica e un po’ di esercizio), che PHP ci semplificherà notevolmente la vita per alcune operazioni, che grazie a PHP potremo gestire meglio i dati del nostro sito, e che con PHP potremo anche, se avremo pazienza e soprattutto tempo a disposizione, costruire un nostro piccolo e semplice CMS personale! Bene, dopo aver installato l’ambiente di sviluppo è ora di cominciare a scrivere un po’ di codice! La prima cosa da sapere è che possiamo inserire codice PHP in qualsiasi punto della pagina: all’inizio, a metà, alla fine… dove vogliamo. Però prima di scrivere il codice… dobbiamo creare la pagina! Apriamo quindi la cartella “www” di WAMP e creiamo una nuova cartella, a cui daremo il nome che più ci aggrada: per questo esempio potremmo chiamarla PrimoProgetto. Apriamo la cartella PrimoProgetto e creiamo una pagina che chiameremo index.php: esattamente come per i siti in HTML, la prima pagina deve chiamarsi “index”. Cambia, ovviamente, l’estensione. Bene, adesso creiamo la struttura HTML come siamo abituati: doctype, tag html, insomma tutto ciò che serve per creare una pagina HTML in accordo con gli standard internazionali, che dovremo rispettare sempre anche progettando un sito in PHP! Creata la nostra pagina siamo finalmente pronti per aprirla con il nostro editor preferito (io consiglio di installare Notepad++) e per scrivere il nostro primo codice! Tutto il testo in PHP deve essere compreso tra un’etichetta (o tag, come preferite, io uso i due termini indistintamente) di apertura e un’etichetta di chiusura. Le etichette di apertura e chiusura sono queste:

<?php

?>

All’interno di queste due tag andrà inserito tutto il nostro codice, stando bene attenti a non commettere errori… vedremo tra pochissimo quanto sono facili le sviste con il PHP. Il primo comando che impariamo si chiama “echo”. Questo comando è un costrutto che serve per stampare a schermo una stringa di testo, ovvero ogni volta che digiteremo il comando echo, seguito da una stringa tra parentesi e apici o doppi apici e chiuso da un punto e virgola, vedremo comparire (quando apriremo la pagina con il browser), quella scritta che abbiamo inserito nel comando. Per vedere il risultato con WAMP, vi basterà cliccare sull’icona nel menù delle applicazioni e cliccare quindi su “Localhost”: si aprirà il vostro browser preferito con l’elenco dei progetti, nel nostro caso “PrimoProgetto”. Cliccate su “PrimoProgetto” e vi si aprirà la pagina index.php. Ma passiamo ora a un esempio pratico del comando echo:

<?php
echo (“Ciao, io mi chiamo Federico!”);
?>

Dal momento che echo non è una funzione (vedremo poi più avanti cosa sono le funzioni), possiamo anche omettere le parentesi:

<?php

echo “Ciao, io mi chiamo Federico!”;

?>

E possiamo cambiare i doppi apici con gli apici:

<?php

echo ‘Ciao, io mi chiamo Federico!’;

?>

Gli apici o i doppi apici devono sempre essere due! Una cosa del genere non può esistere perché restituisce un errore:

<?php

echo ‘Ho visto un’anatra’;

?>

Se proviamo a scrivere questa cosa sopra e poi proviamo ad aprire la pagina index.php scrivendo, nella barra degli indirizzi del nostro browser, http://localhost/PrimoProgetto/index.php, vedremo comparire una scritta del genere:

Parse error: parse error, expecting `’,” or `’;” in [percorso] on line [numero riga]

Significa che manca un apice, perché il server interpreta l’apostrofo dell’anatra di cui sopra come un apice (e in effetti, abbiamo usato il carattere dell’apice, e non quello dell’apostrofo, che è diverso, anche graficamente). Come fare quindi se ci serve un apice che faccia da apostrofo? Semplice: utilizziamo il carattere di escape, che è nient’altro che la backslash, subito prima dell’apice:

<?php

echo ‘Ho visto un\’anatra’;

?>

i caratteri di escape diranno che si dovrà tener conto di quell’apice per snobbarlo e non generare un errore. Ah, un’altra cosa a cui fare bene attenzione: non confondete gli apici con gli apostrofi e i doppi apici con le virgolette. Se scriveremo il codice con il blocco note o con un editor come Dreamweaver non avremo problemi, ma se avremo l’insana idea di scrivere il codice con, che so, Writer, i doppi apici vi verranno automaticamente trasformati in virgolette e se proverete a copiare il codice con le virgolette al posto dei doppi apici in una pagina PHP, non vi funzionerà niente. E altra cosa importante, non dimenticate il punto e virgola alla fine. State bene attenti a non confondere apici e doppi apici tra di loro (per esempio non potete aprire un echo con un apice e chiuderlo con un doppio apice): sembrano banalità ma si possono trascorrere mezz’ore con complesse funzioni PHP che dànno errore per scoprire alla fine, dopo aver controllato ogni singola riga di complicatissimi cicli o blocchi di istruzioni, che è tutto causato da un echo chiuso male e a cui magari non si è neppure fatto caso. Eh, per il PHP ci vuole un po’ di pazienza. Tornando a noi, possiamo utilizzare echo anche per stampare tag HTML:

<?php

echo ‘<strong>Ciao</strong>, io mi chiamo <em>Federico</em>!<br />Come va?’;

?>

E possiamo concatenare più stringhe utilizzando, tra una stringa e l’altra (ognuna compresa tra apici o doppi apici), il punto e chiudendo il tutto, al solito, con il punto e virgola:

<?php

echo ‘Questa’. ‘ è una’. ‘ concatenazione ‘. ‘di stringhe!’;

?>

In questo caso però state attenti agli spazi se non vorrete vedere le parole tutteattaccatecosì. La concatenazione ci sarà molto utile in futuro per fare alcune operazioni, soprattutto quando vedremo come far interagire PHP e MySQL: quindi dobbiamo impararla bene. Infine impariamo a usare i commenti. Ci sono due modi per commentare in php: su una riga o su più righe. I commenti su una riga si aprono con un doppio slash:

<?php
// questo è un commento su una riga
?>

Mentre quelli multiriga si aprono con backslash e asterisco e si chiudono con asterisco e slash, proprio come i commenti CSS:

<?php

/* questo è un commento

multiriga */

?>

Non ci sono particolari raccomandazioni sull’uso dei commenti: dobbiamo solo stare attenti a dove metterli. Non possiamo per esempio metterli tra il comando echo e il doppio apice:

<?php

echo //questo è sbagliato e restituirà un errore “Ciao a tutti!”;

?>

I commenti, come nel caso di CSS, ci serviranno se vorremo descrivere alcune parti di codice a chi le leggerà, per esempio. Oppure per ricordarci che cosa fa una certa funzione. Insomma, ognuno fa dei commenti l’uso che più ritiene necessario! C’è anche chi non li utilizza, ma io consiglio sempre di usarli, perché quando avremo a che fare con funzioni molto complesse ci sarà utile commentare alcune righe per ricordare meglio certi passaggi. Per noi che siamo abituati a creare siti in HTML, i CSS sono una bellissima invenzione: con pochi clic possiamo cambiare grafica, colori, immagini di sfondo, ampiezza dei div al nostro sito. Sono un po’ come dei vestiti di sartoria che cuciamo su misura per il corpo della nostra pagina web. Ma ci sono punti a cui anche i CSS non possono arrivare, purtroppo. Supponiamo di aver creato un sito di cinquanta pagine, con un bel menù come questo:

<pre>

</pre>

Supponiamo anche che, per una qualsiasi ragione, dobbiamo modificare questo menù, magari aggiungendo una voce. Con HTML l’unico modo per aggiornare il menù è aprire tutte le nostre cinquanta pagine e in ognuna di esse aggiungere la voce mancante. Una bella seccatura, non c’è che dire. A questo punto entra in gioco uno dei costrutti più utili di PHP: si chiama include e serve, come dice il nome stesso, per “includere” in una pagina un file esterno. Ma vediamone subito l’utilizzo. Prima di tutto dobbiamo creare un nuovo file in cui inseriremo soltanto il menù: pertanto inseriremo nel nuovo file la ul e tutto il suo contenuto, ma non il div. Possiamo assegnare a questo nuovo file il suffisso txt o ancora meglio il suffisso html. Chiameremo quindi il file “menu.html”. A questo punto portiamoci nella pagina principale (per esempio, “index.php”) e, al posto della ul, utilizziamo il costrutto include, sempre aprendo il codice PHP come abbiamo imparato nel capitolo precedente:

<pre>

</pre>

Se aprirete la pagina, noterete che avrà un aspetto identico a quello della pagina creata solo con il codice HTML, perché questo costrutto non fa altro che inserire all’interno della pagina il contenuto di un file esterno. Osservando il codice avrete già intuito la sintassi del costrutto: include con, tra parentesi, il nome del file racchiuso tra doppi apici (o apici), il tutto chiuso da punto e virgola. In questo modo, ogni volta che dovremo modificare il menù, sarà sufficiente apportare le modifiche al solo file “menu.html” e automaticamente, se avremo utilizzato “include” in tutte le cinquanta pagine, le modifiche saranno estese a tutto il sito! Davvero una grande comodità! È inteso che il nome del file che includiamo tra parentesi e apici o doppi apici deve trovarsi nella stessa cartella del file principale. Altrimenti dovremo specificare il percorso nello stesso modo in cui specifichiamo i percorsi, per esempio, di file html con l’etichetta a, ma senza poter utilizzare percorsi completi (per esempio: http://www.miosito.com/includes/menu.html)… i percorsi devono sempre essere relativi:

<?php

include(“includes/menu.html”);

?>

<?php

include(“../menu.html”);

?>

Include è del tutto simile a echo, quindi anche se omettiamo le parentesi non succede niente di strano. Sappiate però che è indifferente usare o meno le parentesi. È però molto importante non sbagliare i percorsi: nel caso in cui non dovessimo specificare il percorso corretto, comparirebbe un warning nella nostra pagina, e sinceramente non sarebbe bello da vedere. E ovviamente il file che vogliamo includere non sarà affatto incluso se sbagliamo il percorso! Il costrutto include, come abbiamo visto, è anche sufficiente per creare il nostro primissimo sito in PHP e ci aiuta già a risolvere un grosso problema. A proposito: attenti a chiamare include “funzione” (cosa che avviene in moltissimi siti), perché non è una funzione. Lo so, vi starete ancora chiedendo cos’è una funzione. Tra non molto ci arriveremo! Per completezza dobbiamo sapere che esiste anche un altro costrutto per includere file esterni, che si chiama require e funziona allo stesso modo di include:

<?php

require(“menu.html”);

?>

Qual è la differenza tra include e require, dal momento che il risultato prodotto è lo stesso? La differenza sta nella gestione degli errori: come abbiamo visto, include, nel caso in cui ci sia qualcosa che non va (come il percorso sbagliato) restituisce un warning, ovvero una scritta che vi avverte dello sbaglio: questo però non impedisce che il resto della pagina si possa vedere correttamente. Require invece restituisce un fatal error: se c’è qualcosa che non va nel require, si blocca tutta la pagina. Vi invito a fare qualche prova con la vostra pagina “index.php” per notare la differenza, anche perché il PHP si impara, più che con la teoria, con la pratica e con l’esercizio!

Ma se cambio le regine finita l’apertura posso vincere lo stesso velocemente? Chiedilo a JQuery o a Kasparov scacchista di strada del Drosso!

agenzia web marketingAll’indirizzo http://www.chessgames.com/perl/chessgame?gid=1070111 vediamo in azione il giovane Kasparov vs il vecchietto Smyslov nel famoso match per la qualificazione al titolo mondiale, erano gli anni della Milano da bere tanto per intenderci, quelli in cui l’economia era alle stelle grazie a manovre strategiche leggermente diverse rispetto a quelle che si attuano sulla scacchiera. Questa partita risponde alla domanda critica posta da agenzia web marketing: ma se cambio le regine in apertura, poi, dopo, ho la possibilità di vincere lo stesso? I principi sono sempre gli stessi, spazio, iniziativa, incrementare la pressione, coppia degli alfieri, non é che bisogna velocizzare sempre dando scacco matto e sacrificando 40 unità, la tecnica é pur sempre la tecnica di concretizzazione del vantaggio, il tema é quello di mettere insieme tanti piccoli vantaggi a volte impercettibili per convertire tutto in vantaggio materiale o mettere il re avversario con le spalle al muro, conclude agenzia web marketing. E ora risaltiamo in modalità Toggle() verso JQuery. Quando si apre una pagina Web in un browser, l’HTML della pagina viene caricato e reso visivamagenzia web marketingente sullo schermo. Per fare ciò, il browser costruisce il Document Object Model (DOM) di quella pagina, che è un modello orientato agli oggetti della sua struttura logica. Il DOM di un documento HTML può essere rappresentato come un insieme di caselle annidate. Il DOM rappresenta un documento come una struttura ad albero in cui gli elementi HTML sono nodi interconnessi nell’albero. I nodi possono avere nodi figli. I nodi sullo stesso livello dell’albero sono chiamati fratelli. jQuery traversing è il termine usato per descrivere il processo di spostamento attraverso il DOM e trovare (selezionare) elementi HTML in base alla loro relazione con altri elementi. JQuery rende facile attraversare il DOM e lavorare con elementi HTML. Andiamo a dare un occhiata con agenzia web marketing al processo denominato DOM Traversal. Ad esempio, considera l’HTML rappresentato dalla seguente struttura dove ho in alto il tag HTML , sotto il BODY che si divide in due elementi fratelli, H1 e A. L’elemento <html> è il genitore di <body> e un antenato di tutto ciò che si trova al di sotto di esso. L’elemento <body> è il genitore degli elementi <h1> e <a>. Gli elementi <h1> e <a> sono elementi figlio dell’elemento <body> e discendenti di <html>. Gli elementi <h1> e <a> sono fratelli (condividono lo stesso genitore e si trovano sullo stesso livello).Jquery ha molti metodi utili per l’attraversamento DOM. Il metodo parent () restituisce l’elemento padre diretto dell’elemento selezionato. Per esempio:

HTML:

div element

paragraph


JS:
var e = $(“p”).parent();
e.css(“border”, “2px solid red”);

Il codice sopra seleziona l’elemento genitore del paragrafo e imposta un bordo rosso per esso. Il metodo parent () può solo attraversare un singolo livello nell’albero DOM. Per ottenere tutti gli antenati dell’elemento selezionato puoi usare il metodo parents (). Per esempio:

HTML:

<body>

div

    ul

  • li

    paragraph

</body>

JS:
$(function() {
var e = $(“p”).parents();
e.css(“border”, “2px solid red”);
});

Il metodo eq () può essere utilizzato per selezionare un elemento specifico da più elementi selezionati. Ad esempio, se la pagina contiene più elementi div e vogliamo selezionare il terzo elemento:

$(“div”).eq(2);

Ora vediamo con agenzia web marketing come rimuovere gli elementi selezionati dal DOM usando il metodo remove (). Per esempio:

HTML:

<p style=”color:red”>Red</p>
<p style=”color:green”>Green</p>
<p style=”color:blue”>Blue</p>

JS:
$(“p”).eq(1).remove();

Il metodo empty () è usato per rimuovere gli elementi figli degli elementi selezionati. Per esempio:

HTML:

<p style=”color:red”>Red</p>
<p style=”color:green”>Green</p>
<p style=”color:blue”>Blue</p>

 

CSS:
div {
background-color: aqua;
width: 300px;
height: 200px;
}

JS:
$(“div”).empty();

Ciò rimuove tutti e tre gli elementi figli del div, lasciandolo vuoto. Segue ora un breve riassunto sui metodi usati e disponibili in questa sezione, ricordando che in uno dei prossimi approfondimenti con agenzia web marketing andremo a vedere in dettaglio come se la cava JQuery con le animazioni!

agenzia web marketing

Agenzia web marketing e gli abbagli della comunicazione: sei un vero detective?

agenzia web marketingSe sei in una discoteca ricordi meglio la calca, i giochi di luce o la cacofonia di suoni chiede agenzia web marketing? L’auto che avete acquistato l’avete scelta in base alla forma e quindi alla linea aereodinamica, il rombo del motore o alla comodità dei sedili? Nel tempo libero preferite andare ad un concerto, a una mostra di quadri o in palestra? In vacanza vi attraggono i suoni della natura, preferite fare sport o siete estasiati dai paesaggi? Parlando con uno sconosciuto immagimate quello che sta per dire e cosa pensa o preferite ascoltare ogni parola o vi concentrate sulla sensazione che provata? Quando volete imparare una cosa nuova preferite osservare per imitare, chiedere istruzioni o provare direttamente? Se siete in una city che non conoscete usate la cartina, chiedete informazioni o preferite andare a intuito? Quando dovete svolgere più attività vi fate una lista e vi vedete svolgerle, vi chiedete quali cose fare o vi sentire irriquieti finché non avete svolto tutti i vostri compiti? Che ci colpisce di più della persona che abbiamo davanti? Come é vestito? Il tono della voce o come si muove? Quando avete tempo libero preferite vedere la TV, distrarvi con lavori manuali o ascoltare buonma musica? Quante domande eh agenzia web marketing! Rispondendo a tutte queste domande potremmo prendere confidenza con tutti i nostri filtri sensoriali che sono appunto VISIVO, CINESTESICO e AUDITIVO. Se ci alleniamo a riconoscere questi canali alla fine possiamo individuare quello prevalente dell’ interlocutore ed effettuare calibrazioni e ricalchi adeguati. La percezione della realtà passa attraverso il mondo esterno e quello interno, i sensi elaborano tutta una serie di informazioni che poi vengonostratificate internamente tramite, pensieri ed emozioni, riporta agenzia web marketing. Si parla quindi di individuare le rappresentazioni interne dell’ interlocutore ma non é un lavoro che si può fare in un attimo, occorre entrare nelle politiche del marketing dell’ascolto e improvvisarsi detective. Suoni, visioni, sensazioni, forse un cult movie come Dare Davil potrebbe aiutarci a mettere meglio a fuoco il caleidoscopio interiore che sconvolge incessantemente la nostra CPU interna. I dfiltri sensoriali dominanti possono essere quindi esterni ma anche interni perché se é vero che vedo ciò che mi circonda, é anche vero che sono in grado di recuperare informazioni seppellite nella nostra storia personale velocemente. Lo stesso vale per gli altri due canali, perché con la memoria posso interrogare il nostro database interno. Individuando il filtro sensoriale dominante, troviamo una strada tutta in discesa e adattare le nostre strategie di comunicazioni al meglio per centrare il nostro obiettivo di vendita per esempio. Tornando a bomba in primis nel processo di vendita ma non solo come strategia conviene analizzare il linguaggio, poi si ascolta il paraverbale e infine la comunicazione non verbale che come si sa ci assorbe per il 55% nella sua valenza. Una volta che conosciamo noi stessi e nostri filtri preferenziali possiamo capire meglio la natura dell’ interlocutore che nel caso della vendita coincide con il cliente finale. Possiamo mettere meglio a fuoco lo scacchiere del cliente con la famosa griglia multidimensionale che sostanzialmente é un quadrato da tre caselle per tre dove abbiamo in alto le diciture visivo, auditivo e cinestesico e lateralmente i tre pilastri della comunicazione cioé verbale, non verbale e paraverbale. Come nelle più famose battaglie navali l’interesezione tra caselle suggerisce un approccio metodologico per cui se dicessi C2 andrei a interecettare la casella del paraverbale per gli auditivi e a quel punto l’analisi lavora sul ritmo se é modulato, con che velocità si esprime l’interlocutore, se c’è musicalità, se la parlata é espressiva, risonante o se la voce o monotonale come un diapason, sottolinea agenzia web marketing. Se dicessi per esempio casella A3 troveremme i predicati sensoriali legati alla vista per cui l’analisi riguarda termini come chiarezza e immaginazione, le azioni sono quelle di mettere a fuoco e inquadrare, dare un occhiata, fare una scenata in un modo di esprimersi indica chiaramente l’attitudine a un filtro VISIVO da parte dell’ interlocutore. Tutte queste informaziioni e modalità di calibrazione ci aiutano a ricalcare meglio la potenziale vittima della firma (anche se l’espressione può sembrare molto brutta é proprio di ottimizzazione del tempo e di risultati che parliamo in un contesto BCE) e a raggiungere i nostri obiettivi. Lo schema é allegato con tutta la combinazione delle varianti riscontrabili e a questo punto non resta che parlare di prossemica e di distanza del corpo. Anche qui serve una certa gradualità, non si può andare addosso all’ interlocutore, certamente esiste una intima distanza, una distanza sociale e una distanza pubblica e occorre contestualizzare le situazioni per evitare errori grossolani soprattutto se alla fine della filiera esiste quel famoso obiettivi centrato nelle sue aspettative lavorate in working in progress con agenzia web marketing.

Stai per sviluppare una portentosa applicazione PHP in OOP e MVC magari con il metodo mod_rewrite e con l’uso del file htaccess e con collegamenti al DB tramite PDO? Allora hai bisogno di Visual Studio Code e dei suoi plug-in, suggerisce web marketing Umbria!

web marketing UmbriaPrima di parlare di Visual Studio Code di Microsoft che sta sempre di più prendendo piede presso la comunità di sviluppatori in rete e di come possiamo inmplentare dei semplici plug in per potenziarne le caratteristiche, torniamo ad occuparci di cose estremamente serie e cioé gli scacchi giocati coerenti con le strategie di comunicazione digitale volute da web marketing Umbria e per la precisione della partita Hubner vs Smyslov giocata nel 1982 a Tilburg apertura catalana denominazione ECO E03, link disponibile all’ indirizzo https://www.redhotchess.com/chess/grandmaster-games/viewmastergame.php?pgnid=74079&subject=Robert-Huebner-vs-Vasily-Smyslov per visionare la partita. Che cosa si dovrebbe osservare in questa partita? La lentezza posizionale quasi ipnotica e anestetizzante messa in campo dal nero per vincere in totale rilassatezza la partita (si fa per dire) quasi che la prima condizione da rispettare per l’agonista sia innanzitutto quella di non perdere! Stiamo parlando di personaggi e prima di tutto uomini con la U maiuscola che hanno una biografia da romanzo (vedi https://it.wikipedia.org/wiki/Vasilij_Vasil%27evi%C4%8D_Smyslov) ma anche numeri sulla disciplina sportiva da capogiro come sintetizza la nota “é stato candidato per il Campionato del mondo di scacchi in otto occasioni (1948, 1950, 1953, 1956, 1959, 1965, 1983 e 1985). Ha vinto due Campionati Sovietici (1949 e 1955) e ha ottenuto un totale di 17 medaglie alle Olimpiadi degli scacchi. Ha vinto inoltre dieci medaglie d’oro nelle sue cinque partecipazioni ai Campionati europei a squadre. È scomparso per attacco cardiaco nel 2010 all’età di 89 anni“. La partita mostra veramente quella che é una strategia lenta e macchinosa ma anche attenta e dinamica, con il controgioco sempre latente per innescare controgiochi vincenti come nel calcio, che vale la pena approfondire le partite di questo colosso per tentare di arricchire il proprio repertorio con altri stili di gioco! web marketing UmbriaE ora tornando a quella che é la domanda iniziale sollevata da web marketing Umbria e cioé come posso rendere Visual Studio Code funzionale al massimo quando sviluppo in PHP ecco le risposte che volevamo: PHP intellisense per il refactoring e Bracket Colour per marcare le regione di codice critiche e renderle subito riconoscibili, il sito HTML sentenzia: “il refactoring è un insieme di pratiche che vengono applicate al codice sorgente al fine di variarne la struttura senza cambiare le funzionalità dell’applicazione, al fine di avere sotto mano dei sorgenti facilmente mantenibile e comprensibili a chiunque ed anche dopo molto tempo“, rende estrinsecabile web marketing Umbria. Va bene ma perché dovrei usare Visual Studio Code ottimizzato per programmare in PHP in modalità Object Oriented Programming al posto della tecnica procedurale? Per tanti buoni motivi: perché il codice risultà più chiaro e meglio organizzato, risponde web marketing Umbria. Poi perché la struttura essendo modulare porta dei vantaggi al Team di Sviluppo. Il codice ha una migliore manutenzione ma soprattutto ha il vantaggio della facile RI-USABILITA’! Un buon sito dove si possono fare i dovuti approfondimenti sulla parte sviluppo é http://www.traversymedia.com fruibile anche da http://www.udemy.com. Per concludere con web marketing Umbria segnaliamo come al solito che il supporto per la parte grafica inedita che finiscono nell’ articolo ci arriva free royalty da https://unsplash.com. In uno dei prossimi articoli di approfondimento su OOP e le sue caratteristiche cercheremo di sviscerare e approfondire nei dettagli con il CEO di Umbriaway Consulting Faraoni Enrico gli argometi correlati, per ora non ci resta che ottimizzare al meglio Visual Studio Code con i suoi portentosi plug-in per PHP.

webmarketingumbria webmarketingumbria webmarketingumbria webmarketingumbria

Riesci a saltare al di là di un crepaccio con php? Andiamo a cancellare record con seo Umbria, accetta la sfida!

seo umbriaAll’ indirizzo http://www.chessgames.com/perl/chessgame?gid=1103138 tanto per riprendere i contenuti espressi in https://umbriawaycultura.wordpress.com/2017/10/17/insert-select-update-delete-le-basi-strategiche-delle-query-mysql-per-le-esplosioni-tattiche-di-php/ da seo Umbria assistiamo a una fase di gioco rocambolesca, il GM Nunn che sacrifica la regina per una sola torre il che begli scacchi agonistici rappresenta qualcosa di meraviglioso, ma dopo un poco vediamo che i pedoni diventano anziché uno, due e tre etc. Vabbé se n’era già parlato di questa lungimirante combinazione no? Pedr la verità questa partita, la Gert Ligterink vs John Nunn, Marbella Zonal Final Group (1982), Marbella ESP, rd 6, Feb-27,Benoni Defense: Fianchetto Variation. Hastings Defense (A63)·0-1 scatena un dibattito nel senso che verrebbe da chiedersi con seo Umbria se un motore moderno potrebbe mai perdere questa posizione e la risposta possiamo intuirla (non resterà che verificare le incongruenze tra uomo e macchina per chiarire la questione). Comunque tornando sempre a bomba e al nostro database JOKE, un contenitore per barzellette, avevamo affrontato le QUERY CRUD, ma eravamo rimasti in sospeso con una sfida. Si tratta a questo punto di posizionare sulla pagina, a fianco di ogni barzelletta, un link con un pulsante DELETE this joke (elimina questa barzelletta) che , quando viene attivato, rimuove quella barzelletta dal database e mostra un elenco di barzellette aggiornato. Magari utilizzando una pagina multiuso. Magari usando il comando SQL DELETE. Dobbiamo essere in grado di cancellare la nostra barzelletta UNIVOCAMENTE, la colonna ID nella tabella é stata inserita e progettata proprio con questo scopo! La stringa della query del pulsante “DELETE this joke” é un posto perfetto dove posizionare questo valore. E ora non ci resta che entrare in queste dinamiche con seo Umbria! seo umbriaDobbiamo quindi fare dei CAMBIAMENTI per inserire un pulsante di cancellazione a fianco di ogni barzelletta. In precedenza abbiamo fatto passare una variabile addjoke con il pulsante “ADD a joke!” alla fine di ogni pagina, per segnalare che il nostro script avrebbe dovuto mostrare il form di immissione della barzelletta, invece del solito elenco di barzellette. Allo stesso modo dobbiamo far passare una variabile deletejoke con il nostro pulsante di cancellazione per indicare il nostro desiderio di rimuovere una barzelletta. Per ogni barzelletta rintracciamo la colonna id dal database insieme alla colonna joketext in modo da sapere quale ID é associato con ogni barzelletta del Database. Dobbiamo far coincidere il valore della variabile $_GET[‘deletjoke’] all’ ID della barzelletta che stiamo cancellando. Per fare ciò inseriamo il valore dell’ id trovato nel DB all’ interno del codice HTML apposta per il pulsante “Delete this joke” di ogni barzelletta e infine, usando una dichiarazione IF, verifichiamo se $_GET[‘deletejoke’] é configurata su un valore specifico (attraverso la funzione PHP ISSET), quando la pagina si carica. Se é così, utilizziamo il valore sulla quale é configurata (l’id della barzelletta da cancellare) con una dichiarazione DELETE di SQL, che elimina la barzelletta in questione. Vediamo quindi il codice completo dopo la sequenza segnalata da seo Umbria di cui sopra, come al solito all’ interno del body va inserito questo codice PHP:

<?php if (isset($_GET[‘addjoke’])): // If the user wants to add a joke
?>

<form action=”<?php echo $_SERVER[‘PHP_SELF’]; ?>” method=”post”>
<label>Type your joke here:<br />
<textarea name=”joketext” rows=”10″ cols=”40″>
</textarea></label><br />
<input type=”submit” value=”SUBMIT” />
</form>

<?php else: // Default page display

// Connect to the database server
$dbcnx = @mysql_connect(‘localhost’, ‘root’, ‘mypasswd’);
if (!$dbcnx) {
exit(‘<p>Unable to connect to the ‘ .
‘database server at this time.</p>’);
}

// Select the jokes database
if (!@mysql_select_db(‘ijdb’)) {
exit(‘<p>Unable to locate the joke ‘ .
‘database at this time.</p>’);
}

// If a joke has been submitted,
// add it to the database.
if (isset($_POST[‘joketext’])) {
$joketext = $_POST[‘joketext’];
$sql = “INSERT INTO joke SET
joketext=’$joketext’,
jokedate=CURDATE()”;
if (@mysql_query($sql)) {
echo ‘<p>Your joke has been added.</p>’;
} else {
echo ‘<p>Error adding submitted joke: ‘ .
mysql_error() . ‘</p>’;
}
}

// If a joke has been deleted,
// remove it from the database.
if (isset($_GET[‘deletejoke’])) {
$jokeid = $_GET[‘deletejoke’];
$sql = “DELETE FROM joke
WHERE id=$jokeid”;
if (@mysql_query($sql)) {
echo ‘<p>The joke has been deleted.</p>’;
} else {
echo ‘<p>Error deleting joke: ‘ .
mysql_error() . ‘</p>’;
}
}

echo ‘<p> Here are all the jokes in our database: </p>’;

// Request the ID and text of all the jokes
$result = @mysql_query(‘SELECT id, joketext FROM joke’);
if (!$result) {
exit(‘<p>Error performing query: ‘ .
mysql_error() . ‘</p>’);
}

// Display the text of each joke in a paragraph
// with a “Delete this joke” link next to each.
while ($row = mysql_fetch_array($result)) {
$jokeid = $row[‘id’];
$joketext = $row[‘joketext’];
echo ‘<p>’ . $joketext .
‘ <a href=”‘ . $_SERVER[‘PHP_SELF’] .
‘?deletejoke=’ . $jokeid . ‘”>’ .
‘Delete this joke</a></p>’;
}

// When clicked, this link will load this page
// with the joke submission form displayed.
echo ‘<p><a href=”‘ . $_SERVER[‘PHP_SELF’] .
‘?addjoke=1″>Add a Joke!</a></p>’;

endif;
?>

 

Insert, select, update, delete: le basi strategiche delle query mysql per le esplosioni tattiche di php!

seo UmbriaKarpov era in gran forma a Torino nel 1982 e arrivò primo sbaragliando la concorrenza. Qui lo vediamo in azione vs Ljuboievic dove il nero viene devastato e le sue postazioni ridotte a cumuli di macerie, partita http://www.chessgames.com/perl/chessgame?gid=1068331. Poi cerchiamo di dare una risposta alla domanda si può dare la regina in cambio di una sola torre? Bisognerebbe chiederlo a Ligternik che giocò contro Nunn a Marbella nel 1982 dove a un certo punto il nero nel corso di una benoni si ritrova un Ce5 inchiodato sulla donna in e8, il materiale é tutto pari ma adesso il nero dovrebbe abbandonare perché la perdita di materiale é inevitabile ma…il nero sacrifica la regina per una sola torre e tutto ciò era stato previsto, il bianco prende il gentile dono e poi incredibilmente la perde questa game, anche se i dubbi sulla correttezza del sacrificio rimangono anche per seo Umbria! Certo che fa una certa impressione a vedere un 20 ..b5 che lascia il nero con una pressione posizionale mica da ridere in vista di un Alfiere f5 che viene dal cuore e che il bianco é costretto ad evitare dando un altro pedone con g4. Ci vuole una certa sensibilità per percepire il ritmo e il respiro di una posizione e Nunn con lo schema Ad4, Cf2 l’ha studiata proprio bene sta mossa di cavallo che regala il cavallo di Troia al nemico, che presto si accorge tra le sue mura che ha ben poco da festeggiare, fa notare seo Umbria. Da notare che cadrà anche b2 per cui a quel punto il nero ha la donna in meno ma qualcosa in cambio che equivale convenzionalmente otto come intero, per compensare i dieci in meno! Complimenti a Nunn e al suo genio creativo cercare appunto la Ligterink – Nunn Marbella 1982 per assistere a questa psettacolare carambola di fuochi di artificio. E torniamo a bomba! Dopo aver visto che la connessione fisica del database mysql si ottiene con la funzione mysql_connect(parametri server, user e pwd) e dopo aver visto che la selezione al DB la posso fare tramite la funzione mysql_select_db(“name”); non mi resta che interrogare i dati con SQL dove abbiamo una funzione che é mysql_query(query, [connect_id]) dove query é la stringa che contiene la stringa dei comandi che vogliamo eseguire e come per la funzione mysql_select_db anche qui ci troviamo a che fare con una coppia di valori VERo o FALSO per indicare rispettivamente la riuscita operazione e quindi il successo o l’insuccesso. Analizziamo il seguente codice:

$sql = CREATE TABLE joke (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
joketext TEXT,
jokedate DATE NOT NULL
);
if (@mysql_query($sql)) {
echo ‘<p>joke table successfully created!</p>;
} else {
exit(‘<p>Error creating joke table: ‘ .
mysql_error() . ‘</p>’);
}

Usiamo di nuovo il trucco @ per evitare ogni messaggio di errore prodotto da mysql_query e lo sostituiamo con un messaggio di errore più amichevole. La funzione mysql_error qui ha avuto come responso una stringa di testo che descrive l’ultimo messaggio di errore che é stato inviato dal server MySQL. Per le query DELETE, INSERT e UPDATE (che sono utilizzate per modificare i dati immagazzinati) MySQL conserva una traccia del numero dlele righe di tabelle (record) che sono state interessate dalla query. Modifichiamo la data di tutte le barzellette che contengono la parola “chicken”:

$sql = “UPDATE joke SET jokedate=’1994-04-01′ WHERE joketext LIKE ‘%chicken%’;

Quando eseguiamo questa query, possiamo usare la funzione mysql:affected_rows per vedere il numero di righe che sono interessate da questo aggiornamento:

if (@mysql_query($sql)) {
echo ‘<p>Update affected ‘ .mysql_affected_rows() .
‘ rows.</p>’;
} else {
exit (‘<p>Error performing update: ‘ . mysql_error() .
‘</p>’);
}

Le query con SELECT devono essere trattate in modo leggermente differente, perché possono interessare una grande quantità di dati e PHP deve fornire dei modi per gestire queste informazioni. Il problema che si pone seo Umbria é come gestire i set di risultati del comando SELECT per l’appunto. Per la maggior parte delle query di SQL, la funzione mysql_query ha come risultato o TRUE sinonimo di successo o FALSE che significa insucceso. Per le query SELECT questo non é sufficiente in quanto noi utilizziamo questo comando per visualizzare i dati immagazzinati nel database. PHP oltre ad indicare se la query ha avuto successo o meno, deve anche ricevere i risultati della query. QUindi quando processa la query SELECT, mysql_query ha come risultato un numero che identifica una serie di risultati e che contiene l’elenco delle righe (RECORD) che si sono avute come risultato della query. Il risultato FALSE viene dato se la query fallisce per qualche ragione.

$result = @mysql_query (‘SELECT JokeText FROM Jokes’);
if (!$result) {
exit(‘<p>Error performing query: ‘ .mysql_error() .
‘</p>’);
}

Dopo essersi assicurato che non é stato incontrato nessun errore nel processare la query, il codice posizionerà un numero all’ interno della variabile $result. Questo numero corrisponde al SET DEI RISULTATI che contiene il testo di tutte le barzellette nella tabella degli scherzi. Non essendoci nessun limite pratico al numero di scherzi nel database, il risultato può essere considerevolmente grande. Il ciclo while é una struttura di controllo che gestisce grandi quantità di dati. Quello che segue é un possibile abbozzo di codice che processerà le righe di un set di risultati uno alla volta:

while ($row = mysql_fetch_array($result)) {
// process the row
}

La condizione per il ciclo while probabilmente non assomiglia alla condizionea cui siete abituati quindi lasciateci spiegare come funziona. Considerate la condizione come una dichiarazione separata:

$row = mysql_fetch_array($result);

La funzione mysql_fetch_array accetta il numero del set di risultati come un parametro (immagazzinato nella variabile $result in questo caso) e mostyra come risultato la riga successiva nel set di risultati come in un array. Quando non ci sono più righe nel set di risultati, mysql_fetch_array dà come risultato FALSE. La dichiarazione assegna un valore alla variabile $row ma, allo stesso tempo, l’intera dichiarazione prende lo stesso valore. Questo é ciò che vi permette di usare la dichiarazione come una condizione nel ciclo while. Poiché un ciclo while continuerà a lavorare finché la sua condizione viene valutata FALSA, questo ciclo avverrà tante volte quante sono le righe nella serie di risultati. Se $row é una riga del nostro set di risultati, allora $row[‘joketext’] é il valore della colonna joketext di quella riga. Ed ecco come dovrebbe apparire il nostro ciclo while se volessimo stampare il testo di tutte le barzellette nel nostro database:

while ($row = mysql_fetch_array($result)) {
echo ‘<p>’ . $row[‘joketext’] . ‘</p>’;
}

E ora che seo Umbria ha reso meno ermetico il codice facciamo un bel riassunto della pagina in modo da visualizzare nel mio browser tutto il mio repertorio di artista recitatore di barzellette all’ interno del TAG BODY:

<?php

// Connect to the database server
$dbcnx = @mysql_connect(‘localhost’, ‘root’, ‘mypasswd’);
if (!$dbcnx) {
exit(‘<p>Unable to connect to the ‘ .
‘database server at this time.</p>’);
}

// Select the jokes database
if (!@mysql_select_db(‘ijdb’)) {
exit(‘<p>Unable to locate the joke ‘ .
‘database at this time.</p>’);
}

?>
<p>Here are all the jokes in our database:</p>
<blockquote>
<?php

// Request the text of all the jokes
$result = @mysql_query(‘SELECT joketext FROM joke’);
if (!$result) {
exit(‘<p>Error performing query: ‘ . mysql_error() . ‘</p>’);
}

// Display the text of each joke in a paragraph
while ($row = mysql_fetch_array($result)) {
echo ‘<p>’ . $row[‘joketext’] . ‘</p>’;
}

?>
</blockquote>

Adesso che ci siamo connessi, che ci siamo dialogati con il DB, che dal DB siamo in grado di estrapolare i dati, cerchiamo di vincere la seguente sfida con seo UMBRIA: come faccio a inserire i dati? Intanto il visitatore ha bisogno di un FORM per inserire i dati e quindi da esperti sviluppatori quali siamo non dovrebbe essere un problema estrapolare il seguente codice:

 

<form action=”<?php echo $_SERVER[‘PHP_SELF’]; ?>” method=”post”>
<label>Type your joke here:<br />
<textarea name=”joketext” rows=”10″ cols=”40″>
</textarea></label><br />
<input type=”submit” value=”SUBMIT” />
</form>

Come abbiamo già visto una volta inviato questo FORM caricherà la stessa pagina (poiché abbiamo la variabile $_SERVER[‘PHP_SELF’] per l’attributo di azione del form) con una differenza: una variabile sarà compresa nella richiesta. La variabile joketext conterrà il testo della barzelletta come é stato digitato nell’ area di testo e apparirà negli array $_POST e $_REQUEST creati da PHP. Per inserire la barzelletta inviata al DB usiamo la funzione mysql_query per eseguire una query INSERT, utilizzando il valore immagazzinato in $_POST[‘joketext’] per completare la colonna joketext nella query:

// If a joke has been submitted,
// add it to the database.
if (isset($_POST[‘joketext’])) {
$joketext = $_POST[‘joketext’];
$sql = “INSERT INTO joke SET
joketext=’$joketext’,
jokedate=CURDATE()”;
if (@mysql_query($sql)) {
echo ‘<p>Your joke has been added.</p>’;
} else {
echo ‘<p>Error adding submitted joke: ‘ .
mysql_error() . ‘</p>’;
}
}

Il nuovo trucco in questo esempio é mostrato in CURDATE() che viene usata qui per assegnare la data corrente come valore della colonna joketext. MySQL effettivamente ha dozzine di queste funzioni che sono possibili da reperire in rete. Abbiamo il codice che ci permetterà di digitare una barzelletta e aggiungerla al nostro database. Tutto quello che rimane da fare é inserirla nella nostra pagina esistente in modo efficace. Poiché la maggior parte degli utenti vorrà visualizzare le barzellette, non vogliamo rovinare la nostra pagina con grandi caratteri a meno che l’utente non esprima interesse nell’ aggiungere nuove barzellette. Per quest aragione la nostra APPLICAZIONE WEB é ben progettata per IMPLEMENTARE pagine MULTIUSO. Ecco il codice completo da inserire nel body:

<?php if (isset($_GET[‘addjoke’])): // If the user wants to add a joke
?>

<form action=”<?php echo $_SERVER[‘PHP_SELF’]; ?>” method=”post”>
<label>Type your joke here:<br />
<textarea name=”joketext” rows=”10″ cols=”40″>
</textarea></label><br />
<input type=”submit” value=”SUBMIT” />
</form>

<?php else: // Default page display

// Connect to the database server
$dbcnx = @mysql_connect(‘localhost’, ‘root’, ‘mypasswd’);
if (!$dbcnx) {
exit(‘<p>Unable to connect to the ‘ .
‘database server at this time.</p>’);
}

// Select the jokes database
if (!@mysql_select_db(‘ijdb’)) {
exit(‘<p>Unable to locate the joke ‘ .
‘database at this time.</p>’);
}

// If a joke has been submitted,
// add it to the database.
if (isset($_POST[‘joketext’])) {
$joketext = $_POST[‘joketext’];
$sql = “INSERT INTO joke SET
joketext=’$joketext’,
jokedate=CURDATE()”;
if (@mysql_query($sql)) {
echo ‘<p>Your joke has been added.</p>’;
} else {
echo ‘<p>Error adding submitted joke: ‘ .
mysql_error() . ‘</p>’;
}
}

echo ‘<p>Here are all the jokes in our database:</p>’;

// Request the text of all the jokes
$result = @mysql_query(‘SELECT joketext FROM joke’);
if (!$result) {
exit(‘<p>Error performing query: ‘ .
mysql_error() . ‘</p>’);
}

// Display the text of each joke in a paragraph
while ($row = mysql_fetch_array($result)) {
echo ‘<p>’ . $row[‘joketext’] . ‘</p>’;
}

// When clicked, this link will load this page
// with the joke submission form displayed.
echo ‘<p><a href=”‘ . $_SERVER[‘PHP_SELF’] .
‘?addjoke=1″>Add a Joke!</a></p>’;

endif;
?>

Sostanzialmente con un singolo file che contiene un pò di codice PHP siamo in grado di vedere le barzellette esistenti e aggiungerne di nuove. Ma adesso ci attende una sfida entusiasmante che riprenderemo in uno dei prossimi post di Umbriaway Consulting!