Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1629 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  erreur dans ma fonction

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

erreur dans ma fonction

n°1883957
sinifer
Posté le 13-05-2009 à 09:36:39  profilanswer
 

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

mood
Publicité
Posté le 13-05-2009 à 09:36:39  profilanswer
 

n°1883963
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 13-05-2009 à 09:41:48  profilanswer
 

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?

n°1883988
sinifer
Posté le 13-05-2009 à 10:06:24  profilanswer
 

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

n°1883990
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 13-05-2009 à 10:08:46  profilanswer
 

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?

n°1884000
sinifer
Posté le 13-05-2009 à 10:21:51  profilanswer
 

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
n°1884005
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 13-05-2009 à 10:27:50  profilanswer
 

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

n°1884014
sinifer
Posté le 13-05-2009 à 10:35:09  profilanswer
 

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

n°1884016
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 13-05-2009 à 10:36:45  profilanswer
 

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

n°1884029
sinifer
Posté le 13-05-2009 à 10:44:16  profilanswer
 

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
n°1884061
sinifer
Posté le 13-05-2009 à 11:32:31  profilanswer
 

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>

mood
Publicité
Posté le 13-05-2009 à 11:32:31  profilanswer
 

n°1884091
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 13-05-2009 à 12:56:11  profilanswer
 

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
n°1884132
sinifer
Posté le 13-05-2009 à 13:42:12  profilanswer
 

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. ?>


 

n°1884247
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 13-05-2009 à 15:06:52  profilanswer
 

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
n°1884254
sinifer
Posté le 13-05-2009 à 15:14:39  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  erreur dans ma fonction

 

Sujets relatifs
[PHP] Erreur sur une fonction foreachProbleme de lieur
Erreur dans une fonction MAX[Access] - l'expression ne fait pas partie de la fonction d'agregat
erreur 3664 pour une requete sql avec la fonction openrecordsetErreur sur la fonction imagettftext()
Probleme de message d'erreur sur une fonction SNMPComment sortir d'une fonction en renvoyant un message d'erreur
[PHP] Aide au sujet d'une fonction et gestion d'erreurErreur d'accès ambigu à une fonction membre après dérivation multiple
Plus de sujets relatifs à : erreur dans ma fonction


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR