FAQ PHPConsultez toutes les FAQ

Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 29 juillet 2013 

 
OuvrirSommaireBases de données

Tout dépend de ce que l'on veut en faire. Pour une petite base, le couple PHP - MySQL a largement fait ses preuves. Si le nombre de requêtes est important, que les performances deviennent donc déterminantes, MySQL ne tardera pas à montrer ses limites. Pour ce genre de besoins, des bases comme interbase ou Oracle. Dans ce cas, la notion de coût devra être prise en compte car contrairement à MySQL, interbase et Oracle ne sont pas gratuits.

Il existe plusieurs autres bases pour lesquelles PHP possède un jeu de fonctions. Chaque base ayant son lot de qualités et de défauts, les bases de données conseillées ci-dessous sont à considérer comme des exemples. Chaque situation demande une analyse plus approfondie pour déterminer quelle est la base la plus appropriée.

Ci-dessous, la liste des bases interfacées avec PHP (avec un lien vers la documentation officielle) :

Créé le 17 février 2003  par Eric Berger

Lien : Comment uniformiser l'utilisation de différents SGBD ?

(l'exemple utilise une base MySQL mais le principe est identique pour d'autres bases)

a)Préparation de la requête : Une requête peut être écrite d'une traite si elle est simple et connue à l'avance, par exemple:

 
Sélectionnez
$requete = "SELECT nom, prenom from utilisateurs";

Si elle est plus complexe, ou peut changer en fonction du contexte (utilisateur, n° de page, etc..), la requête peut également être construite, par exemple :

 
Sélectionnez
$requete = "SELECT nom, prenom";
if($affichermailMail){
    $requete .=", mail" ;
}
$requete .= " FROM utilisateurs LIMIT $start, $elemParPage";

b)Connexion à la base de données : Avant de pouvoir demander quoi que ce soit à une base de données, il faut établir une connexion avec elle :

 
Sélectionnez
$serveur = "localhost"; //nom du serveur qui héberge la base
$utilisateur = "jean";
$passe = "s03k45em";
$base = "site"  //nom de la base de données
$connexion = MySQL_connect($serveur, $utilisateur, $passe);
//Etablit la connexion, un identificateur de connexion est enregistré dans la variable $connexion
mysql_select_db($base);
//Définit la base par défaut. Ce n'est pas indispensable mais ça évite de spécifier la base à chaque requête.

c)Envoi de la requête et récupération du résultat :

 
Sélectionnez
$resultat = mysql_query($requete) or die("erreur dans la requete : " . $requete);

L'instruction or die() n'est pas indispensable mais aidera à trouver l'origine d'une erreur dans une requête.

d)Traitement du résultat : Maintenant que nous avons le résultat de la requête, il faut encore le faire parler. Pour parcourir l'ensemble des enregistrements du résultat, on peut procéder de la manière suivante :

 
Sélectionnez
while($ctItem = mysql_fetch_array($resultat)){
    //Ici la variable $ctItem contient un tableau de l'élément courant
}

Pour plus de clarté, on peut affecter des variables aux éléments du tableau :

 
Sélectionnez
while($ctItem = mysql_fetch_array($resultat)){
    $nom = $ctItem[0];
    $prenom = $ctItem[1];
    echo = "Le prénom est $prenom et le nom $nom<br/>";
}
Créé le 15 mars 2003  par Eric Berger

Si les valeurs sont issues d'une requête MySQL, alors on peut utiliser la fonction RAND() au sein de la clause ORDER BY :

 
Sélectionnez
SELECT ...  FROM ... WHERE ... ORDER BY RAND()

En PHP, la fonction shuffle() mélange les éléments du tableau. Attention à ne pas oublier d'initialiser le générateur de nombre aléatoire avec srand() :

 
Sélectionnez
srand(time()); 
shuffle($tab);
Créé le 15 mars 2003  par Cyberzoide

Peu de bases de données permettent de mettre dans un champ de table un tableau. Pour mettre un tableau en base, il faut le sérialiser.

 
Sélectionnez
$tableau = array("moto","voiture","vélo");
$tableau_serialize = serialize($tableau);
print_r($tableau_serialize);
// Affiche a:3:{i:0;s:4:"moto";i:1;s:7:"voiture";i:2;s:5:"vélo";}

À noter que cette fonction n'est utilisable qu'à partir de PHP 4.0.7 et qu'il n'est pas possible de linéariser les objets internes de PHP. Pour récupérer ce tableau sérialisé et retrouver le tableau de départ, il faut utilisez la fonction unserialize().

 
Sélectionnez
$tableau = unserialize($tableau_serialize);
print_r($tableau);//Array ( [0] => moto [1] => voiture [2] => vélo )

Il est à noter qu'on utilise le même système pour passer un tableau dans des cookies.

Mis à jour le 8 mars 2011  par Gérard Ernaelsten
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2003 Developpez.com Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.