| 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) :
|
| 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".
|
| auteur : Cyberzoide | Pour installer MySQLi il faut rajouter les options suivantes à la directive ./configure lors de l'installation de PHP à partir des sources : --with-mysqli=/usr/local/mysql/bin/ --without-mysql |
/usr/local/mysql/bin/ est à remplacer par le chemin du binaire mysql_config de votre client MySQL.
|
| 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";
$utilisateur = "jean";
$passe = "s03k45em";
$base = "site"
$connexion = MySQL_connect($serveur, $utilisateur, $passe);
mysql_select_db($base);
|
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 :
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/>";
} |
|
| auteur : Cyberzoide |
Il suffit de déclarer correctement son SELECT en HTML :
<select name="variable[]" multiple="multiple">
<option value="x">xxx</option>
...
</select> |
Puis de récupérer le tableau $variable dans le script d'arrivée :
foreach($variable as $elem) {
echo $elem.'<br/>' ;
} |
|
| 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() |
Sinon, 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() : |
| auteur : Cyberzoide |
Il est tout à fait possible d'ouvrir plusieurs connexions vers des bases de données distinctes au cours du même script. Pour cela, il faut ouvrir deux connexions distinctes vers le serveur, dont on garde précieusement les deux identifiants retournés par mysql_connect() :
Et enfin exécuter les requêtes sur l'une ou l'autre des bases de données avec mysql_query(), en lui passant en paramètre l'identifiant de connexion adéquate :
ou
Cette méthode est recommendée dans les cas suivants :
- utilisateurs (login et mot de passe) distincts avec des droits différents
- connexion à deux serveurs différents
- très nombreuses requêtes vers l'une et l'autres des bases
Dans le cas où le même utilisateur travaille sur deux bases différentes du même serveur avec les mêmes permissions (et le même login et mot de passe), la seule fonction mysql_select_db() permet d'éviter les connexions multiples au serveur.
Exemple :
Si vous lancez de très nombreuses requêtes vers vos deux bases au cours de l'exécution de votre script, il peut s'avérer judicieux de préférer les connexions multiples et de travailler avec les identifiants de connexion plutôt que d'avoir à changer la base de données courante à tout bout de champ (avec les oublis et erreurs que cela peut impliquer).
|
| auteur : giminik | En premier lieu, il faut d'abord copier le fichier gds32.dll fourni avec les sources php dans le dossier system32 de windows puis intégrer l'extension de php qui gère interbase. Dans le fichier de configuration php.ini modifiez la ligne : (suppression du point virgule) ;extension=php_interbase.dll |
en extension=php_interbase.dll |
Sauvegardez puis redémarrez le serveur web pour que les modifications soient prises en compte.
Pour se connecter à la base, il faut utiliser la fonction ibase_connect($hote, $utilisateur, $motdepasse) où $hote doit contenir l'adresse ip de la machine où se trouve le serveur interbase et le chemin complet du fichier de la base de cette même machine.
exemple :
le serveur interbase se trouve sur le poste ayant pour adresse ip : 172.16.2.63
le fichier contenant la base de données sur ce serveur est c:\mabase.gdb
l'utilisateur est SYSDBA et le mot de passe est masterkey <?php
$hote = '172.16.2.63:c:\\mabase.gdb' ;
$user = 'SYSDBA' ;
$pass = 'masterkey' ;
$connexion = ibase_connect($hote, $user, $pass) ;
$requete = 'SELECT * FROM matable' ;
$result = ibase_query($connexion, $requete) ;
while ($ligne = ibase_fetch_object($result)) {
echo $ligne->macolonne."<br />";
}
ibase_close($connexion);
?> |
|
| auteur : djseb | 1) Définir le driver ODBC associé à la base
Dans le cas d'un windows XP/2000 :
- Panneau de configuration/outils d'administration/sources de données (ODBC)
- Si Easyphp tourne en système, alors cliquer sur "source de données Système", sinon sur "source de données utilisateurs"
- Cliquer sur ajouter
- Choisir "Microsoft Acces Driver"
- Donner un nom à la source de données.
- Sélectionner l'adresse de la base de données
- Si c'est une base de données distante, vous devez monter un lecteur reseau où se trouve la base de données
2) Se connecter a la base de données
$con=odbc_connect("nom du driver odbc","utilisateur","mot de passe"); |
3) Travailler sur la base de données |
| auteur : Kerod | Pour insérer un tableau de style array dans une table, il faut utiliser la fonction serialize() qui retourne une chaîne contenant une représentation linéaire du tableau passé en paramètre, pour stockage.
Exemple : $montableau = array("contenu1","contenu2","contenu3");
echo $tableau_lineaire = serialize($montableau);
|
À Noter que cette fonction 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 linéarisé, et retrouver le tableau de départ, il faut utilisez la fonction unserialize()
Exemple : |
| auteur : Forum PHP |
Dans le menu Démarrer, Groupe de programmes Microsoft SQL Server, lancer "Utilitaire Réseau client", et décocher "Conversion automatique ANSI vers OEM" dans l'onglet Options DB-Library. Ainsi les données sont renvoyées en ANSI.
|
Consultez les autres F.A.Q's
Les sources présentés sur cette pages sont libre 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. Tout 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érets.
Cette page est déposée à la SACD.
|