Différences entre versions de « Php pdo »
Ligne 73 : | Ligne 73 : | ||
== Création des fonctions base == | == Création des fonctions base == | ||
Pour s’affranchir du ''CRUD'' nous allons agrémenter le fichier ''db.php'' des fonction suivantes: | Pour s’affranchir du ''CRUD'' nous allons agrémenter le fichier ''db.php'' des fonction suivantes: | ||
− | < | + | <source lang="php" style="border:1px solid black;font-size:120%"> |
function getUsers(){ | function getUsers(){ | ||
global $db; | global $db; | ||
Ligne 90 : | Ligne 90 : | ||
$insert=$db->prepare('INSERT INTO personnes (nom, prenom, email) VALUES(:nom, :prenom, :email)'); | $insert=$db->prepare('INSERT INTO personnes (nom, prenom, email) VALUES(:nom, :prenom, :email)'); | ||
$insert->execute(array('nom' => $nom,'prenom' => $prenom,'email' => $email)); | $insert->execute(array('nom' => $nom,'prenom' => $prenom,'email' => $email)); | ||
+ | return true; | ||
}catch(Exception $e){ | }catch(Exception $e){ | ||
echo $sql . "</br>" . $e->getMessage(); | echo $sql . "</br>" . $e->getMessage(); | ||
} | } | ||
+ | return false; | ||
} | } | ||
function modifyUserById($nom, $prenom, $email, $id){ | function modifyUserById($nom, $prenom, $email, $id){ | ||
Ligne 99 : | Ligne 101 : | ||
$update=$db->prepare('UPDATE personnes SET nom=:nom, prenom=:prenom, email=:email WHERE id=:id'); | $update=$db->prepare('UPDATE personnes SET nom=:nom, prenom=:prenom, email=:email WHERE id=:id'); | ||
$update->execute(array('nom' => $nom,'prenom' => $prenom,'email' => $email, 'id'=>$id)); | $update->execute(array('nom' => $nom,'prenom' => $prenom,'email' => $email, 'id'=>$id)); | ||
+ | return true; | ||
}catch(Exception $e){ | }catch(Exception $e){ | ||
echo $sql . "</br>" . $e->getMessage(); | echo $sql . "</br>" . $e->getMessage(); | ||
} | } | ||
+ | return false; | ||
} | } | ||
function delUserById($id){ | function delUserById($id){ | ||
Ligne 108 : | Ligne 112 : | ||
$sql = 'DELETE FROM personnes WHERE id='.$id.''; | $sql = 'DELETE FROM personnes WHERE id='.$id.''; | ||
$db->exec($sql); | $db->exec($sql); | ||
+ | return true; | ||
}catch(Exception $e){ | }catch(Exception $e){ | ||
echo $sql . "</br>" . $e->getMessage(); | echo $sql . "</br>" . $e->getMessage(); | ||
} | } | ||
+ | return false; | ||
} | } | ||
− | </ | + | </source> |
− | On peut remarquer que les | + | On peut remarquer que les fonctions de modifications ''UPDATE'' et ''INSERT'' nécessite une préparation (''$db->prepare()'') alors que ''DELETE'' et ''SELECT'' peuvent êtres exécutées directement (''$db->exec()''). |
+ | ==Création d'un formulaire== | ||
+ | Pour créer des personnes nous allons utiliser un formulaire de création. Nous allons le mettre dans le fichier ''php/form.php'': | ||
+ | <source lang="php" style="border:1px solid black;font-size:120%"> | ||
+ | <?php | ||
+ | $id, $nom, $prenom, $email; | ||
+ | if(isset($_POST)){ | ||
+ | $id=$_POST['id']; | ||
+ | $nom=$_POST['nom']; | ||
+ | $prenom=$_POST['prenom']; | ||
+ | $email=$_POST['email']; | ||
+ | } | ||
+ | ?> | ||
+ | <form method="post"> | ||
+ | <table> | ||
+ | <tr> | ||
+ | <td align="right"> | ||
+ | Nom : | ||
+ | </td> | ||
+ | <td> | ||
+ | <input type="text" name="nom" <?php if(!empty($nom)){echo "value=".$nom} ?> /> | ||
+ | </td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td align="right"> | ||
+ | Prénom : | ||
+ | </td> | ||
+ | <td> | ||
+ | <input type="text" name="prenom" <?php if(!empty($prenom)){echo "value=".$prenom} ?> /> | ||
+ | </td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td align="right"> | ||
+ | Email : | ||
+ | </td> | ||
+ | <td> | ||
+ | <input type="text" name="email" <?php if(!empty($email)){echo "value=".$email} ?> /> | ||
+ | </td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td colspan="2" align="center"> | ||
+ | <?php if(!empty($id)){echo "<input type=hidden name=id value=".$id." />"} ?> | ||
+ | <input type="submit" /> | ||
+ | </td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | </form> | ||
+ | </source> |
Version du 2 novembre 2015 à 21:43
Installation
Les librairies
Pour développer en PHP et utiliser MySQL, il ne faut pas oublier d'installer les librairies suivantes :
# yum -y install php php-mysql mysql mysql-server httpd
Paramétrez votre base MySQL ainsi que votre serveur HTTPD.
Base de données exemple
Nous allons utiliser la base de données suivante:
-- -- Base de données: `exemple` -- CREATE DATABASE IF NOT EXISTS `exemple` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; USE `exemple`; -- -------------------------------------------------------- -- -- Structure de la table `personnes` -- CREATE TABLE IF NOT EXISTS `personnes` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nom` varchar(100) NOT NULL, `prenom` varchar(100) NOT NULL, `email` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Développement
Structure du site
Nous allons créer un site web qui va utiliser notre base de données. Pour faire les chose bien, il faut respecter une certaine structure à l'intérieur de /var/www/html:
- php (dossier qui contient les fichiers php)
- img (dossier qui contient les images)
- index.php
Un peu de SQL
Pour chercher des données nous allons avoir besoin des requêtes suivantes:
- SELECT : select * from personnes
- INSERT : INSERT INTO personnes (id, nom, prenom, email) VALUES (NULL, :nom, :prenom, :email)
- UPDATE : UPDATE personnes SET nom=:nom, prenom=:prenom, email=:email WHERE id=:id
- DELETE : DELETE FROM personnes WHERE id=:id
Nous remplacerons les variables :id, :nom, :prenom et :email par les valeurs voulues plus tard.
Accès base avec PDO
Pour accéder à une base de données MySQL, on peut soit utiliser MySQLi soit utiliser PDO. Préférez PDO qui permet plus de souplesse. Voici le code qui permet de se connecter à une base MySQL:
<?php try{ $db = new PDO('mysql:host=localhost;dbname=exemple', 'root', 'password'); }catch(Exception $e){ echo "Échec : " . $e->getMessage(); } ?>
La variable $db contient la connexion base de données et si l'instanciation réussie, vous êtes connecté !
Nous allons centraliser tout ce qui est en relation avec la base de données dans le fichier php/db.php. Copiez les lignes précédentes dans ce fichier et faite une inclusion dans le fichier index.php:
<html> <head> <title>Exemple d'utilisation de PDO</title> </head> <body> <?php include("php/db.php"); ?> <body> <html>
Si vous ne voyez pas de message d'erreur, la connexion s'est correctement effectuée !
Création des fonctions base
Pour s’affranchir du CRUD nous allons agrémenter le fichier db.php des fonction suivantes:
function getUsers(){
global $db;
$select = $db->prepare('SELECT id, nom, prenom, email FROM personnes');
$select->execute();
return $select->fetchAll();
}
function getUserById($id){
$select = $db->prepare('SELECT id, nom, prenom, email FROM personnes WHERE id='.$id);
$select->execute();
return $select->fetchAll()[0];
}
function addUser($nom, $prenom, $email){
global $db;
try{
$insert=$db->prepare('INSERT INTO personnes (nom, prenom, email) VALUES(:nom, :prenom, :email)');
$insert->execute(array('nom' => $nom,'prenom' => $prenom,'email' => $email));
return true;
}catch(Exception $e){
echo $sql . "</br>" . $e->getMessage();
}
return false;
}
function modifyUserById($nom, $prenom, $email, $id){
global $db;
try{
$update=$db->prepare('UPDATE personnes SET nom=:nom, prenom=:prenom, email=:email WHERE id=:id');
$update->execute(array('nom' => $nom,'prenom' => $prenom,'email' => $email, 'id'=>$id));
return true;
}catch(Exception $e){
echo $sql . "</br>" . $e->getMessage();
}
return false;
}
function delUserById($id){
global $db;
try{
$sql = 'DELETE FROM personnes WHERE id='.$id.'';
$db->exec($sql);
return true;
}catch(Exception $e){
echo $sql . "</br>" . $e->getMessage();
}
return false;
}
On peut remarquer que les fonctions de modifications UPDATE et INSERT nécessite une préparation ($db->prepare()) alors que DELETE et SELECT peuvent êtres exécutées directement ($db->exec()).
Création d'un formulaire
Pour créer des personnes nous allons utiliser un formulaire de création. Nous allons le mettre dans le fichier php/form.php:
<?php
$id, $nom, $prenom, $email;
if(isset($_POST)){
$id=$_POST['id'];
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$email=$_POST['email'];
}
?>
<form method="post">
<table>
<tr>
<td align="right">
Nom :
</td>
<td>
<input type="text" name="nom" <?php if(!empty($nom)){echo "value=".$nom} ?> />
</td>
</tr>
<tr>
<td align="right">
Prénom :
</td>
<td>
<input type="text" name="prenom" <?php if(!empty($prenom)){echo "value=".$prenom} ?> />
</td>
</tr>
<tr>
<td align="right">
Email :
</td>
<td>
<input type="text" name="email" <?php if(!empty($email)){echo "value=".$email} ?> />
</td>
</tr>
<tr>
<td colspan="2" align="center">
<?php if(!empty($id)){echo "<input type=hidden name=id value=".$id." />"} ?>
<input type="submit" />
</td>
</tr>
</table>
</form>