REQUÊTES PAR PROGRAMMATION PHP


Nous allons considérer la réalisation des requêtes étudiées précédemment par la programmation PHP au lieu de les exécuter par PhpMyAdmin.

Dans notre fichier de connexion, nous avions nommé notre connexion par la variable $bdd. Nous allons maintenant mobiliser cette variable grâce au système PDO. C'est un mode d'interface entre PHP et la base de donnée, pas toujours pratique, mais qui présente l'avantage de pouvoir supporter différents types de base de donnée, pas uniquement les bases mysql. Ce type de base est très utilisé actuellement, mais peut un jour devenir désuète. Les serveurs distants et le serveur local xampp sont généralement bien paramétrés pour que le système PDO fonctionne avec mysql par défaut.


EXÉCUTION D'UNE REQUÊTE

La formulation générale est la suivante:

$monresultat=$bdd->query($query);

$query étant une requête quelconque, par exemple SELECT * FROM matable. Nous avons nommé $monresultat le résultat de la requête. Il s'agit de programmation orientée objet: nous soumettons l'objet $bdd à la commande query. À partir de ce moment-là et après avoir préalablement ouvert la connexion par l'include de connexion (voir chapitre précédent), les données de la table sont mobilisées, nous pouvons y accéder et les afficher.


AFFICHAGE DU RÉSULTAT DE LA REQUÊTE SELECT COUNT

La donnée la plus simple est le nombre d'enregistrement que l'on peut obtenir et afficher par la séquence suivante avec comme exemple la table nommée relation:

$query="SELECT COUNT(*) FROM relation";

$monresultat=$bdd->query($query);

$monnombre=$monresultat->fetchColumn();

Le nombre d'enregistrements est obtenu en soumettant le résultat de la requête $monresultat à la commande fetchColumn. Elle va retourner le nombre d'enregistrements nommé $monnombre. La commande echo suivante l'affichera:

echo $monnombre;

Traquenard Attention, si vous ajoutez un espace entre COUNT et (*), la commande est invalide.


AFFICHAGE DU RÉSULTAT DE LA REQUÊTE SELECT

Mobilisons les données de la table après avoir posé la requête:

$query="SELECT * FROM matable;

$monresultat=$bdd->query($query);

Nous pouvons afficher le résultat de la 1ère ligne (le premier enregistrement) en soumettant le résultat obtenu par la commande fetch. Elle lit les champs de la première ligne (sans les afficher) et se décale automatiquement à la ligne suivante (sans la lire cependant).

$maligne=$monresultat->fetch();

Les champs peuvent être affichée de la manière suivante, par exemple pour un champ qui se nomme nom:

echo $maligne['nom'];

On peut obtenir de même le champ nommé ville par la commande suivante:

echo $maligne['ville'];

Pour obtenir les champs de l'ensemble des enregistrements de la table (toutes les lignes), il faut utiliser la boucle suivante:

while ($maligne=$monresultat->fetch())
{
echo $maligne['nom']," ",echo $maligne['prenom'],"
";
}

La séquence précédente va exécuter la boucle tant que la condition posée est satisfaite, c'est-à-dire tant qu'il existera un résultat à la commande $monresultat->fetch.

Si le champ nom et prenom comportent successivement comme contenu les noms DUPONT Sonia, DURAND Albert, DULAC Anna, on obtiendra:

DUPONT Sonia
DURAND Albert
DULAC Anna


RÉCAPITULATION

Récapitulons avec le programme suivant placé dans le body d'un fichier html, qui affichera le nombre d'enregistrements, puis tous les champs d'une table nommée matable comportant les champs nom, prenom, ville, ae, annee. Préalablement on aura connecté à l'aide de l'include expliqué dans le chapitre précédent (créant la variable de connexion $bdd):

<?

//connexion à la base
include("include_connexion.php");

//------- obention du nombre d'enregistrements------

$query="SELECT COUNT(*) FROM matable";
$monresultat=$bdd->query($query);
$monnombre=$monresultat->fetchColumn();

echo "<br>le nombre d'enregistrements est: ",
$monnombre,"<br><br>";

//------- fin obention du nombre d'enregistrements------

//--------obtention des champs de la table--------

$query="SELECT * FROM matable;
$monresultat=$bdd->query($query);

while ($maligne=$monresultat->fetch())
{
echo $maligne['nom']," ",echo $maligne['prenom'],
$maligne['ville'],$maligne['ae'],$maligne['annee']"<br>";
}

//--------fin obtention des champs de la table--------

?>

Traquenard Si vous avez exécuté la commande $maligne=$monresultat->fetch() pour obtenir la première ligne et que vous réalisiez ensuite une boucle while pour tout afficher il vous manquera la première ligne dans votre résultat de boucle. La solution est de réexécuter la requête par $bdd->query.

Le strict minimum a été exposé permettant d'exploiter une base de donnée par PHP. Il existe de nombreuses autres commande PDO que vous pourrez découvrir par vous-même.

SOMMAIRE