Accueil
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
logo
Sommaire > Bases de données
1.1. Abstraction (28)
                Comment uniformiser l'utilisation de différents SGBD ?
                Quelles sont les solutions d'abstraction de base de données en PHP ?
                Quels sont les inconvénients d'une solution d'abstraction de BDD ?
        1.1.1. ADOdb (6)
                        Qu'est-ce qu'ADOdb ?
                        Quels sont les pilotes de SGBD disponibles avec ADOdb ?
                        Comment installer ADOdb ?
                        Comment savoir quels pilotes sont chargés pour ADOdb sur mon hébergement ?
                        Comment se connecter en utilisant ADOdb ?
                        Comment exécuter une requête avec ADOdb ?
        1.1.2. Creole (5)
                        Qu'est-ce que Creole ?
                        Quels sont les pilotes de SGBD disponibles avec Creole ?
                        Comment installer Creole ?
                        Comment se connecter en utilisant Creole ?
                        Comment exécuter une requête en utilisant Creole ?
        1.1.3. PDO (8)
                        Qu'est-ce que PDO ?
                        Quels sont les pilotes de SGBD disponibles avec PDO ?
                        Comment installer PDO ?
                        Comment savoir quels pilotes sont chargés pour PDO sur mon hébergement ?
                        Comment se connecter en utilisant PDO ?
                        Comment gérer les exceptions avec PDO ?
                        Comment exécuter une requête en utilisant PDO ?
                        Comment récupérer le nombre d'enregistrements retournés par une requête 'SELECT' avec PDO ?
        1.1.4. PEAR::MDB2 (5)
                        Qu'est-ce que PEAR::MDB2 ?
                        Quels sont les pilotes de SGBD disponibles avec PEAR::MDB2 ?
                        Comment installer PEAR::MDB2 ?
                        Comment se connecter en utilisant PEAR::MDB2 ?
                        Comment exécuter une requête en utilisant PEAR::MDB2 ?
        1.1.5. Zend_Db_Adapter (1)
                        Qu'est-ce que Zend_Db_Adapter ?
1.2. Mapping objet relationnel (ORM) et persistance (41)
                Quelles sont les solutions d'ORM en PHP ?
                Quels sont les avantages d'une solution d'ORM sur les fonctions ou classes spécifiques ?
        1.2.1. Doctrine (6)
                        Qu'est-ce que Doctrine ?
                        Comment installer Doctrine ?
                        Comment fonctionne Doctrine ?
                        Comment gérer la persistance avec Doctrine ?
                        Comment ajouter des tuples à une table avec Doctrine ?
                        Comment relier deux tables avec Doctrine (relation 1,N) ?
        1.2.2. eZ Components - PersistentObject (9)
                        Qu'est-ce qu'eZC PersistentObject ?
                        Comment installer eZC PersistentObject ?
                        Comment fonctionne eZC PersistentObject ?
                        Comment définir une persistance avec eZC PersistentObject ?
                        Comment rendre un objet compatible eZC PersistentObject ?
                        Comment lire les enregistrements d'une table avec eZC PersistentObject ?
                        Commment insérer des données avec eZC PersistentObject ?
                        Comment modifier un enregistrement d'une table avec eZC PersistentObject ?
                        Comment supprimer un enregistrement d'une table avec eZC PersistentObject ?
        1.2.3. EZPDO (10)
                        Qu'est-ce qu'EZPDO ?
                        Comment installer EZPDO ?
                        Comment fonctionne EZPDO ?
                        Comment gérer la persistance avec EZPDO ?
                        Commment insérer des données avec EZPDO ?
                        Comment lire les enregistrements d'une table avec EZPDO ?
                        Comment modifier un enregistrement d'une table avec EZPDO ?
                        Comment supprimer un enregistrement d'une table avec EZPDO ?
                        Comment vider une table avec EZPDO ?
                        Comment relier deux tables avec EZPDO (relation 1,N) ?
        1.2.4. Metastorage (1)
                        Qu'est-ce que Metastorage ?
        1.2.5. PhpMyObject (11)
                        Qu'est ce que PMO ?
                        Comment installer PMO ?
                        Comment fonctionne PMO ?
                        Comment gérer la persistance avec PMO ?
                        Comment ajouter un tuple avec PMO ?
                        Comment charger un seul tuple avec PMO ?
                        Comment modifier un tuple avec PMO ?
                        Comment supprimer un tuple avec PMO ?
                        Comment charger plusieurs objets en même temps avec PMO ?
                        Comment modifier l'aliasing avec PMO ?
                        Comment déclarer manuellement un schéma de table avec PMO ?
        1.2.6. Propel (1)
                        Qu'est-ce que Propel ?
        1.2.7. Zend_Db_Table (1)
                        Qu'est-ce que Zend_Db_Table ?
1.3. Interfaces de programmation (API) (33)
        1.3.1. Interbase (2)
                        Comment se connecter à Interbase ?
                        Comment configurer une connexion à Interbase ?
        1.3.2. MySQL (20)
                        Comment se connecter à une base MySQL ?
                        Comment se connecter à deux bases de données en même temps avec le même login ?
                        Comment travailler sur deux bases différentes dans le même script ?
                        Comment ouvrir une connexion persistante vers une base MySQL ?
                        Comment lancer une recherche dans ma base MySQL ?
                        Peut-on exécuter plusieurs requêtes SQL en un seul mysql_query() ?
                        Comment connaître le nombre de lignes retournées par une requête MySQL ?
                        Comment connaître le nombre d'enregistrements affectés par une requête de type : DELETE, INSERT ou UPDATE ?
                        Comment obtenir le nom de mes bases de données ?
                        Comment obtenir les noms de toutes mes tables dans une base de données ?
                        Comment obtenir les informations concernant les colonnes d'une table MySQL ?
                        Comment connaître l'id auto_increment de mon dernier ajout ?
                        Comment se protéger des injections SQL avec MySQL ?
                        Comment utiliser de l'UTF-8 avec PHP / MySQL ?
                        Comment se repositionner sur le premier enregistrement d'une requête Select ?
                        Comment se positionner sur le dernier enregistrement d'une requête Select ?
                        Comment extraire des enregistrements appartenant à un intervalle de dates ?
                        Comment afficher un enregistrement aléatoirement ?
                        Comment afficher les valeurs DATE d'un SELECT ?
                        Requêtes multiples et appel de procédures stockées avec MySQL (pas MySQLi)
        1.3.3. MySQLi (5)
                        Comment installer MySQLi ?
                        Peut-on exécuter plusieurs requêtes SQL en une fois avec MySQLi ?
                        Comment parcourir les résultats de plusieurs requêtes SQL avc MySQLi ?
                        Peut-on faire une connexion persistante avec MySQLi ?
                        Que signifie l'erreur 'Commands out of sync' ?
        1.3.4. ODBC (2)
                        Comment utiliser une base Access sans création d'alias ODBC (DSN) ?
                        Comment se connecter et travailler sur une base Access ?
        1.3.5. Oracle (2)
                        Quel équivalent en SQL-ORACLE du LIMIT de MySQL ?
                        Pourquoi mes requêtes SQL-ORACLE sont-elles automatiquement 'commitées' ?
        1.3.6. PostgreSQL (1)
                        Comment se protéger des injections SQL avec PostgreSQL ?
        1.3.7. SQL Server (1)
                        Comment faire pour demander à SQLServer d'interpréter les caractères spéciaux ?
        Quelle base de données utiliser ?
        Comment sauvegarder une base de données ?
        Comment traiter une requête sélection ?
        Comment mélanger un tableau de valeurs ?



Quelle base de données utiliser ?
auteur : Eric Berger
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) :

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

Comment sauvegarder une base de données ?
auteur : Cyberzoide
Grâce à l'utilitaire phpMyAdmin, on va sauvegarder le schéma (c'est-à-dire la définition des tables) et les données (les lignes des tables) d'une base en particulier. (On ne peut pas sauvegarder plusieurs bases d'un seul coup.) Cette action de sauvegarde est appelée "faire un dump" en argot informatique.

Il faut choisir la base à sauvegarder en la choisissant dans le menu de gauche. Dans la page de droite, il s'affiche la liste des tables, et en bas toute une série d'actions possibles. On s'intéressera à "Afficher le schéma de la base".

On va choisir quelles tables en particulier sauvegarder (dans une balise SELECT). Ne rien sélectionner pour les sauvegarder toutes.

Ensuite on coche "structure seule" pour ne sauvegarder que le schéma de la base, ou "structure et données" pour sauvegarder le schéma ET les données, ou encore "Données seulement" pour sauvegarder les données sans le schéma.

Enfin on peut cocher quelques options :
  • "Ajouter des énoncés drop table" afin de supprimer et recréer les tables lors de l'importation de la sauvegarde.
  • "Protéger les noms des tables et des champs par des `" afin de protéger les noms avec accents des tables et des colonnes.
  • "Transmettre" afin de forcer le téléchargement du fichier texte contenant la sauvegarde, avec possibilité d'utiliser un algorithme de compression.
  • "Insertions étendues" permet de n'avoir qu'une seule requête INSERT pour les données d'une table, sous la forme INSERT INTO table VALUES((,,),(,,)(,,))
  • "Insertions complètes" permet d'inclure la liste des colonnes aux requêtes INSERT, selon la syntaxe : INSERT INTO table(,,,) VALUES(,,,)

Il ne reste alors plus qu'à cliquer sur le bouton "Exécuter".

lien : fr Sauvegarder la structure et les données d'une base MySQL

Comment traiter une requête sélection ?
auteur : Eric Berger
(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:
$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 :
$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 :
$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 :
$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 :
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 :
while($ctItem = mysql_fetch_array($resultat)){
    $nom = $ctItem[0];
    $prenom = $ctItem[1];
    echo = "Le prénom est $prenom et le nom $nom<br/>";
}

Comment mélanger un tableau de valeurs ?
auteur : Cyberzoide
Si les valeurs sont issues d'une requête MySQL, alors on peut utiliser la fonction RAND() au sein de la clause ORDER BY :
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() :
srand(time()); 
shuffle($tab);


Consultez les autres F.A.Q.


Les sources présentés sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2003  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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com