erreur dans ma fonction

erreur dans ma fonction - PHP - Programmation

Marsh Posté le 13-05-2009 à 09:36:39    

Bonjour,
 
j'ai un problème, j'ai un code que je dois réutilisé plusieurs fois mais j'ai toujours une chose a changé sinon mes requettes et tous sont les mêmes la seul différence c'est que je doit cherché dans différente base de donnée donc celà interviendra seulement dans ce bout là

Code :
  1. <?php
  2. $host='localhost';
  3. $user='*****';
  4. $pass='*****';
  5. $dbase='*****';
  6. $connexion = mysql_connect($host,$user,$pass)or die ("Erreur de connexion" );
  7. mysql_select_db($dbase,$connexion)or die ("Erreur de connexion base" );
  8. ?>


 
 
pour me connecté a la base non ???
 
et avec sa une fois que j'ai mes différente base connecté je veu affiché comme celà  
 

Code :
  1. <table border="1">
  2.  <tr style="text-align: center; background-color:#FFAD5B; font-weight:bold;">
  3.   <th> Pays </th>
  4.             <th> Prestataire </th>
  5.   <th> V G  </th>
  6.   <th> Commandes </th>
  7.             <th> Tx Conv. </th>
  8.             <th> C.A </th>
  9.             <th> Mmc </th>
  10.  </tr>
  11.        
  12. <?php
  13. $prefixe_query=mysql_query("SELECT sites_encodage FROM sites" );
  14. while ($prefixe_values=mysql_fetch_array($prefixe_query)) {
  15. $prefixe=$prefixe_values["sites_encodage"].'_';
  16. }
  17. // REQUETE 1 :  
  18. $query = "SELECT substr(customers_from, 1, 5) AS Origin,
  19.        COUNT(customers_id) AS effectif_vg
  20. FROM ".$prefixe."customers cu
  21. WHERE customers_from NOT LIKE '<%'
  22. " . $condition . "
  23. GROUP BY Origin ";
  24. $result_vg = mysql_query($query) ;
  25. while ($row = mysql_fetch_array($result_vg))
  26. // REQUETE 2 :    
  27.   $query_produit =
  28.     " SELECT
  29.         count(co.commandes_status) AS command,
  30.        AVG(co.commandes_montant) AS Mmc
  31.      FROM ".$prefixe."customers cu
  32.      INNER JOIN ".$prefixe."commandes co 
  33.      ON cu.customers_id=co.customers_id
  34.      WHERE  co.commandes_status='1'
  35.      and   customers_from LIKE '{$row['Origin']}%' " . $condition . "
  36.       ";
  37.      if ($row['Origin'] == '') {
  38.   $query_produit = " SELECT
  39.         count(co.commandes_status) AS command,
  40.        AVG(co.commandes_montant) AS Mmc
  41.      FROM ".$prefixe."customers cu
  42.      INNER JOIN ".$prefixe."commandes co 
  43.      ON cu.customers_id=co.customers_id
  44.      WHERE   co.commandes_status='1'
  45.      and   customers_from = '' " . $condition . "
  46.       ";
  47.             }
  48.  $result = mysql_query($query_produit) ;
  49. while ($row1 = mysql_fetch_array($result))
  50. {
  51. ?>
  52.  <tr>
  53.   <td style="background-color:#CCCCCC;">  </td>
  54.             <td style="text-align:center;"> <?php echo $row['Origin'] ?> </td>
  55.    <td style="text-align:center;"> <?php echo $row['effectif_vg'] ?> </td>
  56.    <td style="text-align:center;"> <?php echo $row1['command'] ?> </td>
  57.              <td style="text-align:center;"><?php echo round(($row1['command'] / $row['effectif_vg']) * 100, 2); ?> % </td>
  58.    <td style="text-align:center;"> <?php echo round($row1['command']*$row1['Mmc']) ?>  &euro;  </td>
  59.              <td style="text-align:center;"> <?php echo round($row1['Mmc'] ,2) ?>   &euro; </td>
  60.                
  61. <?php
  62. }
  63. }
  64. ?>
  65. </tr>
  66. </table>


 
mon problème c'est que j'ai de la peine avec les paramètre a mettre dans ma fonction je regarde les tutos mais rien qui puisse trop m'aider mais ce serai gentille si quelqu'un qui métrise bien le sujet pouvai me guider merci.
 
car moi j'ai fait comme sa:
 

Code :
  1. <?php
  2. function stats_pays($prefixe, $condition, $row, $row1)
  3. {
  4.  
  5. $prefixe_query=mysql_query("SELECT sites_encodage FROM sites" );
  6. while ($prefixe_values=mysql_fetch_array($prefixe_query)) {
  7. $prefixe=$prefixe_values["sites_encodage"].'_';
  8. }
  9. // REQUETE 1 :  
  10. $query = "SELECT substr(customers_from, 1, 5) AS Origin,
  11.        COUNT(customers_id) AS effectif_vg
  12. FROM ".$prefixe."customers cu
  13. WHERE customers_from NOT LIKE '<%'
  14. " . $condition . "
  15. GROUP BY Origin ";
  16. $result_vg = mysql_query($query) ;
  17. while ($row = mysql_fetch_array($result_vg))
  18. // REQUETE 2 :    
  19.   $query_produit =
  20.     " SELECT
  21.         count(co.commandes_status) AS command,
  22.        AVG(co.commandes_montant) AS Mmc
  23.      FROM ".$prefixe."customers cu
  24.      INNER JOIN ".$prefixe."commandes co 
  25.      ON cu.customers_id=co.customers_id
  26.      WHERE  co.commandes_status='1'
  27.      and   customers_from LIKE '{$row['Origin']}%' " . $condition . "
  28.       ";
  29.      if ($row['Origin'] == '') {
  30.   $query_produit = " SELECT
  31.         count(co.commandes_status) AS command,
  32.        AVG(co.commandes_montant) AS Mmc
  33.      FROM ".$prefixe."customers cu
  34.      INNER JOIN ".$prefixe."commandes co 
  35.      ON cu.customers_id=co.customers_id
  36.      WHERE   co.commandes_status='1'
  37.      and   customers_from = '' " . $condition . "
  38.       ";
  39.             }
  40.  $result = mysql_query($query_produit) ;
  41. while ($row1 = mysql_fetch_array($result))
  42. {
  43. }
  44. ?>


donc si quelqu'un peu m'expliquer ce qui est faux je vous en remerci

Reply

Marsh Posté le 13-05-2009 à 09:36:39   

Reply

Marsh Posté le 13-05-2009 à 09:41:48    

une question c'est quoi ton probleme exactement,
je suis un peu perdu?
car c'est bien beau de balancer tout ton code,
 mais sans explication du probleme que tu as, difficile
tu as un message d'erreur?

Reply

Marsh Posté le 13-05-2009 à 10:06:24    

Voilà mon problème c'est que je me rappel plus trop comment faire une function donc là j'ai essayé mais je voulais savoir si ce que j'ai fait étais juste car pour après je sais que je doit faire <?php stats_pays; ?> pour appelé ma fonction mais mon passage de paramètres ma l'air faux je voulai savoir si c'étais bon ou si quelqu'un pouvait me guider un peu.
 
j'ai déjà fait <?php
function connexionBase($host, $user, $pass, $dbase) {
 
$connexion = mysql_connect($host,$user,$pass)or die ("Erreur de connexion" );
mysql_select_db($dbase,$connexion)or die ("Erreur de connexion base" );
}
?> pour ma base de donné mais comme c'est moi qui met les var sa va <?php
connexionBase("localhost", "root", "root", "mybase" ) ;
 
?>  mais pour ce gros code je vois pas très bien comment faire

Reply

Marsh Posté le 13-05-2009 à 10:08:46    

mais ce gros code, c'est quoi
c'est toi qui l'a ecrit? ou tu l'as pris et tu veut t'en servir?

Reply

Marsh Posté le 13-05-2009 à 10:21:51    

non c'est mon code simplement que je veut le mettre en fonction pour pouvoir le réutilisé car je fais des stats t sa marche très bien mais j'ai plusieur autre bdd avec les mêmes nom de champs
 
mon but est de faire un affichage du tableau quand je le fais sans la fonction sa marche très bien mais je doi fair la même chose avec des bdd différente c'est pour sa que j'ai fait la fonction qui me permet de me connecté sur différente bdd, mais je dois rapelé aussi souvent le passage avec les requetes c'est pour sa que je veu le mettre en fonction qui me premettera d'affiché le tableau par base de donnée différentes mais les requettes marche sur toutes les bdd c'est pour sa que je fais une fonction


Message édité par sinifer le 13-05-2009 à 10:22:49
Reply

Marsh Posté le 13-05-2009 à 10:27:50    

ah ok d'accord j'avais pas compris désole,
je vais regarder.

Reply

Marsh Posté le 13-05-2009 à 10:35:09    

je te remerci, je suis désolé des fois j'ai de la peine d'exprimer ce que je veut dir sorry

Reply

Marsh Posté le 13-05-2009 à 10:36:45    

donc si j'ai bien compris
tu as un code, que tu execute plusieurs fois, ce code est identique a chaque fois, sauf que a chaque fois tu sélectionne une bd
 
ce code, tu le met dans une fonction,et vu  que c'est la bd qui change, tu passe les parametres de la BD
function($host,$user,$pass, $dbase){
 
ton code identique;
 
 }
et a chaque fois tu fait appel a ta fonction avec les parametres pour chaque bd

Reply

Marsh Posté le 13-05-2009 à 10:44:16    

oui c'est bien sa mais je veu pas toujours réecrire le code  
 
function($host,$user,$pass, $dbase){
 
ton code identique; <=ici a chaque fois
 
 }


Message édité par sinifer le 13-05-2009 à 10:51:32
Reply

Marsh Posté le 13-05-2009 à 11:32:31    

Voilà j'ai essayer avec quelque indication mais sa me fait une page blanche j'arrive rien a avoir
 
voici mon code pour la mise en function:
 

Code :
  1. <?php
  2. function stats_pays($condition)
  3. {
  4.  
  5. $prefixe_query=mysql_query("SELECT sites_encodage FROM sites" );
  6. while ($prefixe_values=mysql_fetch_array($prefixe_query))
  7. {
  8. $prefixe=$prefixe_values["sites_encodage"].'_';
  9. }
  10. // REQUETE 1 :  
  11. $query = "SELECT substr(customers_from, 1, 5) AS Origin,
  12.        COUNT(customers_id) AS effectif_vg
  13. FROM ".$prefixe."customers cu
  14. WHERE customers_from NOT LIKE '<%'
  15. " . $condition . "
  16. GROUP BY Origin ";
  17. $result_vg = mysql_query($query) ;
  18. return $result_vg;
  19. // REQUETE 2 :    
  20.   $query_produit =
  21.     " SELECT
  22.         count(co.commandes_status) AS command,
  23.        AVG(co.commandes_montant) AS Mmc
  24.      FROM ".$prefixe."customers cu
  25.      INNER JOIN ".$prefixe."commandes co 
  26.      ON cu.customers_id=co.customers_id
  27.      WHERE  co.commandes_status='1'
  28.      and   customers_from LIKE '{$row['Origin']}%' " . $condition . "
  29.       ";
  30.      if ($row['Origin'] == '') {
  31.   $query_produit = " SELECT
  32.         count(co.commandes_status) AS command,
  33.        AVG(co.commandes_montant) AS Mmc
  34.      FROM ".$prefixe."customers cu
  35.      INNER JOIN ".$prefixe."commandes co 
  36.      ON cu.customers_id=co.customers_id
  37.      WHERE   co.commandes_status='1'
  38.      and   customers_from = '' " . $condition . "
  39.       ";
  40.             }
  41.  $result = mysql_query($query_produit) ;
  42. return $result;
  43. ?>


 
et voici mon appel de la fonction:
 

Code :
  1. <?php
  2. $res_vg = stats_pays( $condition);
  3. while ($row1 = mysql_fetch_array($res_vg))
  4. {
  5. $res = stats_pays( $condition);
  6. while ($row1 = mysql_fetch_array($res))
  7. {
  8. ?>
  9. <tr>
  10.   <td style="background-color:#CCCCCC;">  </td>
  11.             <td style="text-align:center;"> <?php echo $row['Origin'] ?> </td>
  12.    <td style="text-align:center;"> <?php echo $row['effectif_vg'] ?> </td>
  13.    <td style="text-align:center;"> <?php echo $row1['command'] ?> </td>
  14.              <td style="text-align:center;"><?php echo round(($row1['command'] / $row['effectif_vg']) * 100, 2); ?> % </td>
  15.    <td style="text-align:center;"> <?php echo round($row1['command']*$row1['Mmc']) ?>  &euro;  </td>
  16.              <td style="text-align:center;"> <?php echo round($row1['Mmc'] ,2) ?>   &euro; </td>
  17. <?php
  18. }
  19. }
  20. ?>
  21. </tr>
  22. </table>

Reply

Marsh Posté le 13-05-2009 à 11:32:31   

Reply

Marsh Posté le 13-05-2009 à 12:56:11    

pourquoi dans ta fonction tu fais 2 return
?
 
si tu dois faire 2 return, soit tu fait 2 fonction  
soit tu met dans un tableau les deux tableaux de résultats


Message édité par infoman64 le 13-05-2009 à 12:56:59
Reply

Marsh Posté le 13-05-2009 à 13:42:12    

ouai mais j'ai essayer sa et sa marche pas :
 

Code :
  1. <?php
  2. function stats_pays($condition, $result,$result_vg )
  3. {
  4.  
  5. $prefixe_query=mysql_query("SELECT sites_encodage FROM sites" );
  6. while ($prefixe_values=mysql_fetch_array($prefixe_query)) {
  7. $prefixe=$prefixe_values["sites_encodage"].'_';
  8. }
  9. // REQUETE 1 :  
  10. $query = "SELECT substr(customers_from, 1, 5) AS Origin,
  11.        COUNT(customers_id) AS effectif_vg
  12. FROM ".$prefixe."customers cu
  13. WHERE customers_from NOT LIKE '<%'
  14. " . $condition . "
  15. GROUP BY Origin ";
  16. $result_vg = mysql_query($query) ;
  17. while ($row = mysql_fetch_array($result_vg))
  18. {
  19. // REQUETE 2 :    
  20.   $query_produit =
  21.     " SELECT
  22.         count(co.commandes_status) AS command,
  23.        AVG(co.commandes_montant) AS Mmc
  24.      FROM ".$prefixe."customers cu
  25.      INNER JOIN ".$prefixe."commandes co 
  26.      ON cu.customers_id=co.customers_id
  27.      WHERE  co.commandes_status='1'
  28.      and   customers_from LIKE '{$row['Origin']}%' " . $condition . "
  29.       ";
  30.      if ($row['Origin'] == '') {
  31.   $query_produit = " SELECT
  32.         count(co.commandes_status) AS command,
  33.        AVG(co.commandes_montant) AS Mmc
  34.      FROM ".$prefixe."customers cu
  35.      INNER JOIN ".$prefixe."commandes co 
  36.      ON cu.customers_id=co.customers_id
  37.      WHERE   co.commandes_status='1'
  38.      and   customers_from = '' " . $condition . "
  39.       ";
  40.             }
  41.  $result = mysql_query($query_produit) ;
  42. return $result;
  43. ?>


 
donc la logiquement sa doit me donner ce qui sort des 2 boucle quan je fai cette appel non??
 

Code :
  1. <?php
  2. $res = stats_pays( $condition, $result,$result_vg);
  3. while ($row1 = mysql_fetch_array($res))
  4. {
  5. ?>
  6. <tr>
  7.   <td style="background-color:#CCCCCC;">  </td>
  8.             <td style="text-align:center;"> <?php echo $row['Origin'] ?> </td>
  9.    <td style="text-align:center;"> <?php echo $row['effectif_vg'] ?> </td>
  10.    <td style="text-align:center;"> <?php echo $row1['command'] ?> </td>
  11.              <td style="text-align:center;"><?php echo round(($row1['command'] / $row['effectif_vg']) * 100, 2); ?> % </td>
  12.    <td style="text-align:center;"> <?php echo round($row1['command']*$row1['Mmc']) ?>  &euro;  </td>
  13.              <td style="text-align:center;"> <?php echo round($row1['Mmc'] ,2) ?>   &euro; </td>
  14. <?php
  15. }
  16. }
  17. ?>


 

Reply

Marsh Posté le 13-05-2009 à 15:06:52    

euh , nan on est n'y en java, ni en c avec les pointeurs la
peut etre que tu peut faire avec les pointeurs en php mais je connais pas.
 
la si tu veut dans ta fonction
tu crée un tableau
$mesresultats=array();
$mesresultats[0]=$result_vg;
$mesresultats[1]=$result;
 
et apres tu faits
return $mesresultats;
 
$res=$stats_pays($condition);
si tu veut recuperer tes tableaux
$result_vg=$res[0];
$result=$res[1];
 
j'espere que tu comprends ce que je veut dire


Message édité par infoman64 le 13-05-2009 à 15:07:18
Reply

Marsh Posté le 13-05-2009 à 15:14:39    

Malheureusement non mais j'i travaile je vais voir avec ce que tu ma donnée merci

Reply

Sujets relatifs:

Leave a Replay

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