Geek Help Me ! Tutoriels, Dossiers, News...

  Accueil Tutoriels Développement PHP / MySQL [PHP] Tuto : Accéder à une Base de données MySQL
Bookmark and Share
[PHP] Tuto : Accéder à une Base de données MySQL
Note des utilisateurs: / 2
MauvaisTrès bien 
Écrit par Lordsirius   
Dimanche, 11 Juillet 2010 22:23

I/ Introduction au SGBD

Un SGBD, ou système de gestion de base de donnée est un programme servant à stocker des données, les modifier et les afficher.

Les SGBD les plus connus sont les suivants :

-          MySQL
-          Oracle
-          Microsoft SQL Server
-          SQLite
-          PostgreSQL

Dans le tutoriel que je vous propose, nous allons utiliser le serveur de Base de Données MySQL, il a l’avantage d’être gratuit, libre, complet et très fiable.


II/ Création de la base de Données

Après avoir installé votre environnement de développement (CF Tuto : [PHP] Tuto : Installer votre serveur Apache / PHP avec XAMPP ), nous allons procéder à la création de la base de données.

Nous allons commencer par la création de la base de donnée. Le nom sera bibliotheque. Une fois cette opération effectuée nous allons importer le fichier import.sql qui va s'occuper de créer les tables et les remplir pour les besoins de la démo. (Cliquer ici pour télécharger ce fichier).

Voilà, les tables sont maintenant créées et les données importés.

Nous allons pouvoir procéder au script PHP permettant de manipuler les données.
Dans ce tutoriel, nous allons écrire une petite application permettant d'afficher, de modifier, de supprimer et d'ajouter un ouvrage au sein de MySQL.

   


III/ Connexion à la base de donnée MySQL avec Mysqli

Créons un fichier bdd.inc.php dans le répertoire inc.

<?php
/**
* Fonction permettant de se connecter à Mysql via la librairie mysqli
*
* @return Retourne une ressource de connexion au serveur MySQL en cas de succès et, sinon, FALSE  .
*/
function connectDb() {
$config['host']='localhost';
$config['user']='root';
$config['password']='';
$config['database']='bibliotheque';
$link = mysqli_connect($config['host'], $config['user'], $config['password'], $config['database']);
/* Vérification de la connexion */
if (mysqli_connect_errno()) {
printf("Echec de la connexion : %s\n", mysqli_connect_error());
exit();
}
return $link;
}
?>

Ce script consiste à établire une connexion à MySQL via la fonction mysqli_connect.

La signature de cette fonction est la suivante :

<?php

  mysqli  mysqli_connect ( string host , string username , string passwd , string dbname , int port , string socket )

  ?>

En cas de sucés la fonction retourne l’identifiant de la ressource de connexion et en cas d’échec le message Echec de la connexion apparait et stoppe l’exécution du script.


IV/ Afficher les valeurs d’une table

Créons le fichier index.php à la racine du site. Ce fichier aura pour objectif d’afficher une liste des ouvrages.

Le script est le suivant :

<?php
require_once('lib/bdd.inc.php'); // Inclusion du fichier gérant la connexion au serveur MySQL
$link = connectDb(); // Connexion au serveur MySQL
// Création de la requête
$querySelect = 'select NUMOUV, ouvrages.TITRE, DATEPUB, COLLECTION, LIEUPUB, medium, PRIX, GENRE, editeurs.NUMEDIT, NOM from ouvrages LEFT JOIN oeuvres ON ouvrages.NUMO=oeuvres.NUMO INNER JOIN editeurs ON ouvrages.NUMEDIT=editeurs.NUMEDIT';
// Ajout d'une condition dans la requete pour afficher tous les ouvrages d'un éditeur si on cliqué sur le lien (Paramètre GET editeur présent dans l'url)
if (isset($_GET['editeur'])) {
$querySelect = $querySelect.' WHERE editeurs.NUMEDIT='.$_GET['editeur'];
}
// Execution de la requête
$idQuerySelect = mysqli_query($link, $querySelect);
?>
<html>
<head>
<title>Liste des ouvrages</title>
<link rel="stylesheet" media="all" href="/css/style.css"/>
</head>
<body>
<h1>Médiathèque - Liste des ouvrages</h1>
<p><a href="/creerouvrage.php">Ajouter un ouvrage</a></p>
<p>Cliquer sur un editeur pour afficher tous les ouvrages de cette éditeur</p>
<table>
<tr>
<th>Numéro</th>
<th>Titre</th>
<th>Collection</th>
<th>Date de Publication</th>
<th>Lieu de Publication</th>
<th>Média</th>
<th>Prix</th>
<th>Genre</th>
<th>Editeur</th>
<th>Action</th>
</tr>
<?php
while ($result = mysqli_fetch_array($idQuerySelect)) {
?>
<tr>
<td>
&nbsp;<?php echo $result['NUMOUV']?>
</td>
<td>
&nbsp;<?php echo $result['TITRE']?>
</td>
<td>
&nbsp;<?php echo $result['COLLECTION']?>
</td>
<td>
&nbsp;<?php echo $result['DATEPUB']?>
</td>
<td>
&nbsp;<?php echo $result['LIEUPUB']?>
</td>
<td>
&nbsp;<?php echo $result['medium']?>
</td>
<td>
&nbsp;<?php echo $result['PRIX']?>
</td>
<td>
&nbsp;<?php echo $result['GENRE']?>
</td>
<td>
&nbsp;<a href="/?editeur=<?php echo $result['NUMEDIT']?>"><?php echo $result['NOM']?></a>
</td>
<td>
&nbsp;<a href="/modifierouvrage.php?id=<?php echo $result['NUMOUV']?>">Modification</a>
&nbsp;<a href="/?supprid=<?php echo $result['NUMOUV']?>">Suppression</a>
</td>
</tr>
<?php
}
?>
</table>
</body>
</html>

Explication du code :

Require_once permet d’inclure le fichier de connxion au serveur MySQL que nous avons créer précédemment.

$querySelect = 'select NUMOUV, ouvrages.TITRE, DATEPUB, COLLECTION, LIEUPUB, medium, PRIX, GENRE, editeurs.NUMEDIT, NOM from ouvrages LEFT JOIN oeuvres ON ouvrages.NUMO=oeuvres.NUMO INNER JOIN editeurs ON ouvrages.NUMEDIT=editeurs.NUMEDIT';

Ces lignes permettent d’affecter  à la variable $querySelect la requête SQL permettant de sélectionner les ouvrages qui correspondent à 0 ou 1 ouvre et nom et numéro d’éditeur.

<?php
if (isset($_GET['editeur']))
{
$querySelect = $querySelect.' WHERE editeurs.NUMEDIT='.$_GET['editeur'];
}
?>



Ces lignes permettent de rajouter une condition permettant d’afficher tous les ouvrages appartenant à  l’éditeur sélectionné par l’utilisateur.

$idQuerySelect = mysqli_query($link, $querySelect);  // Cette ligne execute la requite cité ci-dessus.

while ($result = mysqli_fetch_array($idQuerySelect)) 
{ 
 //Affiche les données
}

Le while permet de parcourir chaque occurrence (ligne) répondant à la requête pour ainsi l’afficher par la suite. mysqli_fetch_array permet de retourner chaque ligne sous forme de tableau indicé par le numéro de colonne mais également par le nom du champ de table MySQL.

Ainsi il est de bonne pratique d’utiliser les noms des champs des tables afin de faciliter la lecture du code lors d’une éventuelle reprise.


V/ Suppression d’une ligne dans MySQL

Ajoutons au fichier index.php, les lignes suivantes avant l’affectation $querySelect :


  <?php
// Test si un identifiant d'ouvrage a été passé en paramètre GET dans l'URL
if (isset($_GET['supprid'])) {
$queryDelete = 'delete from ouvrages where NUMOUV='.$_GET['supprid'];
if (mysqli_query($link, $queryDelete)) {
echo '<h3>Suppression réussi !</h3>';
}
else {
echo '<h3>Erreur la requete n\'a pas été enregistré dasn la bdd : '.$queryDelete.'</h3>';
}
}
?>



Ces lignes permettent de tester si le paramètre supprid est passé en paramètre GET dans l’url. Si le prédicat est valide alors nous affections une commande SQL ) la variable $queryDelete ordonnant la suppresion de l’ouvrage.

La fonction mysqli_query($link, $query) execute la requête est retourne un booleen indiquant le résultat de l’opération.


V/ Ajout d’un ouvrage dans MySQL

Créons le fichier creerouvrage.php dont le contenu sera le suivant :

<?php
require_once('lib/bdd.inc.php'); // Inclusion du fichier gérant la connexion au serveur MySQL
$link = connectDb(); // Connexion au serveur MySQL
$querySelectEditeur =  'select *
from editeurs
order by nom';
$idQuerySelectSelectEditeur = mysqli_query($link, $querySelectEditeur);
$querySelectOeuvres =  'select * from oeuvres';
$idQuerySelectSelectOeuvres = mysqli_query($link, $querySelectOeuvres);
if (isset($_POST['TITRE']) && isset($_POST['COLLECTION']) && isset($_POST['DATEPUB']) && isset($_POST['LIEUPUB']) && isset($_POST['medium']) && isset($_POST['PRIX']) && isset($_POST['NUMEDIT']) && isset($_POST['NUMO'])) {
$queryInsert = "INSERT INTO bibliotheque.ouvrages (NUMOUV ,TITRE, COLLECTION, DATEPUB, LIEUPUB, medium, PRIX, NUMEDIT, NUMO)
VALUES ( NULL, '".$_POST['TITRE']."' , '".$_POST['COLLECTION']."' , '".$_POST['DATEPUB']."' , '".$_POST['LIEUPUB']."' , '".$_POST['medium']."' , '".$_POST['PRIX']."' , ".$_POST['NUMEDIT']." , ".$_POST['NUMO'].")";
if (mysqli_query($link, $queryInsert)) {
echo '<h3>Insertion réussi !</h3>';
}
else {
echo '<h3>Erreur la requete n\'a pas été enregistré dasn la bdd : '.$queryInsert.'</h3>';
}
}
?>
<html>
<head>
<title>Ajouter un ouvrage</title>
<link rel="stylesheet" media="all" href="/css/style.css"/>
</head>
<body>
<h1>Médiathèque - Ajout d'un ouvrage</h1>
<p><a href="/index.php">Retour à la liste</a></p>
<form action="creerouvrage.php" method="post">
<table>
<tr>
<td align="right" width="15f%">
Titre :
</td>
<td  width="90%">
<input value="" />
</td>
</tr>
<tr>
<td align="right" width="10%">
Collection :
</td>
<td  width="90%">
<input type="text" value="" id="COLLECTION" />
</td>
</tr>
<tr>
<td align="right" width="10%">
Date de publication :
</td>
<td  width="90%">
<input type="text" value="" id="DATEPUB" />
</td>
</tr>
<tr>
<td align="right" width="10%">
Lieu de publication :
</td>
<td  width="90%">
<input type="text" value="" id="LIEUPUB" />
</td>
</tr>
<tr>
<td align="right" width="10%">
Média :
</td>
<td  width="90%">
<select name="medium" >
<option value="CD">CD</option>
<option value="Livre">Livre</option>
<option value="Vidéo">Vidéo</option>
</select>
</td>
</tr>
<tr>
<td align="right" width="10%">
Prix :
</td>
<td  width="90%">
<input value="" />
</td>
</tr>
<tr>
<td align="right" width="10%">
Oeuvre :
</td>
<td  width="90%">
<select name="NUMO">
<option value="0">Pas d'oeuvre associé</option>
<?php
while ($result = mysqli_fetch_array($idQuerySelectSelectOeuvres)) {
echo '<option value="'.$result['NUMO'].'">'.$result['TITRE'].'</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td align="right" width="10%">
Editeur :
</td>
<td  width="90%">
<select name="NUMEDIT">
<?php
while ($result = mysqli_fetch_array($idQuerySelectSelectEditeur)) {
echo '<option value="'.$result['NUMEDIT'].'">'.$result['NOM'].'</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="Valider"/>&nbsp;
<input type="reset" value="Annuler" />
</td>
</tr>
</table>
</form>
</body>
</html>

V/ Modifier une ligne dans MySQL

Pour la page de modification d'un ouvrage, créons le fichier modifierouvrage.php dont le code sera :

<?php
require_once('lib/bdd.inc.php'); // Inclusion du fichier gérant la connexion au serveur MySQL
$link = connectDb(); // Connexion au serveur MySQL
$querySelectEditeur =  'select *
from editeurs
order by nom';
$idQuerySelectSelectEditeur = mysqli_query($link, $querySelectEditeur);
$querySelectOeuvres =   'select * from oeuvres';
$idQuerySelectSelectOeuvres = mysqli_query($link, $querySelectOeuvres);
if (isset($_POST['TITRE']) && isset($_POST['COLLECTION']) && isset($_POST['DATEPUB']) && isset($_POST['LIEUPUB']) && isset($_POST['medium']) && isset($_POST['PRIX']) && isset($_POST['NUMEDIT']) && isset($_POST['NUMO']) && isset($_POST['NUMOUV'])) {
$queryInsert = "UPDATE bibliotheque.ouvrages SET TITRE='".$_POST['TITRE']."' , COLLECTION='".$_POST['COLLECTION']."' , DATEPUB='".$_POST['DATEPUB']."' , LIEUPUB='".$_POST['LIEUPUB']."' , medium='".$_POST['medium']."' , PRIX='".$_POST['PRIX']."' , NUMEDIT=".$_POST['NUMEDIT']." , NUMO=".$_POST['NUMO']." WHERE NUMOUV=".$_POST['NUMOUV'];
if (mysqli_query($link, $queryInsert)) {
echo '<h3>Modification réussi !</h3>';
}
else {
echo '<h3>Erreur la requete n\'a pas été enregistré dasn la bdd : '.$queryInsert.'</h3>';
}
}
if (isset($_GET['id'])) {
$querySelect = 'select NUMOUV, ouvrages.TITRE, DATEPUB, COLLECTION, LIEUPUB, medium, PRIX, GENRE, editeurs.NUMEDIT, NOM, oeuvres.NUMO from ouvrages LEFT JOIN oeuvres ON ouvrages.NUMO=oeuvres.NUMO INNER JOIN editeurs ON ouvrages.NUMEDIT=editeurs.NUMEDIT WHERE NUMOUV='.$_GET['id'];
// Execution de la requête
$idQuerySelect = mysqli_query($link, $querySelect);
$row = mysqli_fetch_array($idQuerySelect);
}
?>
<html>
<head>
<title>Modifier un ouvrages</title>
<link rel="stylesheet" media="all" href="/css/style.css"/>
</head>
<body>
<h1>Médiathèque - Modifier un ouvrage</h1>
<p><a href="/index.php">Retour à la liste</a></p>
<form action="modifierouvrage.php?id=<?php echo $_GET['id']?>" method="post">
<input type="hidden" value="<?php echo $_GET['id']?>" name="NUMOUV" />
<table>
<tr>
<td align="right" width="15f%">
Titre :
</td>
<td  width="90%">
<input type="text" value="<?php echo $row['TITRE']?>" name="TITRE" />
</td>
</tr>
<tr>
<td align="right" width="10%">
Collection :
</td>
<td  width="90%">
<input type="text" value="<?php echo $row['COLLECTION']?>" name="COLLECTION" />
</td>
</tr>
<tr>
<td align="right" width="10%">
Date de publication :
</td>
<td  width="90%">
<input type="text" value="<?php echo $row['DATEPUB']?>" name="DATEPUB" />
</td>
</tr>
<tr>
<td align="right" width="10%">
Lieu de publication :
</td>
<td  width="90%">
<input type="text" value="<?php echo $row['LIEUPUB']?>" name="LIEUPUB" />
</td>
</tr>
<tr>
<td align="right" width="10%">
Média :
</td>
<td  width="90%">
<select name="medium" >
<option value="CD" <?php echo ($row['medium']=='CD')?'selected':'';?>>CD</option>
<option value="Livre" <?php echo ($row['medium']=='Livre')?'selected':'';?>>Livre</option>
<option value="Vidéo" <?php echo ($row['medium']=='Vidéo')?'selected':'';?>>Vidéo</option>
</select>
</td>
</tr>
<tr>
<td align="right" width="10%">
Prix :
</td>
<td  width="90%">
<input type="text" value="<?php echo $row['PRIX']?>" name="PRIX" />
</td>
</tr>
<tr>
<td align="right" width="10%">
Oeuvre :
</td>
<td  width="90%">
<select name="NUMO">
<option value="0">Pas d'oeuvre associé</option>
<?php
while ($result = mysqli_fetch_array($idQuerySelectSelectOeuvres)) {
?>
<option value="<?php echo $result['NUMO']?>" <?php echo ($result['NUMO']==$row['NUMO'])?'selected':'';?>><?php echo $result['TITRE'];?></option>
<?php
}
?>
</select>
</td>
</tr>
<tr>
<td align="right" width="10%">
Editeur :
</td>
<td  width="90%">
<select name="NUMEDIT">
<?php
while ($result = mysqli_fetch_array($idQuerySelectSelectEditeur)) {
?>
<option value="<?php echo $result['NUMEDIT']?>" <?php echo ($result['NUMEDIT']==$row['NUMEDIT'])?'selected':'';?>><?php echo $result['NOM'];?></option>
<?php
}
?>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="Valider"/>&nbsp;
<input type="reset" value="Annuler" />
</td>
</tr>
</table>
</form>
</body>
</html>

Cliquer ici pour télécharger le code source de ce tutoriel. N'hésitez pas à venir poser des questions dans notre forum rubrique PHP/MySQL.

Cordialement,

Accéder à une Base de données MySQL (CRUD)

I/ Le SGBD, qu’est ce que c’est ?

Un SGBD, ou système de gestion de base de donnée est un programme servant à stocker des données, les modifier et les afficher.

Les SGBD les plus connus sont :

-          MySQL

-          Oracle

-          Microsoft SQL Server

-          SQLite

-          PostgreSQL

Dans le tuto, je vais faire la démonstration avec MySQL, il a l’avantage d’être gratuit, libre, complet et très fiable.

II/ Création de la base de Donné et des tables libres et auteur

Après avoir installé votre environnement de développement (CF Tuto : [PHP] Tuto : Installer votre serveur Apache / PHP avec XAMPP : http://www.geekhelpme.fr/tutoriels/developpement/php-mysql/16-php-installer-xampp.html ), nous allons procéder à la création de la base de donnée.

Dans notre tutoriel, nous allons écrire un petit programme permettant de lister une liste de livre.

Ainsi, connectez vous à votre interface de gestion de base de donnée tel que phpmyadmin.

Créer une base de donnée du nom bibliotheque. Puis importer le fichier import.sql.

Les tables sont créées et importés.

Nous allons pouvoir procéder au script PHP permettant de manipuler les données.

III/ Connexion à la base de donnée MySQL

Créons un fichier bdd.inc.php dans le répertoire inc.

<?php

                /**

                * Fonction permettant de se connecter à Mysql via la librairie mysqli

                *

                * @return Retourne une ressource de connexion au serveur MySQL en cas de succès et, sinon, FALSE  .

                */          

                function connectDb() {                

                               $config['host']='localhost';

                               $config['user']='root';

                               $config['password']='';

                               $config['database']='bibliotheque';

                               $link = mysqli_connect($config['host'], $config['user'], $config['password'], $config['database']);

                               /* Vérification de la connexion */

                               if (mysqli_connect_errno()) {

                                               printf("Echec de la connexion : %s\n", mysqli_connect_error());

                                               exit();

                               }

                               return $link;

                }             

?>

Ce script consiste à établire une connexion à MySQL via la fonction mysqli_connect.

La signature de cette fonction est la suivante :

< ?php

mysqli  mysqli_connect ( string   host , string   username , string   passwd , string   dbname , int   port , string   socket )

?>

En cas de sucés la fonction retourne l’identifiant de la ressource de connexion et en cas d’échec le message Echec de la connexion apparait et stoppe l’exécution du script.

IV/ Afficher les valeurs d’une table

Créons le fichier index.php à la racine du site. Ce fichier aura pour objectif d’afficher une liste des ouvrages.

Le script est le suivant :

<?php

                require_once('lib/bdd.inc.php'); // Inclusion du fichier gérant la connexion au serveur MySQL

                $link = connectDb(); // Connexion au serveur MySQL

                // Création de la requête                           

                $querySelect =                 'select NUMOUV, ouvrages.TITRE, DATEPUB, COLLECTION, LIEUPUB, medium, PRIX, GENRE, editeurs.NUMEDIT, NOM

                                                                              from ouvrages

                                                                              LEFT JOIN oeuvres ON ouvrages.NUMO=oeuvres.NUMO

                                                                              INNER JOIN editeurs ON ouvrages.NUMEDIT=editeurs.NUMEDIT';

                // Ajout d'une condition dans la requete pour afficher tous les ouvrages d'un éditeur si on cliqué sur le lien (Paramètre GET editeur présent dans l'url)

                if (isset($_GET['editeur'])) {

                               $querySelect = $querySelect.' WHERE editeurs.NUMEDIT='.$_GET['editeur'];

                }

                // Execution de la requête

                $idQuerySelect = mysqli_query($link, $querySelect);  

?>

<html>

<head>

                <title>Liste des ouvrages</title>

    <link rel="stylesheet" media="all" href="/css/style.css"/>

</head>

<body>

                <h1>Médiathèque - Liste des ouvrages</h1>

    <p><a href="/creerouvrage.php">Ajouter un ouvrage</a></p>

   <p>Cliquer sur un editeur pour afficher tous les ouvrages de cette éditeur</p>

                <table>

                <tr>

                <th>Numéro</th>

            <th>Titre</th>

            <th>Collection</th>

            <th>Date de Publication</th>

            <th>Lieu de Publication</th>

            <th>Média</th>

            <th>Prix</th>

            <th>Genre</th>

            <th>Editeur</th>

            <th>Action</th>

        </tr>

                               <?php

        while ($result = mysqli_fetch_array($idQuerySelect)) {

        ?>

            <tr>

                <td>

                    &nbsp;<?php echo $result['NUMOUV']?>

                </td>

                <td>

                    &nbsp;<?php echo $result['TITRE']?>

                </td>

                <td>

                    &nbsp;<?php echo $result['COLLECTION']?>

                </td>               

                <td>

                    &nbsp;<?php echo $result['DATEPUB']?>

                </td>

               <td>

                    &nbsp;<?php echo $result['LIEUPUB']?>

                </td>

                <td>

                    &nbsp;<?php echo $result['medium']?>

                </td>

                <td>

                    &nbsp;<?php echo $result['PRIX']?>

                </td>

                <td>

                    &nbsp;<?php echo $result['GENRE']?>

                </td>

                <td>

                    &nbsp;<a href="/?editeur=<?php echo $result['NUMEDIT']?>"><?php echo $result['NOM']?></a>

                </td>               

                <td>

                               &nbsp;<a href="/modifierouvrage.php?id=<?php echo $result['NUMOUV']?>">Modification</a>

                    &nbsp;<a href="/tutoriels/developpement/php-mysql.html?supprid=&lt;?php_echo______$result[\'NUMOUV\']=&gt;=">Suppression</a>

                </td>

            </tr>

        <?php

        }

        ?>

    </table>

</body>

</html>

Explication du code :

Require_once permet d’inclure le fichier de connxion au serveur MySQL que nous avons créer précédemment.

$querySelect =                 'select NUMOUV, ouvrages.TITRE, DATEPUB, COLLECTION, LIEUPUB, medium, PRIX, GENRE, editeurs.NUMEDIT, NOM

                                                                              from ouvrages

                                                                              LEFT JOIN oeuvres ON ouvrages.NUMO=oeuvres.NUMO

                                                                              INNER JOIN editeurs ON ouvrages.NUMEDIT=editeurs.NUMEDIT';

Ces lignes permettent d’affecter  à la variable $ querySelect la requête SQL permettant de sélectionner les ouvrages qui correspondent à 0 ou 1 ouvre et nom et numéro d’éditeur.

if (isset($_GET['editeur'])) {

$querySelect = $querySelect.' WHERE editeurs.NUMEDIT='.$_GET['editeur'];

}

Ces lignes permettent de rajouter une condition permettant d’afficher tous les ouvrages appartenant à  l’éditeur sélectionné par l’utilisateur.

$idQuerySelect = mysqli_query($link, $querySelect);   Cette ligne execute la requite cité ci-dessus.

        while ($result = mysqli_fetch_array($idQuerySelect)) { //Affiche les données}

Le while permet de parcourir chaque occurrence (ligne) répondant à la requête pour ainsi l’afficher par la suite. mysqli_fetch_array permet de retourner chaque ligne sous forme de tableau indicé par le numéro de colonne mais également par le nom du champ de table MySQL.

Ainsi il est de bonne pratique d’utiliser les noms des champs des tables afin de faciliter la lecture du code lors d’une éventuelle reprise.

V/ Suppression d’une ligne dans MySQL

Ajoutons au fichier index.php, les lignes suivantes avant l’affectation $querySelect :

// Test si un identifiant d'ouvrage a été passé en paramètre GET dans l'URL

                if (isset($_GET['supprid'])) {

                               $queryDelete = 'delete from ouvrages where NUMOUV='.$_GET['supprid'];

                               if (mysqli_query($link, $queryDelete)) {

                                               echo '<h3>Suppression réussi !</h3>';

                               }

                               else {

                                               echo '<h3>Erreur la requete n\'a pas été enregistré dasn la bdd : '.$queryDelete.'</h3>';

                               }

                }

Ces lignes permettent de tester si le paramètre supprid est passé en paramètre GET dans l’url. Si le prédicat est valide alors nous affections une commande SQL ) la variable $queryDelete ordonnant la suppresion de l’ouvrage.

La fonction mysqli_query($link, $query) execute la requête est retourne un booleen indiquant le résultat de l’opération.

V/ Ajout d’une ligne dans MySQL

<?php

                require_once('lib/bdd.inc.php'); // Inclusion du fichier gérant la connexion au serveur MySQL

                $link = connectDb(); // Connexion au serveur MySQL

                $querySelectEditeur = 'select *

                                                                                                              from editeurs

                                                                                                              order by nom';

                $idQuerySelectSelectEditeur = mysqli_query($link, $querySelectEditeur);        

                $querySelectOeuvres =               'select *

                                                                                                              from oeuvres';

                $idQuerySelectSelectOeuvres = mysqli_query($link, $querySelectOeuvres);  

                if (isset($_POST['TITRE']) && isset($_POST['COLLECTION']) && isset($_POST['DATEPUB']) && isset($_POST['LIEUPUB']) && isset($_POST['medium']) && isset($_POST['PRIX']) && isset($_POST['NUMEDIT']) && isset($_POST['NUMO'])) {

                               $queryInsert = "INSERT INTO bibliotheque.ouvrages (NUMOUV ,TITRE, COLLECTION, DATEPUB, LIEUPUB, medium, PRIX, NUMEDIT, NUMO)

                               VALUES ( NULL, '".$_POST['TITRE']."' , '".$_POST['COLLECTION']."' , '".$_POST['DATEPUB']."' , '".$_POST['LIEUPUB']."' , '".$_POST['medium']."' , '".$_POST['PRIX']."' , ".$_POST['NUMEDIT']." , ".$_POST['NUMO'].")";

                               if (mysqli_query($link, $queryInsert)) {

                                               echo '<h3>Insertion réussi !</h3>';

                               }

                               else {

                                               echo '<h3>Erreur la requete n\'a pas été enregistré dasn la bdd : '.$queryInsert.'</h3>';

                               }

                }

?>

<html>

<head>

                <title>Ajouter un ouvrage</title>

    <link rel="stylesheet" media="all" href="/css/style.css"/>

</head>

<body>

                <h1>Médiathèque - Ajout d'un ouvrage</h1>

    <p><a href="/index.php">Retour à la liste</a></p>

    <form action="creerouvrage.php" method="post">

        <table>       

            <tr>

                <td align="right" width="15f%">

                    Titre :

                </td>

                <td  width="90%">

                    <input type="text" value="" name="TITRE" id="TITRE" />

                </td>

            </tr>

            <tr>

                <td align="right" width="10%">

                    Collection :

                </td>

                <td  width="90%">

                    <input type="text" value="" name="COLLECTION" id="COLLECTION" />

                </td>

            </tr>

            <tr>

                <td align="right" width="10%">

                    Date de publication :

                </td>

                <td  width="90%">

                    <input type="text" value="" name="DATEPUB" id="DATEPUB" />

                </td>

            </tr>

            <tr>

                <td align="right" width="10%">

                    Lieu de publication :

               </td>

               <td  width="90%">

                    <input type="text" value="" name="LIEUPUB" id="LIEUPUB" />

                </td>

            </tr>

            <tr>

                <td align="right" width="10%">

                    Média :

                </td>

                <td  width="90%">

                    <select name="medium" id="medium" >

                        <option value="CD">CD</option>

                       <option value="Livre">Livre</option>

                       <option value="Vidéo">Vidéo</option>

                    </select>

                </td>

            </tr>

            <tr>

                <td align="right" width="10%">

                    Prix :

                </td>

                <td  width="90%">

                    <input type="text" value="" name="PRIX" id="PRIX" />

                </td>

            </tr>

            <tr>

                <td align="right" width="10%">

                    Oeuvre :

                </td>

                <td  width="90%">

                    <select name="NUMO" id="NUMO">

                        <option value="0">Pas d'oeuvre associé</option>

                        <?php

                        while ($result = mysqli_fetch_array($idQuerySelectSelectOeuvres)) {

                            echo '<option value="'.$result['NUMO'].'">'.$result['TITRE'].'</option>';

                        }

                        ?>

                    </select>

                </td>

            </tr>

            <tr>

                <td align="right" width="10%">

                    Editeur :

                </td>

                <td  width="90%">

                    <select name="NUMEDIT" id="NUMEDIT">

                         <?php

                        while ($result = mysqli_fetch_array($idQuerySelectSelectEditeur)) {

                            echo '<option value="'.$result['NUMEDIT'].'">'.$result['NOM'].'</option>';

                        }

                        ?>

                    </select>

                </td>

            </tr>

            <tr>

                <td colspan="2" align="center">

                    <input type="submit" name="Valider" id="Valider" value="Valider"/>&nbsp;

                    <input type="reset" name="Annuler" id="Annuler" value="Annuler" />

                </td>

            </tr>

        </table>

    </form>

</body>

</html>

V/ Modifier une ligne dans MySQL

<?php

                require_once('lib/bdd.inc.php'); // Inclusion du fichier gérant la connexion au serveur MySQL

                $link = connectDb(); // Connexion au serveur MySQL

                $querySelectEditeur = 'select *

                                                                                                              from editeurs

                                                                                                              order by nom';

                $idQuerySelectSelectEditeur = mysqli_query($link, $querySelectEditeur);        

                $querySelectOeuvres =               'select *

                                                                                                              from oeuvres';

                $idQuerySelectSelectOeuvres = mysqli_query($link, $querySelectOeuvres);  

                if (isset($_POST['TITRE']) && isset($_POST['COLLECTION']) && isset($_POST['DATEPUB']) && isset($_POST['LIEUPUB']) && isset($_POST['medium']) && isset($_POST['PRIX']) && isset($_POST['NUMEDIT']) && isset($_POST['NUMO']) && isset($_POST['NUMOUV'])) {

                               $queryInsert = "UPDATE bibliotheque.ouvrages SET TITRE='".$_POST['TITRE']."' , COLLECTION='".$_POST['COLLECTION']."' , DATEPUB='".$_POST['DATEPUB']."' , LIEUPUB='".$_POST['LIEUPUB']."' , medium='".$_POST['medium']."' , PRIX='".$_POST['PRIX']."' , NUMEDIT=".$_POST['NUMEDIT']." , NUMO=".$_POST['NUMO']." WHERE NUMOUV=".$_POST['NUMOUV'];

                               if (mysqli_query($link, $queryInsert)) {

                                               echo '<h3>Modification réussi !</h3>';

                               }

                               else {

                                               echo '<h3>Erreur la requete n\'a pas été enregistré dasn la bdd : '.$queryInsert.'</h3>';

                               }

                }

                if (isset($_GET['id'])) {

                               $querySelect =                 'select NUMOUV, ouvrages.TITRE, DATEPUB, COLLECTION, LIEUPUB, medium, PRIX, GENRE, editeurs.NUMEDIT, NOM, oeuvres.NUMO

                                                                              from ouvrages

                                                                              LEFT JOIN oeuvres ON ouvrages.NUMO=oeuvres.NUMO

                                                                              INNER JOIN editeurs ON ouvrages.NUMEDIT=editeurs.NUMEDIT

                                                                              WHERE NUMOUV='.$_GET['id'];

                               // Execution de la requête

                               $idQuerySelect = mysqli_query($link, $querySelect);  

                               $row = mysqli_fetch_array($idQuerySelect);

                }

?>

<html>

<head>

                <title>Modifier un ouvrages</title>

    <link rel="stylesheet" media="all" href="/css/style.css"/>

</head>

<body>

                <h1>Médiathèque - Modifier un ouvrage</h1>

    <p><a href="/index.php">Retour à la liste</a></p>

    <form action="modifierouvrage.php?id=<?php echo $_GET['id']?>" method="post">

                <input type="hidden" value="<?php echo $_GET['id']?>" name="NUMOUV" id="NUMOUV" />

        <table>       

            <tr>

                <td align="right" width="15f%">

                    Titre :

                </td>

                <td  width="90%">

                    <input type="text" value="<?php echo $row['TITRE']?>" name="TITRE" id="TITRE" />

                </td>

           </tr>

            <tr>

                <td align="right" width="10%">

                    Collection :

                </td>

                <td  width="90%">

                    <input type="text" value="<?php echo $row['COLLECTION']?>" name="COLLECTION" id="COLLECTION" />

                </td>

            </tr>

            <tr>

                <td align="right" width="10%">

                    Date de publication :

                </td>

                <td  width="90%">

                    <input type="text" value="<?php echo $row['DATEPUB']?>" name="DATEPUB" id="DATEPUB" />

                </td>

            </tr>

            <tr>

                <td align="right" width="10%">

                    Lieu de publication :

               </td>

               <td  width="90%">

                    <input type="text" value="<?php echo $row['LIEUPUB']?>" name="LIEUPUB" id="LIEUPUB" />

                </td>

            </tr>

            <tr>

                <td align="right" width="10%">

                    Média :

                </td>

                <td  width="90%">

                    <select name="medium" id="medium" >

                        <option value="CD" <?php echo ($row['medium']=='CD')?'selected':'';?>>CD</option>

                        <option value="Livre" <?php echo ($row['medium']=='Livre')?'selected':'';?>>Livre</option>

                        <option value="Vidéo" <?php echo ($row['medium']=='Vidéo')?'selected':'';?>>Vidéo</option>

                    </select>

                </td>

            </tr>

            <tr>

                <td align="right" width="10%">

                    Prix :

                </td>

                <td  width="90%">

                    <input type="text" value="<?php echo $row['PRIX']?>" name="PRIX" id="PRIX" />

                </td>

            </tr>

            <tr>

                <td align="right" width="10%">

                    Oeuvre :

                </td>

                <td  width="90%">

                    <select name="NUMO" id="NUMO">

                        <option value="0">Pas d'oeuvre associé</option>

                        <?php

                        while ($result = mysqli_fetch_array($idQuerySelectSelectOeuvres)) {

                        ?>

                               <option value="<?php echo $result['NUMO']?>" <?php echo ($result['NUMO']==$row['NUMO'])?'selected':'';?>><?php echo $result['TITRE'];?></option>

                        <?php

                        }

                        ?>

                    </select>

                </td>

            </tr>

            <tr>

                <td align="right" width="10%">

                    Editeur :

                </td>

                <td  width="90%">

                    <select name="NUMEDIT" id="NUMEDIT">

                         <?php

                        while ($result = mysqli_fetch_array($idQuerySelectSelectEditeur)) {

                                                                                              ?>

                            <option value="<?php echo $result['NUMEDIT']?>" <?php echo ($result['NUMEDIT']==$row['NUMEDIT'])?'selected':'';?>><?php echo $result['NOM'];?></option>

                        <?php

                        }

                        ?>

                    </select>

                </td>

            </tr>

            <tr>

                <td colspan="2" align="center">

                    <input type="submit" name="Valider" id="Valider" value="Valider"/>&nbsp;

                    <input type="reset" name="Annuler" id="Annuler" value="Annuler" />

                </td>

            </tr>

        </table>

    </form>

</body>

</html>

Mise à jour le Lundi, 12 Juillet 2010 11:18
 
web design - referencement