Alors vous voulez créer votre propre page, qui va interroger votre base de donnée ?

Voici l’exemple d’une page WordPress qui va ressortir le contenu d’une table nommée « goods », qui contient des produits.

Etape 1:

Dans cet exemple, Créons dans la base de données utilisée par WordPress une table nommée « goods » comme ceci:

MariaDB [mabase]> create table goods (reference varchar(30), description varchar(500), fabricant varchar(50), prix_vente float (8,2));
Query OK, 0 rows affected (0.15 sec)

MariaDB [mabase]>

Ajoutons quelques articles dans la table…

MariaDB [activpart]> insert into goods (reference, description, fabricant, prix_vente) VALUES ('1111','Guidon','Peugeot',20.50);
Query OK, 1 row affected (0.04 sec)

MariaDB [activpart]> insert into goods (reference, description, fabricant, prix_vente) VALUES ('1234','Garde boue','Motobécane',15.30);
Query OK, 1 row affected (0.04 sec)

MariaDB [activpart]> select * from goods;
+-----------+-------------+-------------+------------+
| reference | description | fabricant   | prix_vente |
+-----------+-------------+-------------+------------+
| 1111      | Guidon      | Peugeot     |      20.50 |
| 1234      | Garde boue  | Motobécane  |      15.30 |
+-----------+-------------+-------------+------------+
2 rows in set (0.00 sec)

MariaDB [activpart]>

 

 

Etape 2:

Créez dans votre dossier wp-content/themes/<votre_theme> , un fichier « produits.php » qui contient:

 

<?php
/*
Template Name: produits
*/
// Version 2016-09-29
get_header(); // On affiche l'en-tête du thème WordPress
?>

<?php
global $wpdb; // On se connecte à la base de données du site
$produits = $wpdb->get_results("
SELECT reference,
description,
prix_vente
FROM goods;
");
// print_r($produits);
?>

<?php
echo "<table>";
echo "<tr>";
echo "<th>Référence</th>";
echo "<th>Description</th>";
echo "<th>Fabricant</th>";
echo "<th>Prix H.T</th>";
echo "</tr>";
foreach($produits as $produit) {
   echo '<tr>';
   echo "<td>".$produit->reference."</td>";
   echo "<td>".$produit->description."</td>";
   echo "<td>".$produit->fabricant."</td>";
   echo "<td style=text-align:right>".$produit->prix_vente."</td>";
   echo '</tr>';
}
echo '</table>';
?>

<?php get_footer(); // On affiche de pied de page du thème
?>

 

Etape 3:

Dans l’interface de WordPress, créez une page vide, nommée par exemple « Les produits », en indiquant simplement le modèle correspondant au « Template Name » indiqué dans le script PHP, à savoir dans cet exemple : « produits ».

N’oubliez pas de sauvegarder la page…

Puis il ne vous reste qu’à tester le permalien:

 

Voir l’exemple ici : http://www.activpart.com/les-produits

Cet Article vous a interessé ? Pensez aux autres, laissez un commentaire…

 

Print Friendly, PDF & Email
  1. Bonjour,

    J’ai tenté d’exploiter votre exemple mais seuls les intitulés de colonnes s’affichent.

    Ne sachant pas si je peux mettre mon code ici, 2 points m’ont laissés perplexe :
    – je me réfère à une table et non une base
    – je n’ai pas su quoi mettre à la place de « goods » (FROM goods;)

    Je profite de cette demande pour vous demander confirmation de vos prix de formation.
    Mon projet :
    – un générateur de requêtes SQL avec sélection sur plusieurs tables et la faculté de saisir dans les requêtes des valeurs Maxi/Mini sur certains champs.

    Précisions :
    – il sagit d’un projet personnel en local
    – je réside à Marignane et étant à la retraite je peux me déplacer… avec plaisirs jusqu’à La Ciotat

    A vous lire
    Cordiales saltations

  2. Bonsoir Jean-Jacques,
    Merci pour ce commentaire.
    En effet pour être complet j’ai ajouté à cette article une étape: celle qui consiste à créer la table « goods » donnée en exemple, et à y ajouter quelques articles.

    Concernant votre projet, je vous adresse un Email privé demain…
    Bonne soirée,
    JF Rullier, ACTIVPART.

  3. Mon infinie reconnaissance. J’ai passé ma journée à chercher ça. Cependant, il n’y a pas plus « moderne » pour faire afficher sa base de données maintenant? Même si j’avoue qu’à l’ancienne ça me plait bien

  4. Bonjour
    Pour ma part, je souhaite afficher non pas la table complète mais les informations liées à une ligne spécifique, différente pour chaque page. J’ai donc SELECT champs FROM table WHERE id=253 par exemple. Je peux indiquer les champs à séléctionner et la table sur le fichier php personnalisé, mais comment faire pour le WHERE ? Il faudrait qu’il apparaisse sur chaque page avec un id différent. Est-ce possible ?
    Merci de votre aide.

    • Bonjour Karine,
      Oui c’est possible sans problème.

      Il faut passer l’ID dans l’URL comme ça. Exemple :
      https://www.activpart.com/les-produits/?id=12

      Et au début du script PHP on récupère cette valeur:
      $id=$_REQUEST[id];

      Et plus bas on définit la requête comme ça:

      $requete="
      SELECT reference,
      description,
      prix_vente
      FROM goods";

      Et on peut alors ajouter :
      if ( $id <> '' ){ $requete.=" WHERE goods.good_id = '$id'"; }

      Et on éxecute la requête ainsi composée:
      $produits = $wpdb->get_results($requete):
      JF

  5. Bonjour,
    Je suis un retraité qui essaye de se former pour créer un site internet. J’ai fait un petit logiciel avec Access qui fonctionne très bien mais juste sur mon PC. J’ai une base de données d’environ mille articles. Je travaille avec WordPress 5.8.2 et comme thème OcéanWP (en gratuit juste pour tester) et transferer ma base dans phpMyAdmin . J’ai trouvé votre article et j’ai réussi a afficher ma base de 957 articles dans une page WordPress et mettre des bordures autour des cellules. Très content je continuais à chercher pour mettre des photos. Mais il y a eu une maj d’OcéanWP qui m’a tout effacé et malheureusement je n’avais pas fait de sauvegarde. Aujourd’hui impossible de remettre votre requête en fonction. Je n’ai que la ligne d’entête avec les intitulés des colonnes qui s’affichent.
    Merci de me dire si c’est à cause de la maj ou d’autres choses.
    Cordialement.
    Philippe

  6. Bonjour Philippe,
    Je vous conseille d’ajouter ces 2 lignes à votre script PHP, pour faire ressortir à l’écran d’éventuelles erreurs sur la requête SQL:
    $wpdb->show_errors();
    $wpdb->print_error();

    C’est à insérer avant ou après après cette ligne dans l’exemple.
    // print_r($produits);

    Cordialement,
    JFR

  7. Rebonjour Philippe,
    Après avoir relu plus attentivement votre question, en effet c’est la mise à jour du thème qui a écrasé votre script PHP spécifique.
    Deux précautions à prendre (la première vitale, la seconde conseillée):

    1. Effectuer des sauvegardes, par exemple avec le plugin https://fr.wordpress.org/plugins/backwpup/ ou bien en copiant sur un autre PC les scripts PHP spécifiques que vous avez créés.
    2. Créer un thème enfant. Ainsi lors des mises à jour du thème, vos scripts PHP spécifiques seront préservés. Un bon tutoriel (parmi d’autres) sur ce sujet : https://wpformation.com/theme-enfant-wordpress/

  8. Rebonjour JFR,
    Merci pour le conseils des 2 lignes. J’ai trouvé l’erreur. Une virgule en trop avant FROM.
    Et pour le deuxième message vous avez tout à fait raison. Les sauvegardes permettent d’éviter beaucoup de soucis et voir des problèmes.
    Un homme averti …etc.
    Encore merci.
    Philippe

Leave a Reply

You have to agree to the comment policy.

Blue Captcha Image
Refresh

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.