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

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!