Sorgente dell'esempio

<!-- Parte in HTML -->
<html><head>
<title>Lezioncina sul PHP - 13</title>
<meta name="author" content="Ing. Stefano Salvi">
</head>
<body bgcolor=#ffffcc text=#000080 vlink=#0040cc link=#0080ff>
<table width=100% height=100%><tr>
<td width=90% valign=middle>
<h1 align=center><font size=+5>Esempio di pagina HTML Dinamica</font></h1>
</td><td width=90 valign=middle><img src=php.jpg align=right border=0 usemap=#mymap></td></tr>
<map name=mymap>
<area shape=rect coords=0,0,30,90 href=12.html>
<area shape=rect coords=30,0,60,90 href=index.html>
<area shape=rect coords=60,0,90,90 href=14.html>
</map>
<tr>
<td height=80% valign=middle align=left colspan=2>
<font size=+5><ul>
<h1 align=center>Esempio di pagina HTML Dinamica con interazione dell'utente</h1>
<h2 align=center>Clicka sulla cella dove vuoi inserire il simbolo del
giocatore corrente</h2>
<?php                         // Inizio parte in PHP
  if (array_key_exists("quads", $_REQUEST)) {
    $quads = $_REQUEST["quads"];  // Estrago le variabili insrite dall'utente
  } else {
    $quads = "";
  }
  $player = (array_key_exists("quads", $_REQUEST)) ? $_REQUEST["player"] : "";
  if (!$quads) {              // Se la variabile 'quads' non esiste
    $quads = ",,,;,,,;,,,;";  // La creo con tutte le celle vuote
  }
  if ($player == "x") {       // Se il giocatore corrente e' 'x'
    $player= "o";             // Lo cambio in 'o'
    $color= "o.jpg";          // e di conseguenza scelgo il suo simbolo
  } else {                    // Altrimenti (giocatore = 'o' o nessun giocatore
    $player= "x";             // Scelgo il giocatore 'x'
    $color= "ics.jpg";        // Con il relativo simbolo
  }
  // Stampo (in HTML) il giocatore corrente (uso il tag IMG)
  echo "<center>Giocatore corrente: <img align=middle src=$color><br>\n";
  $status=explode(";",$quads); // Spezzo 'quads' nelle righe che contiene
  echo "<table border=1>\n";  // Stampo l'intestazione della tabella
  for ($y=0;$y < 3; $y ++) {  // Loop sulle righe della tabella
    echo "<tr>\n";            // Intestazione di riga
    $val = explode(",", $status [$y]); // Spezza la riga nelle celle
    for ($x = 0; $x < 3; $x ++) {     // Loop sulle celle
      if ($val [$x] == "x") { // Se la riga contiene 'x'
        // Genere una cella contente l'immagine 'x'
        echo "<td><img src=ics.jpg border=0></td>\n";
      } else if ($val [$x] == "o") { // Altrimenti se e' 'o'
        // Genere una cella contente l'immagine 'o'
        echo "<td><img src=o.jpg border=0></td>\n";
      } else {  // Altrimenti la cella e' vuota
        $link = "";  // Prepara una stringa vuota
        for ($oy=0;$oy < 3; $oy ++) { // Loop righe
          if ($oy != $y) {  // Se la riga non e' la corrente
            $link = "$link$status[$oy]"; // Aggiunge vecchio contenuto
          } else { // Altrimenti e' la riga corrente
            for ($ox = 0; $ox < 3; $ox ++) { // loop celle
              if ($ox != $x) {  // Se la cella non e' la corrente
                $link = "$link$val[$ox],"; // aggiunge valore vecchio (con virgola)
              } else {  // altrimenti cella corrente
                $link = "$link$player,"; // aggiunge simbolo corrente (con virgola)
              }
            }
          }
          $link = "$link;"; // Aggiunge il ';' in gondo alla riga
        }
        // Una volta creata la nuova 'quads' in 'link',
        // Stampa una cella contente una cella con contenuto 'blank'
        // e con un collegamento a questa stessa pagina, ma con due
        // parametri 'GET': 'player' e 'quads'
        echo "<td><a href=13.php?player=$player&quads=$link><img\n";
        echo "src=blank.jpg border=0></a></td>\n";
      }
    }
    echo "</tr>\n";  // Chiudo la riga
  }
  echo "</table>\n"; // Chiudo la tabella
  // Stampo i link a pie' di pagina (potevo anche farlo in HTML...)
  echo "<h1 align=center>[<a href=13.php>Ricomincia</a>][<a\n";
  echo "href=13.s.html>Vedi il sorgente</a>]</h1></center>\n";
 ?> <!-- Fine parte in PHP, ripresa di HTML -->
</font></td></tr></table>
<p align=right><i>&copy; Ing. Stefano Salvi - </i>released under <a
 href="http://www.gnu.org/licenses/fdl.txt"
 title="Testo inglese della FDL presso www.gnu.org">FDL licence</a></p>
</body>
</html>

© Ing. Stefano Salvi - released under FDL licence