Codice per microBlog
versione ancora non definitiva, sorry ( ad oggi Ott/2024 in attesa da alcuni anni, lo sarà mai?)
Grato comunque se mi indicate errori e oscurità
CRUD
In forma molto semplificata, microBlog è un esempio di una web app che realizza le funzionalità CRUD: Create, Read, Update, Delete: una o, a coppia, due delle funzionalità PHP sopra definite realizzano esattamente una delle quattro CRUD. Inoltre a ognuna corrisponde la corrispondente query SQL: INSERT, SELECT, UPDATE, DELETE; esattamente quella inclusa nella funzionalità PHP corrispondente, come schematizzato nella seguente tabella:
Create: |
display_form() |
|
|
write() |
"INSERT INTO `".$table."` (`title`, `subtitle`, `bodytext`, `firma`, `comment`, `created`) VALUES ('".$pp['title']."', '".$pp['subtitle']."', '".$pp['bodytext']."', '".$pp['firma']."', '".$pp['comment']."', '".$created."')"; |
Read: |
display_public() |
SELECT * FROM ".$table." ORDER BY created |
Update: |
display_edit() |
|
|
update() |
UPDATE `".$table."` SET `title` = '".$pp['title']."', `subtitle` = '".$pp['subtitle']."', `bodytext` = '".$pp['bodytext']."', `comment` = '".$pp['comment']."', `firma` = '".$pp['firma']."' WHERE `".$table."`.`id` = ".$id." |
Delete: |
delete() |
DELETE FROM `".$table."` WHERE `".$table."`.`id` = $id |
Per riprodurre microBlog sul tuo server, dopo aver definito la tabella (vedi le istruzioni SQL qui in coda) puoi copiare il codice PHP qui sotto, ovvero i tre file config.php, index.php e aiuto.php
(devi poi inserire le credenziali pertinenti alla tua situazione)(meglio se cancelli i commenti didattici)
ATTENZIONE: per avere la stessa visualizzazione finale, devi anche rubare il file style.css e i due file grafici delle due icone Edit e Delete da microBlog
Thanks a highlightjs.org per l'ottima stilizzazione del codice php.
File config.php
A cosa serve config.php? Vedi sotto!
<?php
// Questi i valori di default per l'installazione su localhost (con MAMP dovrebbero funzionare, altrimenti controlla)
$host = 'localhost';
$username = 'root';
$password = 'root';
$db = 'LM'; // nome del tuo database
$table = 'microBlog'; // nome della tabella
$port = '8889'; // controllate la porta usata dalla vostra configurazione di mySQL // su WAMP for Win dovrebbe essere 3306 // (questa è una porta diversa da quella usata da Apache)
?>
File index.php
<?php
// per il debug
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// ricordarsi come si apre un file php: <?php
// e ricordarsi come si chiude: vedi ultima riga di questo file
/* comando di echo: quello che 'stampa' del codice da inviare al client (ovvero?.....),
e quindi ricordiamoci che la compilazione di questo codice php alla fine deve sempre
'stampare' codice che il client capisca; ovvero codice html+css+javascript
*/
/* qui sotto si stampa l'head del file html e l'inizio del body
e anche il collegamento al file .css
*/
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Simple CMS with PHP, step 2</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head> ';
echo '<body>
<div id="page-wrap"> ';
/* le funzionalità php che sono necessarie per realizzare il micro applicativo sono definite in uno script a parte
(essenzialmente per maggiore leggibilità e maggiore facilità di manutenzione del codice),
il quale è richiamato con questo comando di inclusione
*/
include_once('aiuto.php');
/* siccome si chiede ad Apache di collegarsi al db mysql, si fornisce le credeziali
(ovvero Apache si presenterà come l'utente mysql *** con pw ***, e chiederà di interrogare il db ****)
Ovviamente questo dipende da come avete configurato mySQL e creato il db
*/
/* CHANGE THESE SETTINGS FOR YOUR OWN DATABASE */
/* in config si trovano i parametri per la connessione a mySQL, vedi e modifica secondo la tua situazione,
da includere con include_once('config.php'); */
include_once('config.php');
// vedi definizione di connect nel file aiuto.php
$link = connect($host,$username,$password,$db, $port);
/* IMPORTANTE: capire cosa sia $_POST;
in breve: l'array dove sono memorizzati temporaneamente i valori provenienti da un modulo lato client.
Provate a vedere che valori ci sono in $_POST con il comando print_r($_POST).
*/
print_r($_POST); // per debug // da non utilizzare nella versione definitiva
/* Qui sotto vediamo un uso di un paio di cosidette strutture di controllo,
in particolare della struttura per le istruzioni condizionali: if ( condizione ) { istruzione },
il cui significato operativo è:
se la condizione è verificata ( o soddisfatta, o vera, o non vuota )
allora esegui l'istruzione, altrimenti passa oltre;
e di quella per la distinzioni in casi:
switch ($case) {
case 0:
istruzione 0
break;
.....
.....
case N:
istruzione N
break;
default:
istruzione df
} ,
il cui significato operativo è:
controlla il valore di $case
ed esegui la corrispondente istruzione
(e poi si passa oltre - break);
Ricorda inoltre i valori dei due array $_POST e $_GET.
$_POST['key']= il dato inserito nel campo del modulo con attributo name="key": <input name="key" id="caio" type="text" />
$_GET['key']= il valore assegnato al parametro key della url: http://localhost/..../index.php?key=value
*/
// so far so good!
/* Cerchiamo ora di capire come abbiamo progettato
il flusso delle diverse visualizzazioni del microBlog,
e come otteniamo il contenuto della pagina di ogni visualizzazione
il nostro microBlog prevede le seguenti visualizzazioni (o pagine):
- 0 - elenco dei post già presenti (visualizzazione di default / Home)
- 1 - modulo per creare un nuovo post
- 2 - (nascostamente) azione di creare un post, mostrando poi elenco aggiornanto dei post
- 3 - elenco di ammnistrazione dei post, con icone Edit e Delete
- 4 - modulo per editare/aggiornare un post
- 5 - (nascostamente) azione di aggiornare un post, mostrando poi elenco di ammnistrazione
- 6 - (nascostamente) azione di eliminare un post, mostrando poi elenco di ammnistrazione
vediamo meglio le url corrispondenti
- http://localhost/step_3/index.php?admin=0 (admin=0 può essere omesso)
- http://localhost/step_3/index.php?admin=1
- http://localhost/step_3/index.php?admin=2
- http://localhost/step_3/index.php?admin=3
- http://localhost/step_3/index.php?admin=4&id=7
- http://localhost/step_3/index.php?admin=5
- http://localhost/step_3/index.php?admin=6&id=7
Vediamo il meccanismo. La richiesta di compilare il file index.php è
accompagnata da un valore del parametro admin
(e talvolta troviamo anche un secondo parametro id=k).
Lo switch qui sotto esegue uno dei diversi casi previsti,
a seconda del valore ricevuto del parametro admin
che si ritrova in $_GET['admin']
e per ogni caso esegue la funzionalità che abbiamo programmato
per realizzare ciò che vogliamo nei diversi casi, ovvero
- 0 - display_public($link, $table); elabora il codice html per visualizzare elenco dei post -
- 1 - display_form(); elabora il codice html del modulo per creare nuovo post -
- 2 - write($_POST, $table, $link); esegue la query nel db per inserire nuovo post,
e poi display_public($link, $table); per visualizzare elenco aggiornato dei post -
- 3 - display_admin($link, $table); elabora il codice html per visualizzare elenco post,
con icone Edit e Delete -
- 4 - display_edit($link, $table, $id); elabora il codice html per modulo per editare un post,
del post la cui id è passata nella url: &id=k -
- 5 - update($_POST, $id, $table, $link); esegue la query nel db per aggiornare il post,
e poi display_admin($link, $table); per visualizzare elenco post aggiornato -
- 6 - delete($id, $table, $link); esegue la query nel db per eliminare il post,
e poi display_admin($link, $table); per visualizzare elenco post aggiornato -
Per leggibilità del codice, assegnamo a una variabile page
tale valore $_GET['admin']: $page=$_GET['admin'];
Per il caso di default (quando il client invia la url http://localhost/step_3/)
fissiamo il valore $page=0
*/
if(isset($_GET['admin'])){$page=$_GET['admin']; }else{$page=0;}
switch ($page) {
case 0:
echo display_public($link, $table);
break;
case 1:
echo display_form();
break;
case 2:
/*
Cerchiamo di capire la prossima riga di codice.
Se $_POST non è vuoto, allora domandiamoci perchè?
Perchè evidentemente -lato client- il modulo è stato compilato.
Se ciò è accaduto, allora si chiede di eseguire una qualche istruzione.
Quale istruzione?
L'esecuzione della funzionalità write(...)
che - se andate a controllarne la definzione - comprende le istruzioni
per inserire i dati del $_POST, quelli provenienti dal modulo compilato lato client,
nella predisposta tabella $table del DB.
Se il $_POST risulta vuoto, allora si può assumete che lato-client il modulo non sia stato ancora compilato
e si passa oltre, perchè evidentemente non si ha ancora nulla da inserire nel database
*/
if ( $_POST ) {write($_POST, $table, $link);}
echo display_public($link, $table);
break;
case 3:
echo display_admin($link, $table);
break;
case 4:
/* ESERCIZIO
Capire l'uso di $_GET['id'] e $_POST['id'] nei successivi tre casi
*/
if ( $_GET['id'] ){$id=$_GET['id']; echo display_edit($link, $table, $id); }
break;
case 5:
if ( $_POST ) {$id=$_POST['id']; update($_POST, $id, $table, $link);}
echo display_admin($link, $table);
break;
case 6:
if(isset($_GET['id'])){$id=$_GET['id']; delete($id, $table, $link);}
echo display_admin($link, $table);
break;
}
// infine chiudo il file html da inviare al client.
echo '</div>
</body>
</html>';
?>
File aiuto.php
<?php
/* le funzionalità definite per realizzare il microBlog sono:
connect() - per indicare a Apache di connettersi a mySQL
display_public() - per mostrare i post esistenti nel db, o un messaggio iniziale quando la tabella è ancora vuota
display_form() - per mostrare il modulo da compilare lato client per scrivere un post
write() - per salvare i dati provenienti dal modulo (= un post) nella tabella del database
display_admin() - per mostrare i post esistenti nel db, con icone/pulsanti di Edit e Delete
display_edit() - per mostrare il modulo da compilare per editare un post
update() - per aggiornare un post nella tabella del database
delete() - per eliminare un post dalla tabella del database
Vediamole una per una (e controlla dove sono richiamate in index.php)
le funzionalità si definiscono mediante la seguente scrittura (questo lo vedremo meglio)
function identificatore (argomenti possibili) { corpo della funzionalità }
dove function e` un elemento della sintassi di php per indicare la definizione di una funzionalità,
mentre identificatore è una espressione a scelta
(si sceglie in genere qualcosa di mnemonicamente utile per ricordarci che cosa la funzionalità fa)
che appunto identifica la specifica funzionalità definita e scrivendo la quale ne se richiama l'esecuzione
NOTA: se la funzione prevede dei parametri, ogni volta che si richiama la funzionalità,
gli si deve passare opportuni parametri. Vedi gli esempi in index.php
*/
/* connect($host,$username,$password,$db) - -
per connetteri al db, raggruppa i costrutti di PHP per connettersi a mySQL
$host = host dell'installazione di mySQL con cui si lavora
$username = utente mySQL autorizzato ad operare
$password = password utente precedente
$db = db definito che coprende la tabella del post (tabella che deve essere definita)
$port='3306' = per chi usa port diversi (8889) cambiate
*/
function connect($host,$username,$password,$db,$port='3306') {
$link = mysqli_connect($host,$username,$password,$db,$port) or die("
Could not connect. " . mysqli_error());
// mysqli_select_db($link, $db) or die("Could not select database. " . mysqli_error());
return $link;
}
/* display_public($table, $link) - -
per mostrare i post esistenti nel db, o un messaggio iniziale
$table = la tabella su cui eseguire la query
$link = connessione con mySQL (una necessità, non preoccupatevi di capire) */
function display_public($link,$table) {
/* si definisce una query nel linguaggio sql
in particolare la query che chiede tutti -- * -- i post
(perché i record della tabella $table sono appunto i post)
per comodità salvo la query nella variabile $q
*/
$q = "SELECT * FROM ".$table." ORDER BY created";
/* Apache chiede la query a mySQL e riceve una risposta,
che memorizza nella variabile $r
Il linguaggio PHP prevede una funzionalità mysqli_query()
che istruisce esattamente di fare questo.
Similarmente, PHP prevede altre funzionalità
per interagire con mySQL (vedi sotto)
*/
$r = mysqli_query($link,$q);
/* incomincio a creare il codice HTML da inviare al client
e che contiene una opportuna formattazione HTML delle risposta alla query,
via via salvo questo codice - costruito pezzo a pezzo - nella variabile $entry_display
*/
$entry_display=''; // inizializzo la variabile con la stringa vuota
/* primo: controllo se nella risposta ci sono dei record/righe
(ovvero se la tabella non è risultata vuota)
(&& indica la congiunzione, !== indica la NON eguaglianza,
> indica la relazione di maggiore tra numeri)
*/
if ( $r !== false && mysqli_num_rows($r) > 0 ) {
/* siamo nel caso che ci sono righe (record nella tabella mySQL)
procedo fino a quando (WHILE) ci sono righe di risposta
per ogni riga il costrutto fornito da PHP
mysqli_fetch_assoc trasforma una riga di risposta in un array $a
le chiavi di questo array, sono (omonimi) dei nomi dei campi della tabella mySQL
*/
while ( $a = mysqli_fetch_assoc($r) ) {
/*
punto tecnico di pulizia dei dati. (DA SPIEGARE)
(Returns a string with backslashes stripped off:
\' becomes '; double backslashes \\ are made into a single backslash \)
*/
$title = stripslashes($a['title']);
$subtitle = stripslashes($a['subtitle']);
$bodytext = stripslashes($a['bodytext']);
$firma = stripslashes($a['firma']);
$comment = stripslashes($a['comment']);
/* Qui si incomincia a definire l'html che contiene la formattazione del post
corrispondente a questa riga della risposta
(ricordarsi che siamo dentro un WHILE)
NOTA: ricorda che il '.' è l'operatore di concatenazione tra stringhe,
quindi $a .= 'a'; è l'istruzione di concatenare al contenuto di $a la stringa 'a'.
*/
$entry_display .= "
<div class= \"post\">
<h2>
$title
</h2>
<p>
$subtitle
</p>
<p>
$bodytext
</p>
<p>
$comment
</p>
<p id=\"firma\">
$firma
</p>
</div>
";
/* finisce def. html per mostrare UN post */
} /* chiudo ciclo WHILE */
} /* chiudo IF */
/* qui siamo nel caso ELSE, dell'IF di sopra.
nel caso ELSE, stampiamo un msg di avviso.
(da tradurre in italiano, se preferite!)
*/
else {
$entry_display = '
<h2> This Page Is Under Construction </h2>
<p>
No entries have been made on this page.
Please check back soon, or click the
link below to add an entry!
</p>
';
} // chiudo ELSE
/*
stampiamo il link - che apparirà in basso nella pagina
IMPORTANTE, aggiungo alla URL un parametro admin con valore 1,
che poi mi serve per sapere quale visualizzazione vuole il client
NOTA: questo è il trucco per permettere di passare
da una all'altra delle due 'pagine' del nostro applicativo
NOTA: Qui si usa un diverso modo di delimitare una stringa di caratteri,
diverso da quello di delimitare con apici singoli ' a b c ' o doppi " a b c "
PHP permette un meccanismo chiamato Heredoc:
A third way to delimit strings is the heredoc syntax: <<<.
After this operator, an identifier is provided (qui sotto ADMIN_OPTION), then a newline.
The string itself follows, and then the same identifier again to close the quotation. ( DA TRADURRE )
NOTA: $_SERVER['PHP_SELF'] è un costrutto di PHP che assume il valore del file in cui si trova,
cioè il nome di se stesso, per così dire,
e permette quindi di inserire nel codice un riferimento al file stesso in cui il codice si trova.
Qui serve per scrivere un link a se stesso.
*/
$entry_display .= <<<ADMIN_OPTION
<p class="admin_link">
<a href="{$_SERVER['PHP_SELF']}?admin=1">Add a New Post</a>
</p>
<p class="admin_link">
<a href="{$_SERVER['PHP_SELF']}?admin=3">Admin posts</a>
</p>
ADMIN_OPTION;
/* Le funzionalità, quando richiamate, in genere restituiscono qualcosa;
che cosa è precisato con il costrutto return
in questo caso, la funzionalità display_public che stiamo definendo,
quando richiamata, restituirà il valore $entry_display,
che come abbiamo visto è del codice html, e che quindi potrà essere inviato al client.
*/
return $entry_display;
} // fine def. display_public()
/* display_form() - -
elabora codice html del modulo per creare un nuovo post
*/
function display_form() {
/* Ricordatevi come è fatto un modulo html:
tag form, tag input per ogni campo di inserimento del modulo
IMPORTANTE: la tag form ha un attributo action, a cui è assegnato il nome di una risorsa (+ parametri),
ovvero l'indicazione di come il server dovrà elaborare i dati inseriti nel modulo
IMPORTANTE: notate il valore dell'attributo name delle tag input,
valore che ritroveremo come chiave nell'array $_POST,
permettendo così di sapere cosa sia stato inserito in ciascun campo di inserimento del modulo
*/
/* NOTA: nell'azione associata all'invio del modulo, passo parametro admin con valore 2,
questo è il trucco per passare
da una all'altra delle diverse 'pagine' del nostro applicativo
in questo caso, faccio andare alla pagina 2 dopo aver compilato e inviato il modulo
*/
return <<<ADMIN_FORM
<form action="{$_SERVER['PHP_SELF']}?admin=2" method="post">
<label for="title">Title:</label><br />
<input name="title" id="title" type="text" maxlength="150" />
<div class="clear"></div>
<label for="subtitle">SubTitle:</label><br />
<input name="subtitle" id="subtitle" type="text" maxlength="150" />
<div class="clear"></div>
<label for="bodytext">Body Text:</label><br />
<textarea name="bodytext" id="bodytext"></textarea>
<div class="clear"></div>
<label for="comment">Comment:</label><br />
<input name="comment" id="comment" type="text" maxlength="75" />
<div class="clear"></div>
<label for="firma">Firma:</label><br />
<input name="firma" id="firma" type="text" maxlength="75" />
<div class="clear"></div>
<input type="submit" value="Create and Sign This Entry! " />
</form>
<br />
<a href="index.php?admin=0">Back to Home, Ciao</a>
ADMIN_FORM;
}
/* function write($p, $table, $link) - -
formulazione ed esecuzione query a mySQL di inserimento dati inseriri nel modulo
$p = valori di $_POST
$table = tabella
$link = connessione
*/
function write($p, $table, $link) {
$pp = array();
foreach ($p as $key=>$value){if ( $p[$key] ){ $pp[$key]= mysqli_real_escape_string($link, $p[$key]);}}
if ( $pp['title'] && $pp['subtitle'] && $pp['firma']) {
$created = date("m.d.y");
$sql = "INSERT INTO `".$table."` (`title`, `subtitle`, `bodytext`, `firma`, `comment`, `created`) VALUES ('".$pp['title']."', '".$pp['subtitle']."', '".$pp['bodytext']."', '".$pp['firma']."', '".$pp['comment']."', '".$created."')";
echo $sql;
return mysqli_query($link, $sql);
} else {
return false;
}
}
/* display_admin($link, $table) - -
elabora codice html per mostrare elenco dei post, con icove Edit e Delete
$table = tabella
$link = connessione
*/
function display_admin($link, $table) {
$q = "SELECT * FROM ".$table." ORDER BY created DESC LIMIT 10";
$r = mysqli_query($link, $q);
$entry_display='';
if ( $r !== false && mysqli_num_rows($r) > 0 ) {
while ( $a = mysqli_fetch_assoc($r) ) {
$id = stripslashes($a['id']);
$title = stripslashes($a['title']);
$subtitle = stripslashes($a['subtitle']);
$bodytext = stripslashes($a['bodytext']);
$firma = stripslashes($a['firma']);
$comment = stripslashes($a['comment']);
$entry_display .= <<<ENTRY_DISPLAY
<div class="post">
<p>
$id <b>$title</b>
$subtitle
$firma
<a href="{$_SERVER['PHP_SELF']}?admin=4&id=$id"><img src="if_Edit_Yes_58665.png" width="25px"></a>
<a href="{$_SERVER['PHP_SELF']}?admin=6&id=$id"><img src="if_Symbol_-_Delete_58688.png" width="25px"></a>
</p>
</div>
ENTRY_DISPLAY;
}
} else {
$entry_display = <<<ENTRY_DISPLAY
<p>
Non ci sono ancora post.<br>
</p>
ENTRY_DISPLAY;
}
$entry_display .= <<<ADMIN_OPTION
<a href="index.php?admin=0">Back to Home, Ciao</a>
ADMIN_OPTION;
return $entry_display;
}
/* display_edit($link, $table, $id) - -
elabora codice html per modulo per editare post la cui id è $id
$table = tabella
$link = connessione
$id = id post da editare
*/
function display_edit($link, $table, $id){
$q = "SELECT * FROM ".$table." WHERE `id`='".$id."' ORDER BY created DESC";
//echo $q; // to debug, mostra query
$r = mysqli_query($link, $q);
$entry_display='';
if ( $r !== false && mysqli_num_rows($r) > 0 ) {
while ( $a = mysqli_fetch_assoc($r) ) {
$id = stripslashes($a['id']);
$title = stripslashes($a['title']);
$subtitle = stripslashes($a['subtitle']);
$bodytext = stripslashes($a['bodytext']);
$firma = stripslashes($a['firma']);
$comment = stripslashes($a['comment']);
$entry_display .=<<<ADMIN_FORM
<h3> Edita record con id: $id</h3>
<form action="{$_SERVER['PHP_SELF']}?admin=5" method="post">
<label for="title">Title:</label><br />
<input name="title" id="title" type="text" maxlength="150" value="$title"/>
<div class="clear"></div>
<label for="subtitle">SubTitle:</label><br />
<input name="subtitle" id="subtitle" type="text" maxlength="150" value="$subtitle"/>
<div class="clear"></div>
<label for="bodytext">Body Text:</label><br />
<textarea name="bodytext" id="bodytext">$bodytext</textarea>
<div class="clear"></div>
<label for="comment">Comment:</label><br />
<input name="comment" id="comment" type="text" maxlength="75" value="$comment"/>
<div class="clear"></div>
<label for="firma">Firma:</label><br />
<input name="firma" id="firma" type="text" maxlength="75" value="$firma"/>
<div class="clear"></div>
<input type="hidden" name="id" value="$id" />
<input type="submit" value="Edita la pagina! " />
</form>
ADMIN_FORM;
}
} else {
$entry_display = <<<ENTRY_DISPLAY
<h2> Ops, non vedo il post da editare con id $id</h2>
ENTRY_DISPLAY;
}
return $entry_display;
}
/* function update($p, $id, $table, $link) - -
formulazione ed esecuzione query a mySQL di aggiornamento del post con id = $id
$p = valori di $_POST
$id = id post da aggiornare
$table = tabella
$link = connessione
*/
function update($p, $id, $table, $link) {
$pp = array();
foreach ($p as $key=>$value){if ( $p[$key] ){ $pp[$key]= mysqli_real_escape_string($link, $p[$key]);}}
$sql = "UPDATE `".$table."` SET `title` = '".$pp['title']."', `subtitle` = '".$pp['subtitle']."', `bodytext` = '".$pp['bodytext']."', `comment` = '".$pp['comment']."', `firma` = '".$pp['firma']."' WHERE `".$table."`.`id` = ".$id."";
return mysqli_query($link, $sql);
}
/* function delete($id, $table, $link) - -
formulazione ed esecuzione query a mySQL di eliminazione del post con id = $id
$id = id post da eliminare
$table = tabella
$link = connessione
*/
function delete($id, $table, $link) {
$sql = "DELETE FROM `".$table."` WHERE `".$table."`.`id` = $id";
return mysqli_query($link, $sql);
}
?>
codice sql per creare tabella necessaria per far funzionare il micro applicativo
Copia nella scheda sql di phpmyadmin il comando SQL contenuto in questo file (oppure da terminale)
--
-- Table structure for table `microBlog`
--
CREATE TABLE `microBlog` (
`id` int(255) NOT NULL,
`title` varchar(255) NOT NULL,
`subtitle` varchar(255) NOT NULL,
`bodytext` varchar(255) NOT NULL,
`firma` varchar(255) NOT NULL,
`comment` varchar(255) NOT NULL,
`created` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Indexes for table `microBlog`
--
ALTER TABLE `microBlog`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for table `microBlog`
--
ALTER TABLE `microBlog`
MODIFY `id` int(255) NOT NULL AUTO_INCREMENT;
p.s.
Per completezza e futuro uso considerate anche la formulazione completa della struttura di controllo condizionale if(){}else{},
il cui significato operativo è:
if (condizione){ istruzione caso condizione verificata } else { istruzione caso condizione NON verificata }
e notiamo che PHP ne prevede anche una formulazione stenografica (e inline): ... ? ... : ...
(condizione) ? (istruzione caso condizione verificata) : ( istruzione caso condizione NON verificata )
Accademia Albertina Torino, Scuola NTA, a.a. 2024-2025
Insegnamenti ABTEC40
a cura di mario chiari