In altri articoli ho già parlato di come fare l'upload di file, di come cancellarli, e di come visualizzarli.
Non ho mai tenuto in considerazione però la possibilità di affiancarci un db per l'ordinamento, eventuali didascalie, ecc.
Vediamo quindi come creare una galleria di immagini che ci permetterà di salvare il nome dei files e l'ordinamento su un db MySQL.
In questa prima parte vedremo la creazione del db e l'upload.
Prima di tutto dobbiamo creare un db e una tabella; la tabella che ci serve l'ho chiamata gallery e ha questa struttura:
- id int auto increment primary key
- nome varchar(100)
- ordine int
Tutti sono not null.
Cominciamo con la parte PHP; considerate che io uso PDO sul quale potete vedere questi articoli:
Comunque potete usare anche le classiche funzioni mysql/mysqli.
Vi posto la mia classe per la connessione, così vi fate un'idea:
<?php
//config.php
class Config {
private $pdo;
private static $instance;
private function __construct() {
try {
$this->pdo = new PDO('mysql:host=host;dbname=db', "user", "pass", array(
PDO::ATTR_PERSISTENT => TRUE
));
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
}
public static function getInstance() {
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
public function __clone() {
trigger_error('Clone is not allowed.', E_USER_ERROR);
}
public function getPdo() {
return $this->pdo;
}
...............
}
Non ve la sto a spiegare; comunque è una classe Singleton che dovete istanziare in questa maniera:
include_once 'config.php';
$config = Config::getInstance();
La funzione di inserimento è questa qua:
function insertImg($nome, $ordine) {
global $config;
try {
$prepare = $config->getPdo()->prepare("INSERT gallery (nome, ordine) VALUES (?,?)");
$prepare->execute(array(
$nome,
$ordine
));
} catch (Exception $e) {
die($e->getMessage());
}
}