[RESOLU] Connexion à une deuxième base de données sous Wordpress

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Connexion à une deuxième base de données sous Wordpress

Re: Connexion à une deuxième base de données sous Wordpress

par Sheush » 11 oct. 2023, 11:03

Bon, il se trouve que le site n'était pas du tout hébergé où je le pensais. Le serveur qui stockait mes bases de données était l'hébergeur de l'ancien site qui partageait encore le même nom de domaine. Je clos alors le sujet, merci de ton aide @rthur.

Re: Connexion à une deuxième base de données sous Wordpress

par @rthur » 09 oct. 2023, 09:59

"crée une page PHP avec uniquement le code suivant" => donc un nouveau script PHP, sans passer par Wordpress ;-)

Re: Connexion à une deuxième base de données sous Wordpress

par Sheush » 09 oct. 2023, 09:47

Vu le message d'erreur, c'est un problème :
- soit de mauvaise info de serveur MySQL (que tu as renseigné dans $servername),
- soit de mauvaise configuration système/réseau du serveur (sur lequel tu n'as pas la main, si tu es sur un serveur mutualisé ou virtuel)
Donc dans les 2 cas, il n'y a que ton hébergeur qui devrait pouvoir t'aider.


Si tu veux en être sûr, crée une page PHP avec uniquement le code suivant :
<?php
$servername = "nomBdd.mysql.db";
$username = "nomBdd";
$password = "mdpBdd";
$dbname = "nomBdd";

$dsn = 'mysql:dbname='.$dbname.';host='.$servername;
$dbh = new PDO($dsn, $username, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));

$dbh->query("SHOW TABLES");
Si tu as le même message d'erreur, c'est à ton hébergeur de faire le nécessaire car ce code est directement celui de la documentation PHP : https://www.php.net/manual/fr/pdo.error-handling.php
Avec ce code, Wordpress m'affiche un message : "Erreur critique sur le site" et n'affiche rien dans la console.

Je pense que le problème est du à la façon dont Wordpress peut ou non se connecter à une bdd.
C'est ici que j'ai lu que je pouvais utiliser wpdb pour me connecter à la base, mais comme je le disais mon code ne semble pas établir de connexion :
https://wordpress.stackexchange.com/que ... /1618#1618

Re: Connexion à une deuxième base de données sous Wordpress

par @rthur » 04 oct. 2023, 12:37

Vu le message d'erreur, c'est un problème :
- soit de mauvaise info de serveur MySQL (que tu as renseigné dans $servername),
- soit de mauvaise configuration système/réseau du serveur (sur lequel tu n'as pas la main, si tu es sur un serveur mutualisé ou virtuel)
Donc dans les 2 cas, il n'y a que ton hébergeur qui devrait pouvoir t'aider.


Si tu veux en être sûr, crée une page PHP avec uniquement le code suivant :
<?php
$servername = "nomBdd.mysql.db";
$username = "nomBdd";
$password = "mdpBdd";
$dbname = "nomBdd";

$dsn = 'mysql:dbname='.$dbname.';host='.$servername;
$dbh = new PDO($dsn, $username, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));

$dbh->query("SHOW TABLES");
Si tu as le même message d'erreur, c'est à ton hébergeur de faire le nécessaire car ce code est directement celui de la documentation PHP : https://www.php.net/manual/fr/pdo.error-handling.php

Re: Connexion à une deuxième base de données sous Wordpress

par Sheush » 04 oct. 2023, 12:02

C'est à ton hébergeur de te donner les informations de connexion à ta 2ème base de données et notamment ce que tu dois renseigner comme nom de serveur.

Si ça dépasse leurs compétences, soit ils n'ont pas compris ta question, soit tu n'es pas tombé sur le bon interlocuteur, soit il faut que tu changes rapidement d'hébergeur :-D
Il peut bien y avoir une erreur autre part que dans les identifiants non ?

Re: Connexion à une deuxième base de données sous Wordpress

par @rthur » 04 oct. 2023, 09:47

C'est à ton hébergeur de te donner les informations de connexion à ta 2ème base de données et notamment ce que tu dois renseigner comme nom de serveur.

Si ça dépasse leurs compétences, soit ils n'ont pas compris ta question, soit tu n'es pas tombé sur le bon interlocuteur, soit il faut que tu changes rapidement d'hébergeur :-D

Re: Connexion à une deuxième base de données sous Wordpress

par Sheush » 04 oct. 2023, 09:24

Bonjours,

As-tu contacté ton hébergeur ?
Car peut être a-t-il mis en place des restrictions...
Bonjour,

Mon hébergeur m'assure que la base de données est fonctionnel et accessible. En leur décrivant un peu le problème ils m'ont aussi dit que ça dépassait complètement leur champ de compétences.

Re: Connexion à une deuxième base de données sous Wordpress

par @rthur » 03 oct. 2023, 10:05

Bonjours,

As-tu contacté ton hébergeur ?
Car peut être a-t-il mis en place des restrictions...

Connexion à une deuxième base de données sous Wordpress

par Sheush » 02 oct. 2023, 11:49

Bonjour,

Dans le fichier config.php de mon site, les infos de connexion à la base de données principale sont renseignées et le site fonctionne. Cependant quand j'essaie d'établir une connexion à une autre bdd située sur le même hébergement, je rencontre beaucoup de problèmes.

Sur une page donnée, un short code est censé exécuter une fonction de connexion à la 2eme bdd.

Quand j'utilise PDO ou Mysqli pour le faire, j'ai cette erreur :

Code : Tout sélectionner

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

Quand j'utilise la classe wpdb de wordpress, c'est pareil, beaucoup de problèmes. J'ai essayé plein de choses différentes mais je vais vous partager le code qui plante le moins. Avec celui là, la page s'affiche mais la connexion à la base de données ne semble pas établie car toute opération faite sur elle retourne null.

Code php de mon fichier chargé par le short code :

Code : Tout sélectionner

// Inclure le fichier de fonctions et établir la connexion à la base de données include 'ErpClass_functions.php'; $connexion = connectToDatabase(); // Récupérer les données des types et sous-types ERP depuis la base de données $typeERPData = getAllFromTypeERP($connexion); $sousTypeERPData = getAllFromSousTypeERP($connexion);

Fonctions php utilisées :

Code : Tout sélectionner

//Retourne une connexion vers la base de données function connectToDatabase() { // Bdd en ligne $servername = "nomBdd.mysql.db"; $username = "nomBdd"; $password = "mdpBdd"; $dbname = "nomBdd"; $conn = new wpdb($username,$password,$dbname,$servername); $conn->set_prefix(''); //Avec ou sans cette ligne on a le même résultat return $conn; } //Prend une connexion en argument //Retourne un tableau contenant tous les tuples de la table type_ERP function getAllFromTypeERP($connexion) { $result = $connexion->get_results("SELECT * FROM type_erp"); return $result; } //Prend une connexion en argument //Retourne un tableau contenant tous les tuples de la table sous_type_ERP function getAllFromSousTypeERP($connexion) { $result = $connexion->get_results("SELECT * FROM sous_type_erp"); return $result; }

Pour terminer je précise :
- J'ai déjà vérifié une dizaine de fois si les informations de connexion étaient bonnes.
- La base de données à laquelle je veux me connecter n'est accessible que depuis le serveur où elle est hébergée. C'est le cas de mon site, il se connecte sans problème à la bdd principale dans config.php. Cependant il est peut être possible que l'emplacement de mon code ( dans le dossier du thème enfant utilisé par le site ) l'empêche de se connecter à la deuxième. Dans ce dernier cas je ne sais pas non plus quoi faire.