pdo

Mattepuffo's logo
Recuperare l'ulitmo id con PDO

Recuperare l'ulitmo id con PDO

Lo scenario è questo.

Inserisco i dati in una tabella e subito dopo devo fare un inserimento in un'altra tabella collegata alla prima.

Per fare questo mi serve ovviamente l'id (inteso come campo di raccordo tra le tue tabelle) in modo da passarlo alla seconda tabella.

Per fare questo PDO ci mette a disposizione la funzione lastInsertId().

Quindi, supponendo di aver creato una classe per la connessione, possiamo iniziare da questo:

$objConn = Connessione::getInstance();

$lastRist = $objAdminConn->addSomething($par1, $par2, $par3);

$objAdminConn->addSomething2($par1, $par2, $lastRist);

Alla prima riga istanziamo la classe (che è Singleton, ma non cambia).

Mattepuffo's logo
Eliminare le immagini con PHP e MySQL

Eliminare le immagini con PHP e MySQL

Ultima parte della serie.

L'articolo predente lo trovate qua.

Eravamo rimasti a come ordinare le foto della galleria.

Adesso vediamo come eliminarle.

Prima di tutto creiamo la funzione per l'eliminazione (usando PDO):

function delImg($nome) {
global $config;
try {
$prepare = $config->getPdo()->prepare("DELETE FROM gallery WHERE nome=?");
$prepare->execute(array(
$nome
));
} catch (Exception $e) {
die($e->getMessage());
}
}

La funzione è molto semplice e prevede una classica istruzione di DELETE.

Mattepuffo's logo
Galleria di immagini in PHP e MySQL

Galleria di immagini in PHP e MySQL

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());
}
}

Mattepuffo's logo
Collegare select con PHP e Javascript

Collegare select con PHP e Javascript

Lo scenario è uno dei più classici: abbiamo una select che rappresenta le sezioni e una che rappresenta le categorie che è collegata alla prima.

Nel db avremo una cosa del genere:

  • tabella sezioni
    • sezione_id
    • sezione_nome
  • tabella categorie
    • categoria_id
    • categoria_nome
    • sezione_FK (foreign key che la collega alle sezioni)

Quindi la select con le categoiei si riempie solo con quelle che corrispondo a una deternimata sezione.

Solo con il PHP questo non è possibile; ci vuole un pò di Javascript e AJAX.

Prima di tutto riempiamo la prima select:

function selectSection() {
global $config;
try {
$result = $config->getPdo()->query("SELECT * FROM sezioni ORDER BY sezione_nome");
return $result;
} catch (Exception $e) {
die($e->getMessage());
}
}

<td>Sezione:</td>
<td>
<select name="sezione" onchange="changeSelect(this.value);" id="sezione">
<option value="*">*</option>
<?php
foreach (selectSection () as $rowSection) {
echo "<option value='" . $rowSection['sezione_id'] . "'>" . $rowSection['sezione_nome'] . "</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td>Categoria:</td>
<td>
<select name="categoria" id="categoria">
<option value='*'>*</option>
</select>
</td>
</tr>

Io uso PDO per la connessione, ma non cambia nulla.

Ora come ora viene riempita solo la select sezione, che richiama anche una funzione Javascript che ancora dobbiamo mettere su.

La select categoria ha solo un * tanto per renderla presentabile.

Mattepuffo's logo
Option selected in PHP

Option selected in PHP

Penso che più o meno tutti conosciate i tag select e option in HMTL:

<select>
   <option value="volvo">Volvo</option>
   <option value="saab">Saab</option>
   <option value="mercedes">Mercedes</option>
   <option value="audi">Audi</option>
</select>

I classici tag per creare liste.

Qui vi spiego come riempire una lista prendendo i dati da un db e come fare per selezionare una voce specifica tramite l'attributo selected.

Prima di tutto avremo una funzione che esegue la query:

function selectAuthor() {
  global $config;
  $result = array();
  try {
   $result = $config->getPdo()->query("CALL getAuthor()");
   return $result;
  } catch (PDOException $e) {
   $error = $e->getMessage() . "<br/>";
   return $error;
   die();
  }
}

Mattepuffo's logo
Creare file excel con PHP

Creare file excel con PHP

PHPExcel è un'ottima libreria per creare file excel con PHP.

Include molte funzionalità, è semplice da usare ed è in grado di creare file xls, xlsx, pdf, ecc.

Qui vi mostro come creare un file excel interrogando una tabella MySQL usando PDO, e non è stato affatto semplice arrivarci e per questo ringrazio l'utente bstefano79 del forum HTML.it.

Prima di tutto la connessione con PDO.

Non ve la spiego passo per passo in quanto spiegata qua.

Sappiate solo che ho una cartella moduli con dentro un file config.php che contiene la classe Config dove dentro ho la conessione al db con varie funzioni.

Vi riporto la parte che ci interessa:

<?php

class Config {

    private $pdo;

    public function __construct() {
        try {
            $this->pdo = new PDO('mysql:host=localhost;dbname=db', "user", "pass", array(
                        PDO::ATTR_PERSISTENT => TRUE
                    ));
        } catch (PDOException $e) {
            print "Error!: " . $e->getMessage() . "<br/>";
            die();
        }
    }

    public function selectEx() {
        $result = array();
        try {
            $stmt = $this->pdo->prepare("CALL getBookEx()");
            $stmt->execute();
            $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
            return $result;
        } catch (PDOException $e) {
            return "Error!: " . $e->getMessage() . "<br/>";
            die();
        }
    }
    ...................

}

A noi interessa la funzione selectEx().