Problème avec mysql_select_db()

Jacques VDS
Invité n'ayant pas de compte PHPfrance

27 nov. 2011, 04:42

Bonjour,

Voici le code que j'emploie et qui me donne des cheveux blancs.
<?php
switch($_SERVER['SERVER_NAME'])
{
case ($_SERVER['SERVER_NAME'] = "www.xxxx.org");
$donnee = mysql_connect("myconnection","myusername","mypassword");
break;
case ($_SERVER['SERVER_NAME'] = "localhost");
$donnee = mysql_connect("myconnection","myusername","mypassword");
break;
}
$db = 'dep';
mysql_select_db($db,$donnee);
$sql = "SELECT * from $db where 0=0 and actif =1";
echo '<br>'.$sql;
$result = mysql_query($sql);
if (!$result)
{
# informer l'usager
echo '<br>'Connection impossible ' . mysql_error();
}
?>

Le message que je reçois est invariablement:
SELECT * from dep where 0=0 and actif =1
Connection impossible No database selected

Puissiez-vous m'éclairer. Merci.

ViPHP
xTG
ViPHP | 7331 Messages

27 nov. 2011, 09:19

Tu n'as pas de case default dans ton switch.
Et regardes la valeur de $donnee ainsi que le retour de mysql_select_db().
Elles renvoient false en cas d'échec.

Jacques VDS
Invité n'ayant pas de compte PHPfrance

27 nov. 2011, 18:36

Merci pour ton conseil.

le retour que j'ai sur $donnee (mysql_connect())=: Resource id #2
Je n'ai aucun retour sur mysql_select_db($db,$donnee)
et mysql_query() me donne toujours un message d'erreur ' No database selected'.

Je suis quelque peu perdu.....
Merci.

ViPHP
xTG
ViPHP | 7331 Messages

27 nov. 2011, 19:23

Je n'ai aucun retour sur mysql_select_db($db,$donnee)
Utilises var_dump() plutôt que echo, car si c'est FALSE tu n'auras aucun affichage avec la fonction echo.

Jacques VDS
Invité n'ayant pas de compte PHPfrance

27 nov. 2011, 19:44

Merci,
On apprend tous les jours avec PHP...
voici le résultat de var_dump(): bool(false)

Que faire? Merci.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 nov. 2011, 19:53

Ton switch n'est pas bon du tout.. la syntaxe devrait être la suivante :
switch (laVariableATester) {
  case valeur_possible_1 :
     ...
  case valeur_possible_2 :
     ...
}
Et non pas :
case laVariableATester = valeur_possible_1;
Faut aussi un " : " pour indiquer le contenu du case
switch($_SERVER['SERVER_NAME']) {
  case "www.xxxx.org" :
     $donnee = mysql_connect("myconnection","myusername","mypassword");
     break;
  case "localhost" :
  default : // si on veut utiliser ce code par défaut
     $donnee = mysql_connect("myconnection","myusername","mypassword"); 
     break;
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Jacques VDS
Invité n'ayant pas de compte PHPfrance

27 nov. 2011, 20:24

Voici exactement le code que je teste et toujours avec le même résulta:

<?php
//echo $_SERVER['SERVER_NAME'];// Verifies OK
switch($_SERVER['SERVER_NAME'])
{
case "www.banquealimentairebat.org":
$donnee= mysql_connect("myserver","mydb","mypasswd");
break;
case "localhost":
$donnee= mysql_connect("localhost", "root", "root");
break;
}
echo $donnee; //OK
$db = 'clients';
$sel = mysql_select_db($db,$donnee); //no return
var_dump($sel); // NO RETURN
$sql = "SELECT * from $db where 0=0 and actif =1";
echo '<br>'.$sql; //VERIFIES OK
$result = mysql_query($sql);
if (!$result)
{
# inform the user
echo '<br>There was an error. Please try again later'. mysql_error(); //NO DATABASE SELECTED??

}
?>

Voici ce que donne l'écran:
Resource id #1bool(false)
SELECT * from clients where 0=0 and actif =1
There was an error. Please try again laterNo database selected

Jacques VDS
Invité n'ayant pas de compte PHPfrance

27 nov. 2011, 20:28

Je précise que j'ai introduit le default dans le switch et que cela donne le même résultat.

Merci de votre aide.

ViPHP
xTG
ViPHP | 7331 Messages

27 nov. 2011, 20:42

La connexion semble correcte, mais pas le nom de la base de données.
Es-tu sûr de son nom ? La bdd n'a-t-elle aucun préfixe ?
Modifié en dernier par xTG le 28 nov. 2011, 07:40, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 nov. 2011, 21:56

Ajoute un mysql_error() après le mysql_select_db() ... s'il y a un problème à ce moment là, il peut être intéressant de savoir ce qui cloche pour le rectifier ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Jacques VDS
Invité n'ayant pas de compte PHPfrance

27 nov. 2011, 23:34

Bien Vu!

J'avais indiqué le nom d'une table et non le nom de la bdd.

Merci beaucoup de votre aide qui m'a bien été utile.