connection mysql dans plusieurs fonctions

connection mysql dans plusieurs fonctions - PHP - Programmation

Marsh Posté le 20-01-2005 à 15:50:41    

Salut,
en fait, j'ai un pb, au début du script je me connecte à ma base mais visiblement la connection ne porte pas dans mes fonctions.
ex :

Code :
  1. $db = mysql_connect('localhost', 'root', '');
  2. mysql_select_db('toto',$db);
  3. $sql=mysql_query("SELECT nom FROM toto" );
  4. function coco()
  5. {
  6. while ($data = mysql_fetch_array($sql))
  7. {
  8. echo $data[nom];
  9. }
  10. }


Y'a t-il quelque chose à faire, déclarer ?
merci


Message édité par $man le 20-01-2005 à 15:51:08
Reply

Marsh Posté le 20-01-2005 à 15:50:41   

Reply

Marsh Posté le 20-01-2005 à 16:20:43    

Ce que tu fais ne sert à rien. Si on déclare une fonction c'est pour justement être utilisable n'importe où, n'importe quand et surtout pouvoir être utilisée plusieurs fois.
 
Alors si je peux te donner un conseil, tu fais ta fonction comme ceci:

Code :
  1. function coco($SQL)
  2. {
  3.   while ($data = mysql_fetch_array($SQL))
  4.   {
  5.     echo $data['nom'];
  6.   }
  7. }


 
Et lors de l'utilisation, tu fais ca:

Code :
  1. $db = mysql_connect('localhost', 'root', '');
  2. mysql_select_db('toto',$db);
  3. $sql=mysql_query("SELECT nom FROM toto" );
  4. // Ta fonction
  5. coco($sql);


 
Ce devrait mieu fonctionner ;)
 
PS: Ce n'est pas $data[nom] mais $data['nom']


Message édité par AlphaZone le 20-01-2005 à 16:22:06
Reply

Marsh Posté le 20-01-2005 à 16:23:48    

merci, je vais tester ca,
pour $data[nom], désolé j'ai rédigé trop rapidement :)
 
EDIT : en fait je pense m'etre mal fait comprendre
car ma boucle while change, selon la fonction :/

Code :
  1. $db = mysql_connect('localhost', 'root', '');
  2. mysql_select_db('toto',$db);
  3. $sql=mysql_query("SELECT nom, prenom FROM toto" );
  4. function coco()
  5. {
  6. while ($data = mysql_fetch_array($sql))
  7. {
  8. echo $data['nom'];
  9. }
  10. function caca()
  11. {
  12. while ($data = mysql_fetch_array($sql))
  13. {
  14. echo $data['prenom'];
  15. }
  16. }



Message édité par $man le 20-01-2005 à 16:26:52
Reply

Marsh Posté le 20-01-2005 à 20:32:18    

Là, tu te complique la vie.
 
Autant faire un truc rapide comme cela:

Code :
  1. $db = mysql_connect('localhost', 'root', ''); 
  2. mysql_select_db('toto',$db); 
  3. $sql=mysql_query("SELECT nom, prenom FROM toto" ); 
  4. while ($data = mysql_fetch_array($sql)) 
  5.   echo $data['nom']."<br>".$data['prenom']."<br><br>";
  6. }


 
Ou alors comme ca si tu veux d'abord afficher que les noms puis que les prénoms:

Code :
  1. $db = mysql_connect('localhost', 'root', ''); 
  2. mysql_select_db('toto',$db); 
  3. $sql=mysql_query("SELECT nom, prenom FROM toto" ); 
  4. while ($data = mysql_fetch_array($sql)) 
  5.   echo $data['nom'];
  6. }
  7. while ($data = mysql_fetch_array($sql)) 
  8.   echo $data['prenom'];
  9. }


Message édité par AlphaZone le 20-01-2005 à 20:33:54
Reply

Marsh Posté le 20-01-2005 à 22:26:29    

Salut,
merci de ton aide,
mais j'ai besoin que ce soit dans des fontions qui sont appelées à différente moments :)
Les fonctions ne contiennent bien evidemment pas que la boucle while qui parcourt la table.
:)

Reply

Marsh Posté le 21-01-2005 à 07:16:48    

Ouai alors tu peux créer une fonction unique qui fasse ceci:

Code :
  1. function AffReq($SQL, $NAME) 
  2.   while ($data = mysql_fetch_array($SQL)) 
  3.   { 
  4.     echo $data[$NAME]; 
  5.   }
  6. }


 
Et pour l'utilisation:

Code :
  1. AffReq($sql, "nom" );
  2. AffReq($sql, "prenom" );


 
T'en pense quoi ?

Reply

Marsh Posté le 21-01-2005 à 09:31:41    

je vois que ça aussi, 2 paramètre d'entrée pour la fontion, l'un contenant la requete, et l'autre ce que tu veux en afficher...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 21-01-2005 à 09:59:25    

Ok,
merci bien de votre aide :)

Reply

Marsh Posté le 21-01-2005 à 18:16:25    

de rien mec

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed