1 Dernière modification par Michel L'HUILLIER (30-01-2012 06:20:54)

Sujet : Double connexion MySQL local / distant en PHP

Très pratique pour ne pas avoir à gérer plusieurs pages de connexions, voici ce que j'utilise tout le temps, basculant fréquemment entre mes sites en local et en ligne :

<?php
// on teste le serveur pour savoir si on est en local (localhost)
  if (getenv("HTTP_HOST") == "localhost || getenv("HTTP_HOST") == "127.0.0.1") {
  // on spécifie les valeurs pour le site local
    $hostname_test = "localhost"; // le nom du serveur MySql
    $database_test = "mabase";    // le nom de la base de données
    $username_test = "root";      // le login
    $password_test = "";          // le password
  // la chaine de connexion
    $test = mysql_connect($hostname_test, $username_test, $password_test) or die(mysql_error());
}
  else {
  // on spécifie les valeurs pour le site distant
    $hostname_test = "sql.free";   // le nom du serveur MySql
    $database_test = "mabase";     // le nom de la base de données
    $username_test = "admin";      // le login
    $password_test = "xxx";        // le password
  // la chaine de connexion
    $test = mysql_connect($hostname_test, $username_test, $password_test) or die(mysql_error());
}
?>

Pour la connexion, il suffit de faire :

<?php
// connexion à la BDD
  require('lib/log.php');
  mysql_select_db($database_test, $test);
?>

Ensuite, une requête peut avoir cette forme :

<?php
  $query_requete = 'SELECT prenom, nom, session FROM membres ORDER BY nom, prenom';
  $requete = mysql_query($query_requete, $test) or die(mysql_error());
  $totalRows_requete = mysql_num_rows($requete);
?>

Et enfin son résultat, comme cela (ici, une liste) :

<?php
  echo "<ul>";
  while($row_requete = mysql_fetch_assoc($requete)) {
    echo '<li id="'.$row_requete['session'].'">'.$row_requete['prenom'].' '.$row_requete['nom'].'</li>';
  }
  echo "</ul>";
?>

Re : Double connexion MySQL local / distant en PHP

J'utilise un switch pour ma part mais ca revient au meme ...
L'idée est logique.
Merci pour ton code smile

Re : Double connexion MySQL local / distant en PHP

Re : Double connexion MySQL local / distant en PHP

MaitreKabba répond mieux que moi , je ferme ma gueule ...

PS: je suis d'acoord avec MaitreKabba j'ai même relever l'erreur et je ne voulais pas rentrer dans les detail de PDO mais c'est vrai que c'est beaucoup mieux !

Re : Double connexion MySQL local / distant en PHP

wink on a du ecrire en même temps

Content d'avoir du soutien pour PDO, je milite !

Re : Double connexion MySQL local / distant en PHP

Merci pour vos remarques.

J'ai modifié le ET en OU.(faute de frappe).

Par contre, pour la PDO, attention : FREE et d'autres hébergeurs ne l'autorisent pas.
Ce qui pour nos amis peu aguerris à MySQL pourrait leur amener d'autres question sur le non-fonctionnement de leur code.
Bien évidemment, je suis d'accord avec vous, la PDO offre des possibilités plus intéressantes.
Cela pourra faire l'objet d'un autre post.

C'est en voyant un post sur un problème de connexion que m'est venue l'idée de mettre en ligne un exemple complet de connexion / requête / affichage.
Certes, ce n'est peut-être pas une solution "optimisée", mais ça marche dans la majorité des cas...

Re : Double connexion MySQL local / distant en PHP

Re : Double connexion MySQL local / distant en PHP

J'ai rectifié le "elseif" en "else" dans le code ci-dessus.

Pour Free, j'espère qu'un jour la PDO sera autorisée. A vérifier régulièrement, mes infos datent d'il y a environ un an.

Donc, info pour tous : un article sur la PDO sera réalisé ultérieurement.

C'est bien pour ceux qui ne savent pas trop comment se connecter et requêter simplement en MySQL via PHP que j'ai posté ce sujet.
La double connexion est simplement une aide pour ceux-ci afin de ne pas se perdre dans des mauvaises pistes en cas de problème :
en l'utilisant, ils n'auront plus à s'en soucier ni à y toucher, que le problème soit en local ou sur le serveur.
La raison en cas de non-réponse dans l'un des deux cas sera :
  - soit dans le script principal,
  - soit dans la requête elle-même,
  - soit parce que les tables sont différentes sur les 2 serveurs.

Merci pour vos remarques constructives.

Re : Double connexion MySQL local / distant en PHP

Merci pour ce topic, je pense que ça en aidera plus d'un.
Nous venons de réorganiser les forums, je déplace le sujet dans la section appropriée smile