8791 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai un problème ! (mouah ah ah, bah oui, sinon je serais pas là) ^^

Bon, je vais essayer d'être clair ...

J'ai ma page index.php, avec dans un endroit une boucle php/mysql qui fait un select dans une base puis affiche les résultats :
<?php
define('DB_SERVER', 'localhost');
define('DB_SERVER_USERNAME', 'root');
define('DB_SERVER_PASSWORD', '*******');
define('DB_DATABASE', 'guestbook');
$connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD) or die('Impossible de se connecter : ' . mysql_error());
mysql_select_db(DB_DATABASE, $connect);
$sql = 'SELECT pseudo,message,date FROM main;';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
mysql_close();
while($data = mysql_fetch_assoc($req))
   {
?>

<div style="font-size:12px; font-weight:bold; margin-left:5px;"><?php echo $data['pseudo']; ?></div>
<div style="font-size:10px; margin-left:5px; font-style:italic;"><?php echo $data['date']; ?></div>
<div style="font-size:12px; margin-left:5px;"><?php echo $data['message']; ?></div>
<hr/>

<?php
   }
?>


Donc cette partie de code fonctionne niquel ...

Sauf que j'ai un include d'une page qui réutilise exactement ce code mais en faisant un select sur une autre base mysql ... et le problème qui se pose est qu'il execute bien la boucle de mon include (car située avant la première boucle dont j'ai mis le code ci-dessus) et quand il execute le code décrit ci-dessus, j'ai un joli message du type :
"ERREUR SQL !
SELECT pseudo,message,date FROM main;
Table 'commentaires.main' doesn't exist"

Ce que je comprends pas, c'est pourquoi il va chercher dans la base "commentaires" (qui est la base utilisée dans la boucle de la page 'includée') alors que cette partie de code doit taper dans une base qui s'appelle "guestbook" (comme marqué dans le code ci-dessus) !?!? Smiley rolleyes Smiley biggol

Si quelqu'un a une réponse ... parceque là je sèche ... Smiley ohwell

Par avance, merci

Cordialement,
Modifié par tcyrill2 (11 Oct 2007 - 02:55)
Salut tcyrill2 Smiley cligne ,

pas sûr d'avoir tout compris (avec le code complet ça aurait été plus facile Smiley lol ) mais à ma connaissance le plus simple pour faire des requêtes dans plusieurs bases est d'utiliser le préfixe de la base à la place du mysql_select_db, ce qui donnerait :
...
define('DB_DATABASE', 'guestbook');
$sql = 'SELECT pseudo,message,date FROM '.DB_DATABASE.'.main';
...

A+
Modifié par Heyoan (11 Oct 2007 - 05:40)
Salut Heyoan,

Tout d'abord, merci pour ta réactivité Smiley smile
J'ai bien essayer ta solution, mais le problème est exactement le même Smiley confus

Au risque de faire un post surchargé, voici le code complet de ma page php. J'ai essayé de tout mettre dans la même page pour voir si ce n'était pas l'include qui mettait la zone, mais en vain ...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
   <title>MUSE on  http://muscle-museum.net</title>
 
   <meta name="verify-v1" content="ySvvWgFlXjbqAgh5ouFZcQLbIeFfCfR1DjKQM4/CJgI=" />
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   <meta http-equiv="Content-Language" content="fr" />
   <meta name="Description" content="Muscle-Museum.net : le nouveau fansite sur MUSE" />
   <meta name="Keywords" content="MUSE, muse, tablatures muse, paroles muse, wallpapers muse, forum muse" />	
   <link rel="stylesheet" type="text/css" href="./MyCss.css" title="" />
   <script language="javascript" type="text/javascript" src="./lightbox.js"></script>
</head>
 
<body>
<div id="conteneur">	
<div style="clear: both; height: 10px"></div>
<div id="haut"></div>
   <ul id="menu">
      <li><a href="...">News</a></li>
      <li><a href="...">Histoire</a></li>
      ....
   </ul>
   <div id="centre">
      <div style="clear: both; height: 35px"></div>
         <p class="title">DownLoad...</p>
         <br/><br/>
         <div class="onglets">
            <ul id="tabnav">
               <li><a href="index.php?page=dl">Clips</a></li>
               <li><a href="index.php?page=doc">Reportages</a></li>
               <li class="active"><a href="index.php?page=fan">Section Fan [smile]</a></li>
            </ul>
         </div>
         <div style="clear: both; height: 50px"></div>
         <div style=".....">
            <div style=".....">
            </div>
            <div style="clear: both; height: 20px"></div>
            <div style=".......">
               <?php
                  define('DB_SERVER', 'localhost');
                  define('DB_SERVER_USERNAME', 'root');
                  define('DB_SERVER_PASSWORD', '*******');
                  define('DB_DATABASE', 'commentaires');
                  $connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,               DB_SERVER_PASSWORD) or die('Impossible de se connecter : ' . mysql_error());
                  mysql_select_db(DB_DATABASE, $connect);
                  $sql = 'SELECT nom,commentaire,datetime FROM '.DB_DATABASE.'.video_001';
                  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
                  while($data = mysql_fetch_assoc($req))
                  {
               ?>						
               <div style="..."><?php echo $data['nom']; ?></div>
               <div style="..."><?php echo $data['datetime']; ?></div>
               <div style="..."><?php echo $data['commentaire']; ?></div>
               <hr/>
               <?php
                  }
                  mysql_close();
               ?>	
            </div>
         </div>
      </div>
      <div class="droite">
         <div style="">
            <div style="....">
               <marquee behavior=scroll onMouseover="this.stop()" OnMouseout="this.start()" direction="up" scrollamount="1" scrolldelay="50" style="....">
                  <?php
                     define('DB_SERVER', 'localhost');
                     define('DB_SERVER_USERNAME', 'root');
                     define('DB_SERVER_PASSWORD', '*******');
                     define('DB_DATABASE', 'guestbook');
                     $connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD) or die('Impossible de se connecter : ' . mysql_error());
                     mysql_select_db(DB_DATABASE, $connect);
                     $sql = 'SELECT pseudo,message,date FROM '.DB_DATABASE.'.main;';
                     $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
                     while($data = mysql_fetch_assoc($req))
                     {
                     ?>
                     <div style="..."><?php echo $data['pseudo']; ?></div>
                     <div style="..."><?php echo $data['date']; ?></div>
                     <div style="..."><?php echo $data['message']; ?></div>
                     <hr/>
                     <?php
                        }
                        mysql_close();
                     ?>
                  </marquee>
               </div>
            </div>
         </div>		
   </div>
</body>
</html>


PS : Je n'ai mis que ce qui importe à mon problème pour alléger au maximum le code à lire et je l'ai indenté du mieux que j'ai pu Smiley cligne

Comme ça, de but en blanc, j'ai envie de penser que le problème vient des instructions de fermeture de connexion aux bases qui ne seraient pas aux bons endroits Smiley ohwell

Merci d'avance...
Modifié par tcyrill2 (11 Oct 2007 - 13:38)
Revoit un peu les bases de la prog Smiley decu Smiley decu Une constante est quelque chose de constant... Donc on ne peut la redéfinir, sinon c'est plus une constante, mais une variable globale. Donc le deuxième define('DB_DATABASE' sera totalement inopérent.
L'utilisation des constantes n'a pas beaucoup d'interêt là en fait... surtout pour la base de données. Garde les constantes pour le serveur, user et pass, et utilise une simple string pour la DB :
define('DB_SERVER', 'localhost');
define('DB_SERVER_USERNAME', 'root');
define('DB_SERVER_PASSWORD', '*******');

$connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD) or die('Impossible de se connecter : ' . mysql_error());

mysql_select_db('commentaires', $connect);

Modifié par FlorentG (11 Oct 2007 - 21:55)