Introduction
Le but de ce tutorial est de vous apprendre les commandes de base du SQL, tout en vous montrant l'interaction de ce langage avec PHP.
Vous serez ainsi en mesure de pouvoir créer votre propre interface d'administration pour votre site wink.gif

Nous allons nous baser sur une base de données nommées "INFOS", et sur une table nommée "personnes".
Vous trouverez ci-dessous le SQL à insérer dans PhpMyAdmin pour créer cette table.
Vous devrez au préalable avoir créé votre base "INFOS" dans phpMyAdmin.
Citation :
CREATE TABLE personnes (
  id_personne int(3) NOT NULL auto_increment,
  nom varchar(20) NOT NULL default '',
  prenom varchar(20) NOT NULL default '',
  adresse varchar(50) NOT NULL default '',
  cp varchar(6) NOT NULL default '',
  telephone varchar(14) NOT NULL default '',
  PRIMARY KEY  (id_personne)



Insérer des données dans votre base

Nous allons créer une page insertion1.php qui va nous permettre de saisir les données à insérer dans la base.
Citation :
<html>
  <head>
    <title>insertion de données en PHP :: partie 1</title>
  </head>
<body>
<form name="insertion" action="insertion2.php" method="POST">
  <table border="0" align="center" cellspacing="2" cellpadding="2">
    <tr align="center">
      <td>nom</td>
      <td><input type="text" name="nom"></td>
    </tr>
    <tr align="center">
      <td>prenom</td>
      <td><input type="text" name="prenom"></td>
    </tr>
    <tr align="center">
      <td>adresse</td>
      <td><input type="text" name="adresse"></td>
    </tr>
    <tr align="center">
      <td>code postal</td>
      <td><input type="text" name="codePostal"></td>
    </tr>
    <tr align="center">
      <td>num&eacute;ro de t&eacute;l&eacute;phone</td>
      <td><input type="text" name="telephone"></td>
    </tr>
    <tr align="center">
      <td colspan="2"><input type="submit" value="insérer"></td>
    </tr>
  </table>
</form>
</body>
</html>


img:remarque Notez bien la méthode utilisée par notre formulaire, ici c'est une méthode POST ce qui permet de ne pas afficher les variables dans URL, comme le ferait la méthode GET. IL faut toujours utiliser la méthode POST cela évite de laisser certains trous de sécurité.
Pour bien voir la différence entre les deux méthodes, changez POST en GET dans ce formulaire, et regardez bien votre URL wink.gif

Voyons maintenant la page insertion2.php:
Code


<?php

 //connection au serveur

 $cnx = mysql_connect( "localhost", "root", "" );



 //sélection de la base de données:

 $db  = mysql_select_db( "INFOS" );



 //récupération des valeurs des champs:

 //nom:

 $nom     = $_POST["nom"];

 //prenom:

 $prenom = $_POST["prenom"];

 //adresse:

 $adresse = $_POST["adresse"];

 //code postal:

 $cp        = $_POST["codePostal"];

 //numéro de téléphone:

 $tel       = $_POST["telephone"];

 

 //création de la requête SQL:

 $sql = "INSERT  INTO personnes (nom, prenom, adresse, cp, telephone)

           VALUES ( '$nom', '$prenom', '$adresse', '$cp', '$tel') ";

 

 //exécution de la requête SQL:

 $requete = mysql_query($sql, $cnx) or die( mysql_error() );

 

 //affichage des résultats, pour savoir si l'insertion a marchée:

 if($requete)

 {

   echo("L'insertion a été correctement effectuée");

 }

 else

 {

   echo("L'insertion à échouée");

 }

?>



Je passe sur la méthode pour récupérer les données provenant d'un formulaire, elle à déjà été expliquée dans ce tutorial:
Récupérer les données d'un formulaire en PHP

Nous avons notre variable $sql qui contient la requête à effectuer.
La requête
Citation :
INSERT  INTO personnes (nom, prenom, adresse, cp, telephone)
            VALUES ( '$nom', '$prenom', '$adresse', '$cp', '$tel')

indique à MYSQL que les données devront être insérées dans la table personnes et que les champs:
- nom
- prenom
- adresse
- cp
- telephone

devront prendre la valeur des variables:
- $nom
- [b]$personne
- [b]$adresse
- [b]$cp
- [b]$tel

[b]Modification des données de votre base


Nous allons créer une page modification1.php qui va nous permettre d'afficher les données de la base, et de choisir lesquelles modifier:
Code


<html>

 <head>

   <title>modification de données en PHP :: partie 1</title>

 </head>

<body>

 <?php

   //connection au serveur:

   $cnx = mysql_connect( "localhost", "root", "" );

 

   //sélection de la base de données:

   $db = mysql_select_db( "INFOS" );

 

   //requête SQL:

   $sql = "SELECT *

      FROM personnes

      ORDER BY nom";

 

   //exécution de la requête:

   $requete = mysql_query( $sql, $cnx );

 

   //affichage des données:

   while( $result = mysql_fetch_object( $requete ) )

   {

      echo("<div align="center">".$result->nom." ".$result->prenom." <a href="modification2.php?idPersonne=".$result->id_personne."">modifier</a><br>n");

   }

 ?>

</body>

</html>



Nous avons notre variable $sql qui contient la requête à effectuer.
La requête
Citation :
SELECT *
FROM personnes
ORDER BY nom

indique à MYSQL que nous voulons récupérer toutes les données:
SELECT *
de la table personne:
FROM personnes
et que l'on veut les ordonner par ordre alphabétique sur le nom:
ORDER BY nom

IL nous suffit ensuite d'afficher les résultats de cette requête, dans notre cas nous allons afficher le nom, le prenom, et un lien 'modifier' qui va envoyer l'identifiant de la personne à la page modification2.php:
Code


echo("<div align="center">".$result->nom." ".$result->prenom." <a href="modification2.php?idPersonne=".$result->id_personne."">modifier</a><br>n");


img:remarque Notez la façon dont le paramètre idPersonne est passé dans l'URL, en effet, pour pouvoir passer autant de paramètres que l'on souhaite(255 caractères maximum icon_exclaim.gif) dans une URL, il suffit de faire comme ceci:
<a href="le_lien_vers_la_page.php?

img:remarque Pour comprendre comment récupérer des données dans une base de données, vous pouvez aller voir ce tutorial:
Récupérer des données dans une base de données, en PHP.

Voyons maintenant la page modification2.php:
Code


<html>

 <head>

   <title>modification de données en PHP :: partie2</title>

 </head>

<body>

 <?php

 //connection au serveur:

 $cnx = mysql_connect( "localhost", "root", "" );

 

 //sélection de la base de données:

 $db = mysql_select_db( "INFOS" );

 

 //récupération de la variable d'URL,

 //qui va nous permettre de savoir quel enregistrement modifier

 $id  = $_GET["idPersonne"];

 

 //requête SQL:

 $sql = "SELECT *

           FROM personnes

    WHERE id_personne = ".$id;

   

 //exécution de la requête:

 $requete = mysql_query( $sql, $cnx );

 

 //affichage des données:

 if( $result = mysql_fetch_object( $requete ) )

 {

 ?>

<form name="insertion" action="modification3.php" method="POST">

 <input type="hidden" name="id" value="<?php echo($id);?>">

 <table border="0" align="center" cellspacing="2" cellpadding="2">

   <tr align="center">

     <td>nom</td>

     <td><input type="text" name="nom" value="<?php echo($result->nom);?>"></td>

   </tr>

   <tr align="center">

     <td>prenom</td>

     <td><input type="text" name="prenom" value="<?php echo($result->prenom);?>"></td>

   </tr>

   <tr align="center">

     <td>adresse</td>

     <td><input type="text" name="adresse" value="<?php echo($result->adresse);?>"></td>

   </tr>

   <tr align="center">

     <td>code postal</td>

     <td><input type="text" name="codePostal" value="<?php echo($result->cp);?>"></td>

   </tr>

   <tr align="center">

     <td>num&eacute;ro de t&eacute;l&eacute;phone</td>

     <td><input type="text" name="telephone" value="<?php echo($result->telephone);?>"></td>

   </tr>

   <tr align="center">

     <td colspan="2"><input type="submit" value="modifier"></td>

   </tr>

 </table>

</form>

 <?php

 }//fin if

 ?>

</body>

</html>



Nous récupérons la valeur du paramètre [b]idPersonne
provenant de l'URL que nous avons créée dans la page 'modificatrion2.php'.
Ainsi la variable$id.
D'une manière générale, pour récupérer des valeurs provenant d'une URL, il faut toujours faire comme ceci:
Code


$laVariable = $_GET["Le_nom_du_parametre_provenant_de_l_URL"];



Nous avons notre variable $sql qui contient la requête à effectuer.
La requête
Citation :
"SELECT *
FROM personnes
WHERE id_personne = ".$id

indique à MYSQL que nous voulons récupérer toutes les données:
SELECT *
de la table personnes:
FROM personnes
dont l'identifiant est la valeur récupérée dans l'URL:
WHERE id_personne = ".$id

Nous avons aussi créé un champ de formulaire caché qui va nous permettre de 'sauvergarder' l'identifiant de la personne:
Code


<input type="hidden" name="id" value="<?php echo($id);?>">



Il nous suffit ensuite d'afficher les valeurs existantes dans les champs de formulaire correspondants wink.gif.

Voyons maintenant la page modification3.php:
Code


<?php

 //connection au serveur

 $cnx = mysql_connect( "localhost", "root", "" );



 //sélection de la base de données:

 $db  = mysql_select_db( "INFOS" );



 //récupération des valeurs des champs:

 //nom:

 $nom     = $_POST["nom"];

 //prenom:

 $prenom = $_POST["prenom"];

 //adresse:

 $adresse = $_POST["adresse"];

 //code postal:

 $cp        = $_POST["codePostal"];

 //numéro de téléphone:

 $tel        = $_POST["telephone"];

 

 //récupération de l'identifiant de la personne:

 $id         = $_POST["id"];

 

 //création de la requête SQL:

 $sql = "UPDATE personnes

           SET nom         = '$nom',

          prenom     = '$prenom',

   adresse    = '$adresse',

   cp           = '$cp',

   telephone = '$tel'

          WHERE id_personne = '$id' ";

 

 //exécution de la requête SQL:

 $requete = mysql_query($sql, $cnx) or die( mysql_error() );



 

 //affichage des résultats, pour savoir si la modification a marchée:

 if($requete)

 {

   echo("La modification à été correctement effectuée");

 }

 else

 {

   echo("La modification à échouée");

 }

?>



Nous avons notre variable $sql qui contient la requête à effectuer.
La requête
Citation :
"UPDATE personnes
SET nom        = '$nom', 
      prenom    = '$prenom',
      adresse    = '$adresse',
      cp          = '$cp',
      telephone = '$tel'
WHERE id_personne = '$id' "

indique à MYSQL que nous voulons modifier les données de la table personnes:
UPDATE personnes
que le champ:
- nom va prendre la valeur de la variable $nom
- prenom va prendre la valeur de la variable $prenom
- adresse va prendre la valeur de la variable $adresse
- cp va prendre la valeur de la variable $cp
- telephone va prendre la valeur de la variable $telephone:

SET nom = '$nom',
prenom = '$prenom',
adresse = '$adresse',
cp = '$cp',
telephone = '$tel'

pour la personne dont l'identifiant sera égal à celui passé en paramètre dans l'URL:
WHERE id_personne = '$id'

suppression des données de votre base

Nous allons créer une page suppression1.php qui va nous permettre d'afficher les données de la base, et de choisir lesquelles supprimer:
Code


<html>

 <head>

   <title>suppression de données en PHP :: partie 1</title>

   <script language="javascript">

     function confirme( identifiant )

     {

       var confirmation = confirm( "Voulez vous vraiment supprimer cet enregistrement ?" );

if( confirmation )

{

  document.location.href = "suppression2.php?idPersonne="+identifiant;

}

     }

   </script>

 </head>

<body>

 <?php

   //connection au serveur:

   $cnx = mysql_connect( "localhost", "root", "" );

 

   //sélection de la base de données:

   $db = mysql_select_db( "INFOS" );

 

   //requête SQL:

   $sql = "SELECT *

      FROM personnes

      ORDER BY nom";

 

   //exécution de la requête:

   $requete = mysql_query( $sql, $cnx );

 

   //affichage des données:

   while( $result = mysql_fetch_object( $requete ) )

   {

      echo("<div align="center">".$result->nom." ".$result->prenom." <a href="#" onClick="confirme('".$result->id_personne."')" >supprimer</a><br>n");

   }

 ?>

</body>

</html>



Comme pour la page modification1.php, nous affichons toutes les données de la base dans l'ordre alphabétique sur le nom.
La différence avec la page modification1.php est que nous créons un lien 'supprimer' sur un script JavaScript qui va demander la confirmation de la
suppression de l'enregistrement, si l'utilisateur clique sur 'OK' le script va diriger la page sur suppression2.php avec en paramètre d'URL l'identifiant de l'enregistrement sélectionné.

Voyons maintenant la page suppression2.php:
Code


<?php

 //connection au serveur:

 $cnx = mysql_connect( "localhost", "root", "" );

 

 //sélection de la base de données:

 $db = mysql_select_db( "INFOS" );

 

 //récupération de la variable d'URL,

 //qui va nous permettre de savoir quel enregistrement supprimer:

 $id  = $_GET["idPersonne"];

 

 //requête SQL:

 $sql = "DELETE

           FROM personnes

    WHERE id_personne = ".$id;

 echo $sql;    

 //exécution de la requête:

 $requete = mysql_query( $sql, $cnx );

 

 //affichage des résultats, pour savoir si la suppression a marchée:

 if($requete)

 {

   echo("La suppression à été correctement effectuée");

 }

 else

 {

   echo("La suppression à échouée");

 }

?>



Même méthode que pour la page modification2.php, on récupère l'identifiant passé en paramètre de l'URL.
Nous avons ensuite notre variable $sql qui contient la requête à effectuer.
La requête
Citation :
"DELETE 
FROM personnes
WHERE id_personne = ".$id

indique à MYSQL que nous voulons supprimer toutes les données de la table personnes:
DELETE FROM personnes
pour la personne dont l'identifiant sera égal à celui passé en paramètre dans l'URL:
WHERE id_personne = '$id'

Vous pouvez télécharger les pages d'exemple ici:
- insertion1.php
- insertion2.php
- modification1.php
- modification2.php
- modification3.php
- suppression1.php
- suppression2.php

Ou directement toute l'archive ici:
- Insertion modification suppression de donnees en PHP

img:remarque Pour améliorer la saisie et la conformité de vos données, vous pouvez utiliser les fonctions suivantes:
- addslashes
- stripslashes
- trim

img:coupe img:remarque A voir également :[list]
Récupérer des données d'un formulaire en PHP
Accélerer vos sites en PHP[list]img:coupe
Pour toute question concernant ce tutorial, merci d'utiliser les salles du forum.
Merci

smile.gif