PHP fonction retourne tableau : Résolu

PHP fonction retourne tableau : Résolu - PHP - Programmation

Marsh Posté le 09-06-2008 à 10:17:49    

Salu a tous
J'avais un code d'origine (que j'ai commenté pour le repérer) qui fonctionnait mais j'ai besoin de le réutiliser donc je veut le mettre dans une fonction tablo qui a un entier en paramètre et me retourne un tableau à 2 dimension.
 

Code :
  1. <?php
  2. //----------fonction que j'utilise dans la deuxième----------
  3. function sort_items($a, $b)
  4. {
  5.   if ($a['points'] != $b['points'])
  6.     return $a['points'] <= $b['points'];
  7.   elseif ($a['diff'] != $b['diff'])
  8.     return $a['diff'] <= $b['diff'];
  9.   else
  10.     return $a['bp'] <= $b['bp'];
  11. }
  12. function tablo($journeesel)
  13. {
  14. //------------------------------DEBUT DU CODE D'ORIGINE---------------
  15. $repon = mysql_query("SELECT nomeq FROM equipe ORDER BY points DESC" ) or die(mysql_error());
  16. while ($nom = mysql_fetch_array($repon) )
  17. {
  18. //------------------Initialisation des tableaux--------------------------
  19. $dom[$nom['nomeq']] = array ("points" => "0","matchjoués" => "0","gagnés" => "0","nuls" => "0","perdus" => "0","bp" => "0","bc" => "0","diff" => "0" );
  20. $ext[$nom['nomeq']] = array ("points" => "0","matchjoués" => "0","gagnés" => "0","nuls" => "0","perdus" => "0","bp" => "0","bc" => "0","diff" => "0" );
  21. for ($nb = 1; $nb <= $journeesel; $nb++)
  22. {
  23. //-------------------------Equipes domiciles--------------------
  24. $reponsedom = mysql_query("SELECT * FROM matchs WHERE journee='".$nb."' AND equipedom='".$nom['nomeq']."'" ) or die(mysql_error());
  25. $champsdom = mysql_fetch_array($reponsedom);
  26. if ($champsdom['equipedom']==$nom['nomeq'])
  27. {
  28.   if($champsdom['scoredom'] > $champsdom['scorext'])
  29.   {$points=3;$gagnés=1;$nuls=0;$perdus=0;}
  30.   if($champsdom['scoredom'] == $champsdom['scorext'])
  31.   {$points=1;$gagnés=0;$nuls=1;$perdus=0;}
  32.   if($champsdom['scoredom'] < $champsdom['scorext'])
  33.   {$points=0;$gagnés=1;$nuls=0;$perdus=1;}
  34. $dom[$champsdom['equipedom']] = array (
  35. "points" => $dom[$champsdom['equipedom']]['points']+$points,
  36. "matchjoués" => $dom[$champsdom['equipedom']]['matchjoués']+1,
  37. "gagnés" => $dom[$champsdom['equipedom']]['gagnés']+$gagnés,
  38. "nuls" => $dom[$champsdom['equipedom']]['nuls']+$nuls,
  39. "perdus" => $dom[$champsdom['equipedom']]['perdus']+$perdus,
  40. "bp" => $dom[$champsdom['equipedom']]['bp']+ $champsdom['scoredom'],
  41. "bc" => $dom[$champsdom['equipedom']]['bc']+ $champsdom['scorext'],
  42. "diff" => $dom[$champsdom['equipedom']]['diff']+ $champsdom['scoredom']-$champsdom['scorext']);
  43. }
  44. //-------------------------Equipes extérieures--------------------
  45. $reponsext = mysql_query("SELECT * FROM matchs WHERE journee='".$nb."' AND equipext='".$nom['nomeq']."'" ) or die(mysql_error());
  46. $champsext = mysql_fetch_array($reponsext);
  47. if ($champsext['equipext']==$nom['nomeq'])
  48. {
  49.   if($champsext['scorext'] > $champsext['scoredom'])
  50.   {$points=3;$gagnés=1;$nuls=0;$perdus=0;}
  51.   if($champsext['scorext'] == $champsext['scoredom'])
  52.   {$points=1;$gagnés=0;$nuls=1;$perdus=0;}
  53.   if($champsext['scorext'] < $champsext['scoredom'])
  54.   {$points=0;$gagnés=1;$nuls=0;$perdus=1;}
  55. $ext[$champsext['equipext']] = array (
  56.     "points" => $ext[$champsext['equipext']]['points']+$points,
  57.     "matchjoués" => $ext[$champsext['equipext']]['matchjoués']+1,
  58.     "gagnés" => $ext[$champsext['equipext']]['gagnés']+$gagnés,
  59.     "nuls" => $ext[$champsext['equipext']]['nuls']+$nuls,
  60.     "perdus" => $ext[$champsext['equipext']]['perdus']+$perdus,
  61.     "bp" => $ext[$champsext['equipext']]['bp']+ $champsext['scorext'],
  62.     "bc" => $ext[$champsext['equipext']]['bc']+ $champsext['scoredom'],
  63.     "diff" => $ext[$champsext['equipext']]['diff']+ $champsext['scorext']-$champsext['scoredom']);
  64. }
  65. }
  66. //-----------------------ajout des résultat dans une tableau------------------
  67. $gen[$nom['nomeq']] = array (
  68. "points" => $ext[$nom['nomeq']]['points'] + $dom[$nom['nomeq']]['points'],
  69. "matchjoués" => $ext[$nom['nomeq']]['matchjoués'] + $dom[$nom['nomeq']]['matchjoués'],
  70. "gagnés" => $ext[$nom['nomeq']]['gagnés'] + $dom[$nom['nomeq']]['matchjoués'],
  71. "nuls" => $ext[$nom['nomeq']]['nuls'] + $dom[$nom['nomeq']]['nuls'],
  72. "perdus" => $ext[$nom['nomeq']]['perdus'] + $dom[$nom['nomeq']]['perdus'],
  73. "bp" => $ext[$nom['nomeq']]['bp'] + $dom[$nom['nomeq']]['bp'],
  74. "bc" => $ext[$nom['nomeq']]['bc'] + $dom[$nom['nomeq']]['bc'],
  75. "diff" => $ext[$nom['nomeq']]['diff'] + $dom[$nom['nomeq']]['diff']);
  76. }
  77. //----------------------------tri du tableau---------------------------------
  78. uasort($gen, 'sort_items');
  79. //------------------------------FIN DU CODE D'ORIGINE---------------------
  80. return $gen;
  81. }
  82. tablo($_POST['journeesel']);
  83. ?>


Ensuite j'ai le code qui affiche le tableau $gen comme avant mais ça ne marche plus, on me dit que le tableau n'est pas définit ou que ce n'est pas un tableau

Message cité 1 fois
Message édité par zlatan40 le 09-06-2008 à 11:19:06

---------------

Reply

Marsh Posté le 09-06-2008 à 10:17:49   

Reply

Marsh Posté le 09-06-2008 à 10:35:48    

zlatan40 a écrit :

Ensuite j'ai le code qui affiche le tableau $gen comme avant mais ça ne marche plus

il est où ce code ??

Reply

Marsh Posté le 09-06-2008 à 10:49:12    

je l'ai pas mis pour ne pas trop surcharger de code et puis il fonctionner avant donc il devrait être bon
Soit comme ça :

Code :
  1. while (list ($key) = each ($gen))
  2. {
  3. echo '<tr>';
  4. //------------------Classement général------------------
  5. echo '<td>'.$gen[$key]['points'].'</td>';
  6. echo '<td>'.$gen[$key]['matchjoues'].'</td>';
  7. echo '<td>'.$gen[$key]['gagnes'].'</td>';
  8. echo '<td>'.$gen[$key]['nuls'].'</td>';
  9. echo '<td>'.$gen[$key]['perdus'].'</td>';
  10. echo '<td>'.$gen[$key]['bp'].'</td>';
  11. echo '<td>'.$gen[$key]['bc'].'</td>';
  12. echo '<td>'.$gen[$key]['diff'].'</td>';
  13. echo '</tr>';
  14. }


erreur : Warning: Variable passed to each() is not an array or object
 
ou plus simplement :

Code :
  1. print_r($gen);  ou  var_dump($gen);


erreur : Notice: Undefined variable: gen
 
Aucune de ces trois solution ne fonctionne alors qu'avant de mettre la fonction cela marchait


---------------

Reply

Marsh Posté le 09-06-2008 à 10:53:24    

et à quel moment tu fais

Code :
  1. $gen = tablo($_POST['journeesel']);

?

Reply

Marsh Posté le 09-06-2008 à 11:04:06    

Jamais...c'était ça le problème
En fait je pensais que la variable $gen se créer en faisant return $gen; dans la fonction mais ce n'est pas le cas.
Merci beaucoup ça marche, c'était tout bête mais il fallait une autre personne pour voir l'erreur  
je vais essayer de comparer plusieurs résultats de cette fonction maintenant, a+


---------------

Reply

Sujets relatifs:

Leave a Replay

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