Uso di MySQL - Workbench


Nei server possono essere archiviate in modo centralizzato molte informazioni di solito non disponibili nei computer personali. Queste informazioni sono spesso organizzate in strutture di dati, dette database, costruite secondo precisi protocolli che permettano la facilit di lettura, di aggiornamento e anche di scambio tra protocolli diversi.

In questa introduzione, per illustrare alcuni concetti e metodi generali di costruzione di un database MySQL e di interazione con lo stesso usando istruzioni in PHP, si propone il seguente percorso.

  1. Preparazione di una tabella MSExcel contenente i nomi delle regioni italiane affiancati dai nomi dei rispettivi capoluoghi.

    regione capoluogo
    Abruzzo L'Aquila
    Basilicata Potenza
    Calabria Catanzaro
    Campania Napoli
    Emilia-Romagna Bologna
    Friuli-Venezia Giulia Trieste
    Lazio Roma
    Liguria Genova
    Lombardia Milano
    Marche Ancona
    Molise Campobasso
    Piemonte Torino
    Puglia Bari
    Sardegna Cagliari
    Sicilia Palermo
    Toscana Firenze
    Trentino-Alto Adige Trento
    Umbria Perugia
    Valle d'Aosta Aosta
    Veneto Venezia

     

  2. Esportazione della tabella in formato *.csv (comma separated values = valori separati da virgola).

    Usando la funzione File→Salva con Nome selezionere CSV e salvarlo con il seguente pathname

    C:\\Documents and Setting\All Users\Dati Applicazioni\MySql\MySql Server 5.5\data\MyItaly\regioni.csv.

    Confermare, provocando la scrittura di regioni.csv. Questo file in formato testo e quindi pi essere aperto e controllato usando Notepad. Accertarsi che le stringhe di caratteri non siano delimitate da virgolette e controllare qual il segno di interpunzione (virgola o punto e virgola) che separa le stringhe nella stessa colonna.

  3. Importazione della tabella *.csv in una tabella di un database di MySQL.

  4. Consultazione dal database con istruzioni di PHP.

    Nell'esempio 4 si mostra come costruire una pagina che accede alle informazioni contenute nel database e le comunica all'utente.

    La pagina contiene la seguente form

    <form id="frm" name="frm" action="esempio004.php" method="get" 
      style="position:relative; left:30%; width:40%; text-align:center; border-style:solid; background-color:cyan" >
    <p>
    <label for="c_reg">Regione? </label>
    <input type="text" id="c_reg" name="c_reg" size="30" value="" /> 
    </p>
    <p>
    <input type="submit" value=" trova capoluogo "/>
    <input type="reset" value=" reset "/>
    </p>
    </form>
    

    Quando viene cliccato il bottone submit il server attiva il file esempio004.php riportato di seguito.

    
    <?php
    
    // preparazione della pagina HTML con la risposta
    
      echo '<?xml version="1.1" encoding="iso-8859-1"?>'."\n";
      echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"';
      echo '"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'."\n";
      echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">'."\n";
      echo "<head>\n";
      echo "<title>";
    
    // lettura dell'input
      $regione = $_REQUEST["c_reg"];
      $manca_input = (strlen($regione)==0);
      if ($manca_input)
        $regione = "sconosciuta";
    
      echo "regione: ".$regione; 
      echo "</title>\n";
      echo "</head>\n";
      echo "<body style='background-color:ivory; color:blue; text-align:center; font-size:120%'>\n";
    
      if ($manca_input)
        echo "<p>Input non valido.</p>";
      else
        {
    // apertura della comunicazione con il database
          $DBhost = "localhost";      // host del database mySQL
          $DBuser = "root";           // username
          $DBpass = "password";       // password
          $DBName = "MyItaly";         // nome del database
    
          mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile connettersi al database.");
          @mysql_select_db("$DBName") or die("Impossibile connettersi al database.");
    /*
    se qualcosa non funziona, la procedura viene interrotta (die)
    altrimenti si conpila la stringa di ricerca in linguaggio SQL assegnandola alla variabile $sql
    */
          $sql  = 'select * from regioni where regione = "'.$regione.'"';
          $n_righe = 0;
    // l'istruzione mysql_query($sql) effettua la ricerca e riempie lo array $record_set
          $record_set = mysql_query($sql);
    // se $record_set non  vuoto, si rileva il numero di record letti con l'istruzione mysql_num_rows()
          if ($record_set)
            $n_righe = mysql_num_rows($record_set);
    // se il numero di record letti  1,  stato individuato un preciso record di cui si legge il campo capoliogo
          if ($n_righe==1)
            {
    // l'istruzione mysql_fetch_assoc() legge il contenuto del record puntato
              $riga = mysql_fetch_assoc($record_set);
              $capoluogo = $riga['capoluogo'];
    // la funzione strtoupper() crea un stringa in maiuscolo
              echo "<p>Il capoluogo della regione ".strtoupper($regione)."  ".$capoluogo.".</p>\n";
              mysql_free_result($record_set);
            }
          else
            echo "<p>La regione ".strtoupper($regione)." non esiste.</p>\n";
    // chiusura della comunicazione con il database
          mysql_close();
        }
      echo "</body>\n</html>";
    ?>
    

    Una versione meno rigida della stessa ricerca presentata nell'esempio 5 in cui la ricerca del capoluogo non richiede la scrittura completa del nome della regione, ma solo di qualche lettera iniziale.

    Si riporta il brano del file esempio005.php con le varianti rispetto a esempio005.php.

    /* 
    Il carattere '%'  un carattere jolly. 
    like "'.$regione.'%" significa 'tutti i record che cominciano con $regione
    */
          $sql  = 'select * from regioni where regione like "'.$regione.'%"';
          $n_righe = 0;
          $record_set = mysql_query($sql);
          if ($record_set)
            $n_righe = mysql_num_rows($record_set);
    // Si articola lo output a secnda del numero di record trovati
          switch($n_righe)
            {
    // Nessun record
              case 0:
                echo "<p>La regione ".strtoupper($regione)." non esiste.</p>\n";
                break;
    // Un solo record
              case 1:
                $riga = mysql_fetch_assoc($record_set);
                $regione =  $riga['regione'];
                $capoluogo = $riga['capoluogo'];
                echo "<p>Il capoluogo della regione ".strtoupper($regione)."  ".$capoluogo.".</p>\n";
                break;
    // Troppi record
              default:
                echo "<p>L'indicazione ".strtoupper($regione)." non  univoca.</p>\n";
            }
          mysql_free_result($record_set);
          mysql_close();