T.P. phpmyadmin - mysql - php (Partie 1)
On (je) travaille avec uwamp, vous travaillez avec xampp.
On va sur phpmyadmin (root - root ATTENTION sur xampp le mot de passe est vide '' )
On se propose de travailler avec la base de données food
Qu'il faudra importer en utilisant le langage SQL.
<?php
-- phpMyAdmin SQL Dump
-- version 4.5.4.1
-- http://www.phpmyadmin.net
--
-- Client : localhost
-- Généré le : Mer 04 Décembre 2024 à 09:20
-- Version du serveur : 5.7.11
-- Version de PHP : 5.6.18
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Base de données : `food`
--
-- --------------------------------------------------------
--
-- Structure de la table `aliment`
--
CREATE TABLE `aliment` (
`id` int(11) NOT NULL,
`nom` varchar(100) NOT NULL,
`marque` varchar(100) DEFAULT NULL,
`sucre` float DEFAULT NULL,
`calories` int(11) NOT NULL,
`graisses` float DEFAULT NULL,
`proteines` float DEFAULT NULL,
`bio` tinyint(1) DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Contenu de la table `aliment`
--
INSERT INTO `aliment` (`id`, `nom`, `marque`, `sucre`, `calories`, `graisses`, `proteines`, `bio`) VALUES
(1, 'pomme', 'sans marque', 19.1, 72, 0.2, 0.4, 0),
(2, 'poire', 'sans marque', 27.5, 134, 0.2, 1.1, 1),
(3, 'banane', 'chiquita', 24, 101, 0.3, 1.1, 0),
(4, 'jambon', 'herta', 0.2, 34, 0.8, 6.6, 0),
(5, 'compote', 'andros', 11, 51, 0, 0.5, 0),
(6, 'steak haché', 'charal', 0.8, 68, 4.8, 4.8, 0),
(7, 'saumon', 'guyader', 0, 206, 12.3, 22.1, 0),
(8, 'haricots verts', 'bonduelle', 5.8, 25, 0.1, 1.5, 0),
(9, 'riz', 'oncle benz', 28.2, 130, 0.3, 2.7, 0),
(10, 'pâtes completes', 'barilla', 64, 353, 2.7, 14, 1),
(11, 'blanc de dinde', 'père dodu', 0.6, 98, 0.9, 22, 0),
(12, 'filet de poulet', 'le gaulois', 0, 121, 1.8, 26.2, 0),
(13, 'muesli', 'bjorg', 26.5, 170, 5, 3.5, 1),
(14, 'café', 'carte noire', 0, 0, 0, 0, 0),
(15, 'jus d\'orange', 'innocent', 16, 74, 0, 1.6, 0),
(16, 'jus de pomme', 'andros', 24, 100, 0.2, 0.2, 1),
(17, 'pomme de terre', 'doréac', 21.1, 104, 0.2, 2.8, 0),
(18, 'oeuf', 'naturalia', 0.4, 74, 5.1, 6.5, 1),
(19, 'baguette', 'sans marque', 36.1, 185, 1.2, 7.5, 0),
(20, 'lait d\'amande', 'bjorg', 6.1, 80, 5.3, 1.5, 1);
-- --------------------------------------------------------
--
-- Structure de la table `langue`
--
CREATE TABLE `langue` (
`id` int(11) NOT NULL,
`nom` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Contenu de la table `langue`
--
INSERT INTO `langue` (`id`, `nom`) VALUES
(1, 'français'),
(2, 'anglais');
--
-- Index pour les tables exportées
--
--
-- Index pour la table `aliment`
--
ALTER TABLE `aliment`
ADD PRIMARY KEY (`id`);
--
-- Index pour la table `langue`
--
ALTER TABLE `langue`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT pour les tables exportées
--
--
-- AUTO_INCREMENT pour la table `aliment`
--
ALTER TABLE `aliment`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=21;
--
-- AUTO_INCREMENT pour la table `langue`
--
ALTER TABLE `langue`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Pour simplifier nous allons accéder à la base de données avec l'utilisateur root/root
ce qui n'est pas à faire en production pour des raisons de sécurité évidente.
Première étape, afficher
une colonne (le nom de chaque aliment) de la base de données :
<?php
try {
$bdd = new PDO('mysql:host=localhost;dbname=food;charset=utf8', 'root', 'root');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$sqlQuery = 'SELECT * FROM aliment';
$recipesStatement = $bdd->prepare($sqlQuery);
$recipesStatement->execute();
$recipes = $recipesStatement->fetchAll();
// On affiche chaque produit un à un
foreach ($recipes as $recipe) {
?>
<p><?php echo $recipe['nom']; ?></p>
<?php
}
?>
Mais bien entendu on peut afficher toutes les colonnes de la table de la manière suivante :
<?php
try {
$bdd = new PDO('mysql:host=localhost;dbname=food;charset=utf8', 'root', 'root');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$sqlQuery = 'SELECT * FROM aliment';
$recipesStatement = $bdd->prepare($sqlQuery);
$recipesStatement->execute();
$recipes = $recipesStatement->fetchAll();
// On affiche chaque produit un à un
echo("Nom - marque - sucre - calories - graisses - proteines - bio");
foreach ($recipes as $recipe) {
?>
<p><?php echo ($recipe['nom'] .
" - " . $recipe['marque'] .
" - " . $recipe['sucre'] .
" - " . $recipe['calories'] .
" - " . $recipe['graisses'] .
" - " . $recipe['proteines'].
" - " . $recipe['bio'] ); ?></p>
<?php
}
?>