Flux rss

PHP - Bases de données

Collection CommentCaMarche.net
Php permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de données.

La communication avec les bases de données se fait à l'aide de requêtes SQL, un langage de quatrième génération reconnu par l'ensemble des SGBD.

Dans les exemples ci-dessous, le système de gestion de bases de données utilisé est MySQL, un SGBD gratuit et rapide fonctionnant (entre autres) sous Linux. Etant donné que la majorité des serveurs Web (dont le fameux serveur Apache) fonctionne sous Linux, MySQL est de ce fait le SGBD le plus utilisé avec Php.

La déclaration des variables

La première étape consiste à déclarer les variables qui vont permettre la connexion à la base de données (ce sont les paramètres des fonctions de connexion à la base). Ces variables sont :

  • $user : Le nom d'utilisateur
  • $passwd : Le mot de passe
  • $host : L'hôte (ordinateur sur lequel le SGBD est installé)
  • $bdd : Le nom de la base de données

Rappel: Les variables ne sont pas visibles par vos visiteurs étant donné que le script (portant l'extension .php3) est systématiquement interprété par le serveur Web

Ces variables sont en fait des paramètres de la fonction permettant la connexion à la base de données. Il est donc possible de passer les valeurs de ces variables directement dans chaque fonction permettant la connexion, mais cela devient vite gênant lors d'un changement de mot de passe par exemple. Le comble de l'élégance voudrait que l'on stocke ces valeurs dans un fichier à part, afin de changer les valeurs dans tous les fichiers y faisant référence en une seule fois.

Les fonctions de base

Php fournit un grand choix de fonctions permettant de manipuler les bases de données. Toutefois, parmi celles-ci quatre fonctions sont essentielles :

  • La fonction de connexion au serveur
  • La fonction de choix de la base de données
  • La fonction de requête
  • La fonction de déconnexion
Avec le SGBD MySQL, ces fonctions sont les suivantes :
  • mysql_connect
  • mysql_select_db
  • mysql_query
  • mysql_close

Gestion des erreurs

Certaines de ces fonctions renvoient une valeur permettant de connaître l'état de la connexion, ainsi il est possible d'interrompre le script afin d'éviter les erreurs en cascade. Deux méthodes permettent d'effectuer cette opération :

  • Le stockage du résultat de l'exécution de la fonction dans une variable. Par exemple :
    $connect = mysql_connect($host,$user,$passwd);
  • L'utilisation de la fonction die() en cas d'erreur d'exécution. Si la fonction retourne la valeur 0 (c'est-à-dire s'il y a une erreur) la fonction die() (traduisez meurt) renvoie un message d'erreur. Par exemple :
    mysql_connect($host,$user,$passwd)
    or die("erreur de connexion au serveur $host");

Traitement des résultats

Lorsque l'on effectue une requête de sélection de tuples à l'aide de la fonction mysql_query, il est essentiel de stocker le résultat de la requête (les enregistrements) dans une variable, que l'on nomme généralement $result.

Toutefois, cette variable contient l'ensemble des enregistrements et n'est donc pas exploitable telle quelle. Ainsi on utilise la fonction mysql_fetch_row(), qui découpe les lignes de résultat en colonnes (par exemple Nom,adresse,...) et les affecte à une variable tableau dans l'ordre où elles arrivent.

Ainsi, imaginons une table appelée liens contenant le nom et l'URL de sites internet. Il est possible de récupérer l'ensemble des enregistrements et de les afficher dans un tableau :

<html>

	<head>

	<title>Liens</title>

	</head>

<body>

<table border="1" cellpadding="0" cellspacing="0">

<tr>

<th>Nom du site</th>

<th>URL</th>

</tr>

<?php
// Déclaration des paramètres de connexion
$host = la_machine;

// Généralement la machine est localhost
// c'est-a-dire la machine sur laquelle le script est hébergé

$user = votre_login;

$bdd = Nom_de_la_base_de_donnees;

$passwd  = Mot_de_passe;

// Connexion au serveur
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");

mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");

// Creation et envoi de la requete
$query = "SELECT nom,url FROM sites ORDER BY nom";

$result = mysql_query($query);

// Recuperation des resultats
while($row = mysql_fetch_row($result)){
$Nom = $row[0];

$Url = $row[1];

echo "<tr>\n
<td><a href=\"$Url\">$Nom</a></td>\n
<td>$Url</td>\n
</tr>\n";

}

// Deconnexion de la base de donnees
mysql_close();

?>

</tr>

</table>

</body>

</html>

Dans l'exemple ci-dessus, les requête retournent les champs nom et url. La fonction mysql_fetch_row() analyse donc chaque ligne de résultat de la requête et stocke les colonnes dans le tableau row[]. Ainsi, le champ nom sera stocké dans row[0] et url dans row[1]. D'autre part, on inclue généralement mysql_fetch_row() dans une boucle while de telle façon à ce que l'ensemble des lignes de résultat soient traitées. Lorsqu'il n'y a plus de ligne à traiter, la boucle while se termine et l'interpréteur exécute la suite des instructions.

Détecter un résultat nul

Il peut être utile, avant d'insérer des données dans une table, de détecter la présence d'un enregistrement dans une table, afin d'éviter de stocker des doublons. Cela peut se faire en effectuant une requête SQL avec un ordre SELECT et une clause WHERE permettant de vérifier la présence ou non d'enregistrements correspondant à la requête. La non présence de résultat se traduit par un retour nul de la part de la fonction mysql_fetch_row(). Voici un exemple affichant le résultat d'une requête le cas échéant, et dans le cas contraire une phrase expliquant qu'aucun enregistrement correspondant n'a été trouvé (le code HTML dans lequel le code PHP doit être implanté a volontairement été omis) :

<?php
// Déclaration des paramètres de connexion
$host = la_machine;

// Généralement la machine est localhost
// c'est-a-dire la machine sur laquelle le script est hébergé

$user = votre_login;

$bdd = Nom_de_la_base_de_donnees;

$passwd  = Mot_de_passe;

// Connexion au serveur
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");

mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");

// Creation et envoi de la requete
$query = "SELECT nom,url FROM sites ORDER BY nom";

$result = mysql_query($query);

// Recuperation des resultats
if (!mysql_fetch_row($result)) {
echo "Aucun enregitrement ne correspond\n";

}

else {
	while($row = mysql_fetch_row($result)){
		$Nom = $row[0];

		$Url = $row[1];

		echo "<tr>\n
		<td><a href=\"$Url\">$Nom</a></td>\n
		<td>$Url</td>\n
		</tr>\n";

	}
}

// Deconnexion de la base de donnees
mysql_close();

?>
Ce document intitulé « PHP - Bases de données » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Résultats pour PHP Bases de données

Formation gratuite PHP, Base données, MYSQL (Résolu) Bonjour de ARGOTHEME. http://www.argotheme.com Editeur littéraire. Plonge dans le monde des Webmasters. Espère acquérir cette culture comme toutes D'un certain âge je me mets en autodidacte à apprendre. Recherche méthodes, conseils et tous... www.commentcamarche.net/forum/affich-2968145-formation-gratuite-php-base-donnees-mysql
[PHP/MySQL]Interrogation d'une base de donnée (Résolu) Salut, Je souhaite créer un petit site où je référence tous mes DVD avec un petit résumé. Pour cela, j'ai créé une page web pour enregistrer mes nouveaux DVD dans une base données et jusque là tout va bien. Mais maintenant, j'essaye de créer... www.commentcamarche.net/forum/affich-1569934-php-mysql-interrogation-d-une-base-de-donnee
Supprimer des donées de la base de données (Résolu) Bonjour, j'ai un petit soucis. Je souhaiterais supprimer des données dans ma base donné mais je n'y arrive pas. J'ai essayé différentes méthodes sans succes. Voici mon code. supprimer-user.php Supprimer un... www.commentcamarche.net/forum/affich-4839907-supprimer-des-donees-de-la-base-de-donnees

Résultats pour PHP Bases de données

Connexion à une base Oracle en php1. Périmètre Cet article est un exemple de connexion à une base Oracle par le biais d'un script php. Cet article ne traite pas la configuration de votre serveur Oracle, et de votre client Oracle. Nous partons du principe que vous pouvez accéder à... www.commentcamarche.net/faq/sujet-123-connexion-a-une-base-oracle-en-php
[Organisation] Créer une base de connaissancesLe but d'une base de connaissances est de modéliser et stocker de manière informatique un ensemble de connaissances, idées, concepts ou données et de permettre leur consultation/utilisation. Il existe plusieurs méthodes et logiciels différents pour... www.commentcamarche.net/faq/sujet-4855-organisation-creer-une-base-de-connaissances
Créer une base de données sous IngresPour créer une base de donées Ingres , il faut utiliser la commande createdb La syntaxe la plus simple est : createdb mabase Dans ce cas, la base utilisera les locations par défaut (II_DATABASE, II_WORK, II_CHECKPOINT, II_DUMP et... www.commentcamarche.net/faq/sujet-5417-creer-une-base-de-donnees-sous-ingres

Résultats pour PHP Bases de données

Programmation PHP / PDF (Résolu)Bonjour, J'ai besoin de préparer un pdf dont les informations seront puisées dans des pages PHP + Base MySql : Pouvez-vous me conseiller ou me donner un lien vers adresse expliquant bien la façon de préparer ce document? Merci ! Pap' www.commentcamarche.net/forum/affich-4926495-programmation-php-pdf
Faire disparaitre un lien dynamique php/sql (Résolu)Bonjour à vous, 1/ Je me connecte à ma base, je fais une requete, et j'affiche le résultat : d'abord le nom: (j'ai simplifié, il y a d'autres champs...) ensuite un lien : www.commentcamarche.net/forum/affich-3745299-faire-disparaitre-un-lien-dynamique-php-sql
Php chargement session sans formulaire (Résolu)Bonjour, En PHP j'utilise les sessions par la méthode POST pour récupérer les données d'un formulaire, dans ce cas tout fonctionne très bien. Mon problème est : Comment récupérer une variable provenant d'une base donnée dans une... www.commentcamarche.net/forum/affich-1444753-php-chargement-session-sans-formulaire

Résultats pour PHP Bases de données

Planetoscope : lancement d'une base de données en temps réel sur l'écologie sur le Net(Paris - Relax news) - La Toile accueillera à partir du mercredi 17 septembre le site Internet Planetoscope, une base de données sur le développement durable mise à jour en temps réel. Déchets, déforestation mais aussi naissance et décès, les... www.commentcamarche.net/actualites/planetoscope-lancement-d-une-base-de-donnees-en-temps-reel-sur-l-ecologie-sur-le-net-5847355-actualite.php3

Résultats pour PHP Bases de données

Bases de données - IntroductionQu'est-ce qu'une base de données ? Une base de données (son abréviation est BD, en anglais DB, database) est une entité dans laquelle il est possible de stocker des données de façon structurée et avec le moins de redondance possible. Ces données... www.commentcamarche.net/contents/bdd/bddintro.php3
Bases de données - Utilisation de formulairesUtilisation de formulaires Afin d'exploiter les bases de données, il faut fournir une interface à l'utilisateur lui permettant de visualiser des données en fonction de certains critères. Pour cela il existe un outil : les formulaires. Un formulaire... www.commentcamarche.net/contents/bdd/bddform.php3
PHP - Récupération de donnéesPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des... www.commentcamarche.net/contents/php/phpform.php3