Easy-Micro


ESPACEMEMBRE PHP-MySQL
Afficher une table

Afficher la table clients dans un tableau

Style Orienté Objet

Le style orienté objet permet de faire appel à des méthodes d'objet.

$base = "mabase";
$user = "root";
$pass = "";
$serveur = "127.0.0.1";

/* Note : pour un affichage rapide, privilégiez l'adresse IP
au nom localhost qui doit passer par un dns */

$mysqli = new mysqli($serveur, $user, $pass, $base); // on instancie la classe mysqli

if ($mysqli->connect_errno) { // appel de méthode avec l'opérateur ->
printf("Échec de la connexion : %s\n", $mysqli->connect_error); // voir printf
exit();
}

// Par sécurité, tout le code ci-dessus sera idéalement remplacé par un require_once('dossier/fichier.php');

$resultat = $mysqli->query("SELECT * FROM Clients"); // appel de méthode avec l'opérateur ->
//Si beaucoup de données, on utilise MYSQLI_USE_RESULT
//$resultat = $mysqli->query("SELECT * FROM Clients", MYSQLI_USE_RESULT)

if (!$resultat) {
printf("Problème de requête - Erreur : %s\n", $mysqli->error); }
else {
?>
<ul>

<?php
// Affichage table dans tableau associatif ou numérique ou les deux (BOTH)
while($ligne = $resultat->fetch_array(MYSQLI_BOTH)) {
$format = '<li>%1$s - %2$s</li>'; // simple côte obligatoire
printf($format, utf8_encode($ligne["prenom_client"]), $ligne["nom_client"]);
}
?>
</ul>
<?php
}
$resultat->close(); // libère les résultats
$mysqli->close(); // ferme la connexion
?>

Note : mysqli_fetch_array retourne une ligne de résultat sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux (BOTH)

Note: si vous avez des problèmes de caractère, utilisez la fonction PHP utf8_encode() afin d'encoder vos accents avant l'affichage. Exemple : utf8_encode($ligne['prenom_client']))

Style procédural

Le style procédural consiste à séparer le traitement des données des données elles-mêmes.

Pour afficher les enregistrements d'une table MySQL, on utilise des fonctions PHP prédéfinis :

◊ Soit en utilisant l'extension PHP 5 "improved" (recommandée) :
  1. Connexion au serveur et à la base: mysqli_connect
  2. Requête SQL : mysqli_query
  3. Affichage des résultats : mysqli_fetch_array
◊ Soit en utilisant l'extension PHP "historique" :
  1. Connexion au serveur: mysql_connect
  2. Connexion à la base : mysql_select_db
  3. Requête SQL : mysql_query
  4. Affichage des résultats : mysql_fetch_array

Note : il existe, bien sûr, d'autres extensions.

Afficher la table "clients" avec l'extension Improved

Exemple avec un affichage dans une liste à puce.

$base = "mabase";
$user = "root";
$pass = "";
$serveur = "127.0.0.1";

$mysqli = mysqli_connect($serveur, $user, $pass, $base) or die("Connexion impossible: ".mysqli_errno($mysqli));

$requete = "SELECT * FROM clients";
$resultat = mysqli_query($mysqli,$requete);
if (!$resultat) { echo "Problème de requête"; }
else {
?>

<ul>
<?php
// Affichage du contenu de la table
while($ligne = mysqli_fetch_array($resultat)) {
echo "<li>".$ligne["nom_client"]."</li>";
echo "<li>".$ligne["prenom_client"]."</li>";
// avec la fonction fetch_array
// on peut aussi appeler un enregistrement par son numéro d'index
echo "<li>".$ligne[3]."</li>"; echo "<br/><br/>";
}
?>
</ul>
<?php
}
mysqli_close($mysqli); // facultatif
?>

Note: si vous avez des problèmes de caractère, utilisez la fonction PHP utf8_encode() afin d'encoder vos accents avant l'affichage. Exemple : utf8_encode($ligne['prenom_client']))

Afficher la table "clients" avec l'extension historique

Exemple avec un affichage dans un tableau.

Pour réaliser ce code, vous pouvez utiliser, soit un éditeur de texte comme le bloc-note, NotePad2 ou Pspad, soit un éditeur de site web.

<?php
$base = "mabase";
$user = "root";
$pass = "mysql"; // ou vide selon les versions
$serveur = "localhost"; //ou "127.0.0.1" selon les versions

$mysql = mysql_connect($serveur,$user,$pass) or die("Connexion impossible: ".mysql_error());
mysql_select_db($base);
$requete = "SELECT * FROM clients";
$resultat = mysql_query($requete);
if (!$resultat) { echo "<html><body>Problème de requête</body></html>"; }
else {
?>
<html><body>
<table border="1" width="95%" align="center" cellpadding="3">
<tr style="background-color:#ffffcc;">
<!-- Affichage des en-têtes de colonnes -->
<th>Nom</th><th>Prénom</th><th>Adresse</th>
<th>Code Postal</th><th>Ville</th>
</tr>
<?php
// Affichage du contenu de la table
while($ligne = mysql_fetch_array($resultat)) {
echo "<tr>";
echo "<td>".$ligne["nom"]."</td>";
echo "<td>".$ligne["prenom"]."</td>";
echo "<td>".$ligne["adresse"]."</td>";
echo "<td>".$ligne["code_postal"]."</td>";
echo "<td>".$ligne["ville"]."</td>";
echo "</tr>";
}
?>
</table></body></html>
<?php
} // fin du else
// Fermeture de la connexion MySQL (facultatif)
mysql_close($mysql);
?>

INFOS:
• La fonction PHP "mysql_connect()" permet de se connecter au serveur MySQL. Pour les autres bases, on pourra utiliser "sysbase_connect()" pour une base Sysbase, "mssql_connect()" pour MS SQL Server ou encore "ora_logon()" pour Oracle ou enfin "odbc_connect()" pour Access.

• La fonction PHP "mysql_select_db" permet de se connecter à la base.
• La fonction PHP "mysql_query" exécute une requête SQL.
• La fonction PHP "mysql_fetch_array" retourne une ligne de résultat, soit à partir du numéro de l'indice, soit à partir du nom de l'enregistrement. La fontion mysql_fetch_row retourne, elle aussi, une ligne de résultat mais uniquement à partir du numéro de l'indice.

Note: La fonction mysql_data_seek($resultat,0) permet une remise à zéro du pointeur afin d'éviter la perte de la première ligne de résultat lors d'une double utilisation de mysql_fetch_array.

Pour aller plus loin...

Pour optimiser - et sécuriser - l'affichage des noms de colonnes,
on peut utiliser des alias de nom dans la requête, exemple :

$requete = "SELECT civilite as Civilité, nom as Nom, prenom as Prénom, date_de_naissance as 'Date de naissance' FROM clients";

Dans ce cas, l'affichage des champs devra, lui aussi, utiliser les alias, exemple :
echo "<td>".$ligne['Date de naissance']."</td>";

ATTENTION: suivant la version de EasyPHP, le mot de passe du serveur MySQL est vide ou 'mysql'


Suivez les aventures des skippers aquitains sur EasyVoile.com
Flux RSS Easy-Micro - Abonnez-vous Easy-Micro [ François Bisch ]
Dimanche 25 août 2019 - Semaine 34 - Saint Louis (Demain: Sainte Natacha)
Aujourd'hui, c'est l'anniversaire de Sean Connery (1930-89 ans), acteur britannique (James Bond). Autre 25 août: 1944 - Libération de Paris par la 2e division blindée (2e DB) de Leclerc.
Haut de page Easy-Micro