Tabelle responsive con Bootstrap 4.3

Vediamo subito un esempio di tabella con Bootstrap 4.3:

<table class="table">
  <thead>
    <tr>
      <th scope="col">#</th>
      <th scope="col">First</th>
      <th scope="col">Last</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">1</th>
      <td>Mark</td>
      <td>Otto</td>
    </tr>
    <tr>
      <th scope="row">2</th>
      <td>Jacob</td>
      <td>Thornton</td>
    </tr>
  </tbody>
</table>
Continua a leggere

SQL SELECT

Tra i comandi di tipo DQL (Data Query Language) di SQL, SELECT è sicuramente quello più utilizzato e conosciuto, in quanto interroga le tabelle per il recupero dei dati. In questo post analizziamo alcune delle sfumature di questo comando per stabilirne le potenzialità.

Partiamo dalla creazione di una tabella che chiameremo ‘users’ con 4 colonne: ‘id’, ‘firstname’ , ‘lastname’ e ‘age’. Popoliamo la tabella creando 5 utenti:

Continua a leggere

PDO: estrazione dati dal database

Come con mysqli, anche con PDO basta impostare una SELECT query per recuperare i dati e utilizzarli nella nostra applicazione.

$sql = "SELECT name, lastname FROM users";
$stmt = $pdo->prepare($sql);
$stmt->execute();

Nonostante PDO sia relativamente semplice da usare, ci sono alcuni dettagli che è bene tenere a mente, specie quando nella prepared statement si fa uso di LIKE. Normalmente in SQL scriveremmo questo:

Continua a leggere

PDO: transactions

Spesso capita di dover eseguire più query contemporaneamente, facendo in modo che ognuna di esse vada a buon fine oppure non ne vada eseguita nessuna, preferibilmente riportando il DB allo stato di partenza.

PDO offre uno strumento importante da questo punto vista, la transazione (PDO transaction). Si tratta di una operazione in più parti che sfrutta metodi propri per recuperare le informazioni, far partire le modifiche o annullarle tutte, in caso si presenti un qualsiasi tipo di eccezione, non solo quelle riferite a PDO.

Per eseguire correttamente una transazione, la prima cosa da fare è sicuramente impostare PDO::ATTR_ERRMODE su PDO::ERRMODE_EXCEPTION

Continua a leggere

UPDATE Query con PDO

Anche UPDATE è un comando di tipo DML e quindi non ha valori di return (come anche le query INSERT e DELETE).

La query UPDATE con PDO si effettua in questo modo:

  1. Si crea una normale UPDATE query in SQL;
  2. Si rimpiazzano i valori da inserire nella tabella con i placeholders;
  3. Si prepara la query risultante con prepare();
  4. Si effettua il bind dei valori da inserire nel metodo execute;
  5. Si esegue la query risultante dal prepare() passando i valori sotto forma di array all’execute().
Continua a leggere

INSERT Query con PDO

INSERT è un comando di tipo DML e quindi non ha valori di return (come pure le query UPDATE e DELETE).

La query INSERT con PDO si effettua in questo modo:

  1. Si crea una normale INSERT query in SQL;
  2. Si rimpiazzano i valori da inserire nella tabella con i placeholders;
  3. Si prepara la query risultante con prepare();
  4. Si esegue la query risultante dal prepare() passando i valori sotto forma di array all’execute().
Continua a leggere

Gestione degli errori in PDO

Ci sono alcuni chiarimenti a proposito del costrutto try...catch di cui dobbiamo discutere. In rete si trova sempre qualcosa del genere:

try {
$pdo->prepare('SELECT * FROM users WHERE username = :username AND group = :group')->execute(['username' => $username, 'group' => $group]);
} catch (PDOException $e) {
   die($e->getMessage());
}

Niente di più sbagliato. Non ha nessuno scopo pratico, se non quello puramente didattico.

Continua a leggere

Introduzione a PHP PDO

Cosa significa PDO?

PDO è l’acronimo di PHP Data Objects, definisce un layer di astrazione dal database (Database Access Abstraction Layer) ed è stato rilasciato con PHP 5.1. Generalmente, per accedere alle funzioni di un database, si utilizza una sintassi propria del database con il quale dobbiamo interfacciarci.

Con MySQL ad esempio, per ottenere tutti i record della tabella users, si utilizza:

“SELECT * FROM users”

Questa sintassi però ci lascia esposti alle SQL Injections.

Continua a leggere

Caricare le classi PHP in automatico con spl_autoload_register()

Normalmente, per includere le classi PHP all’interno delle pagine, si usa la funzione require (oppure include).
Ma quando le classi da caricare sono numerose, risulta complicato e ripetitivo inserirle tutte manualmente:

<?php require_once "classes/Config.php"; ?>
<?php require_once "classes/Cookie.php"; ?>
<?php require_once "classes/DB.php"; ?>
<?php require_once "classes/Hash.php"; ?>
<?php require_once "classes/Input.php"; ?>
...
Continua a leggere