Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Utiliser PHP avec Access

Compatible PHP. Cliquer pour en savoir plus sur les compatibilités.Par Qwix, le 13 août 2005
  • Révision : Qwix le 11/12/2006

Dans ce tutorial nous avions vu comment utiliser PHP avec MYSQL. Il est cependant possible d'utiliser PHP avec un base de données Access. Le travail avec Access est sensiblement le même qu'avec MYSQL, en gros, seuls les noms des fonctions changent. Nous allons voir comment insérer, modifier et supprimer des données dans une base Access.

Création de la base de données

Pour ce tutorial, nous allons utiliser la même base de données que celle utilisée dans ce tutorial

Voici le SQL de cette base, je pars du principe que vous savez créer une base de données et des tables dans Access, si ce n'est pas le cas, vous pouvez regarder dans l'aide du logiciel, c'est bien expliqué ;)

  1. Créez une base de données appelées base_personnes
  2. Créez une table appelée 'personnes' qui contiendra les champs suivants:

id_personne: type numéro auto, clef primaire de la table. nom: type texte prenom: type texte adresse: type texte cp: type texte telephone: type texte

Création du DSN dans Access Pour ceux qui ne connaissent pas ou peu Access pour pouvoir l'utiliser comme SGBD avec un autre langage, il vous faut créer ce qu'on apelle un DSN, voici la marche à suivre.

Menu Démarrer → Paramètres → Panneau de configuration → Outils d'administration → Source de données(ODBC) → Source de données système → Ajouter → Microsoft Access Driver → sélectionnez votre base de données, nommez la et validez, c'est terminé. ;)

Retenez bien le nom que vous avez donné à votre DSN car il vous sera utile plus tard. Dans mon cas je l'ai appelé DSN_personnes.

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.

<html>
  <head>
    <title>insertion de données en PHP dans Access :: 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>

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

Voyons maintenant la page insertion2.php:

<?php
  //insertion.php
 
  //connection au serveur
  $cnx = odbc_connect( "DSN_personnes", "root", "" ) or die ("Impossible de se connecter à la bas de donnée") ;
 
  //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') " ;
 
  //affichage de la requête SQL pour mieux comprendre ;) :
  echo( "<center>".$sql."<br>" ) ;
 
  //exécution de la requête SQL:
  $requete = odbc_do($cnx, $sql) or die( odbc_error() ) ;
 
  //affichage des résultats, pour savoir si l'insertion a marchée:
  if($requete)
    echo("<center>L'insertion a été correctement effectuée</center>") ;
  else
    echo("<center>L'insertion à échouée</center>") ;
?>

Modification des données dans votre base

Pour modifier les données il faut tout d'abord pouvoir les récupérer, voici comment faire: modification1.php

<html>
  <head>
    <title>modification de données en PHP :: partie 1</title>
  </head>
<body>
  <?php
    //connection au serveur:
    $cnx = odbc_connect( "DSN_personnes", "root", "" ) or die ("Impossible de se connecter à la bas de donnée") ;
 
    //requête SQL:
    $sql = "SELECT * FROM personnes ORDER BY nom" ;
 
    //exécution de la requête:
    $requete = odbc_do($cnx, $sql) ;
 
    //affichage des données:
    while( $result = odbc_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>

Et la modification proprement dite: modification3.php

<?php
  //modification3.php
 
  //connection au serveur
  $cnx = odbc_connect( "DSN_personnes", "root", "" ) or die ("Impossible de se connecter à la bas de donnée") ;
 
  //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 = odbc_do($cnx, $sql) or die( odbc_error() ) ;
 
  //affichage des résultats, pour savoir si l'insertion a marchée:
  if($requete)
    echo("La modification à été correctement effectuée") ;
  else
    echo("La modification à échouée") ;
?>

Suppression des données dans votre base Comme pour la modification il faut d'abord récupérer les données avant de savoir lesquelles supprimer ;) La récupération de données est la même que pour la page de modification1.php je passe donc directement à suppression2.php.

suppression2.php

<?php
  //suppression2.php:
  //connection au serveur:
  $cnx = odbc_connect( "DSN_personnes", "root", "" ) or die ("Impossible de se connecter à la bas de donnée") ;
 
  //récupération de la variable d'URL,
  //qui va nous permettre de savoir quel enregistrementsupprimer:
  $id  = $_GET["idPersonne"] ;
 
  //requête SQL:
  $sql = "DELETE FROM personnes WHERE id_personne = ".$id ;
 
  //exécution de la requête:
  $requete = odbc_do($cnx, $sql) ;
 
  //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") ;
?>

Conclusion

Comme vous avez pu le constater, le travail sur Access n'est pas radicalement différent de celui sur MYSQL, il suffit de changer le nom des fonctions ;)

Vous trouverez ci-joint une archive contenant, les scripts, et la base de données Access, il ne vous reste plus qu'à créer le DSN ;)

Pour améliorer la saisie et la conformité de vos données, vous pouvez utiliser les fonctions suivantes:

  • addslashes
  • stripslashes
  • trim


Tutorial de Qwix