PHP fonction retourne tableau [Résolu]

Signaler
Messages postés
42
Date d'inscription
dimanche 20 février 2011
Statut
Membre
Dernière intervention
1 avril 2018
-
Messages postés
42
Date d'inscription
dimanche 20 février 2011
Statut
Membre
Dernière intervention
1 avril 2018
-
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.

<?php
//----------fonction que j'utilise dans la deuxième----------
function sort_items($a, $b)
{
  if ($a['points'] != $b['points'])
    return $a['points'] <= $b['points'];
  elseif ($a['diff'] != $b['diff'])
    return $a['diff'] <= $b['diff'];
  else
    return $a['bp'] <= $b['bp'];
}

function tablo($journeesel)
{
//------------------------------DEBUT DU CODE D'ORIGINE--------------------------------------
$repon = mysql_query("SELECT nomeq FROM equipe ORDER BY points DESC") or die(mysql_error());
while ($nom = mysql_fetch_array($repon) )
{
//------------------Initialisation des tableaux--------------------------
$dom[$nom['nomeq']] = array ("points" => "0","matchjoués" => "0","gagnés" => "0","nuls" => "0","perdus" => "0","bp" => "0","bc" => "0","diff" => "0");
$ext[$nom['nomeq']] = array ("points" => "0","matchjoués" => "0","gagnés" => "0","nuls" => "0","perdus" => "0","bp" => "0","bc" => "0","diff" => "0");
for ($nb = 1; $nb <= $journeesel; $nb++)
{
//-------------------------Equipes domiciles--------------------
$reponsedom = mysql_query("SELECT * FROM matchs WHERE journee='".$nb."' AND equipedom='".$nom['nomeq']."'") or die(mysql_error());
$champsdom = mysql_fetch_array($reponsedom);
if ($champsdom['equipedom']==$nom['nomeq'])
{
  if($champsdom['scoredom'] > $champsdom['scorext'])
  {$points=3;$gagnés=1;$nuls=0;$perdus=0;}
  if($champsdom['scoredom'] == $champsdom['scorext'])
  {$points=1;$gagnés=0;$nuls=1;$perdus=0;}
  if($champsdom['scoredom'] < $champsdom['scorext'])
  {$points=0;$gagnés=1;$nuls=0;$perdus=1;}
$dom[$champsdom['equipedom']] = array (
"points" => $dom[$champsdom['equipedom']]['points']+$points,
"matchjoués" => $dom[$champsdom['equipedom']]['matchjoués']+1,
"gagnés" => $dom[$champsdom['equipedom']]['gagnés']+$gagnés,
"nuls" => $dom[$champsdom['equipedom']]['nuls']+$nuls,
"perdus" => $dom[$champsdom['equipedom']]['perdus']+$perdus,
"bp" => $dom[$champsdom['equipedom']]['bp']+ $champsdom['scoredom'],
"bc" => $dom[$champsdom['equipedom']]['bc']+ $champsdom['scorext'],
"diff" => $dom[$champsdom['equipedom']]['diff']+ $champsdom['scoredom']-$champsdom['scorext']);
}
//-------------------------Equipes extérieures--------------------
$reponsext = mysql_query("SELECT * FROM matchs WHERE journee='".$nb."' AND equipext='".$nom['nomeq']."'") or die(mysql_error());
$champsext = mysql_fetch_array($reponsext);
if ($champsext['equipext']==$nom['nomeq'])
{
  if($champsext['scorext'] > $champsext['scoredom'])
  {$points=3;$gagnés=1;$nuls=0;$perdus=0;}
  if($champsext['scorext'] == $champsext['scoredom'])
  {$points=1;$gagnés=0;$nuls=1;$perdus=0;}
  if($champsext['scorext'] < $champsext['scoredom'])
  {$points=0;$gagnés=1;$nuls=0;$perdus=1;}
$ext[$champsext['equipext']] = array (
    "points" => $ext[$champsext['equipext']]['points']+$points,
    "matchjoués" => $ext[$champsext['equipext']]['matchjoués']+1,
    "gagnés" => $ext[$champsext['equipext']]['gagnés']+$gagnés,
    "nuls" => $ext[$champsext['equipext']]['nuls']+$nuls,
    "perdus" => $ext[$champsext['equipext']]['perdus']+$perdus,
    "bp" => $ext[$champsext['equipext']]['bp']+ $champsext['scorext'],
    "bc" => $ext[$champsext['equipext']]['bc']+ $champsext['scoredom'],
    "diff" => $ext[$champsext['equipext']]['diff']+ $champsext['scorext']-$champsext['scoredom']);
}
}
//-----------------------ajout des résultat dans une tableau---------------------------
$gen[$nom['nomeq']] = array (
"points" => $ext[$nom['nomeq']]['points'] + $dom[$nom['nomeq']]['points'],
"matchjoués" => $ext[$nom['nomeq']]['matchjoués'] + $dom[$nom['nomeq']]['matchjoués'],
"gagnés" => $ext[$nom['nomeq']]['gagnés'] + $dom[$nom['nomeq']]['matchjoués'],
"nuls" => $ext[$nom['nomeq']]['nuls'] + $dom[$nom['nomeq']]['nuls'],
"perdus" => $ext[$nom['nomeq']]['perdus'] + $dom[$nom['nomeq']]['perdus'],
"bp" => $ext[$nom['nomeq']]['bp'] + $dom[$nom['nomeq']]['bp'],
"bc" => $ext[$nom['nomeq']]['bc'] + $dom[$nom['nomeq']]['bc'],
"diff" => $ext[$nom['nomeq']]['diff'] + $dom[$nom['nomeq']]['diff']);
}
//----------------------------tri du tableau------------------------------------------------
uasort($gen, 'sort_items');
//------------------------------FIN DU CODE D'ORIGINE--------------------------------------
return $gen;
}
tablo($_POST['journeesel']);
?>
<hr size="2" width="100%" />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

3 réponses

Messages postés
42
Date d'inscription
dimanche 20 février 2011
Statut
Membre
Dernière intervention
1 avril 2018

Le problème est résolu :
Je pensais que la variable se créer toute seule à la sortie de la fct mais en fait il faut mettre le résultat de la fonction dans une variable
 $gen = tablo($_POST['journeesel']);

alors que j'avais simplement fait tablo($_POST['journeesel']);
Messages postés
2080
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
4 novembre 2019
1
Salut,
S'il te plaît, clarifie ton code :
- supprime ce qui ne nous est pas utile (ne garde qu'un élément par tableau par exemple)
- indente le
- indique la ligne de l'erreur

On veut bien t'aider mais si tu nous donnes un sac de nœud en nous demandant qu'on t'aide à tendre la corde, on te dira de d'abord la démêler...

Ça vaut aussi pour ton autre question : http://www.phpcs.com/infomsg_PHP-RECUPERER-ZONE-SAISI-FORMULAIRE_1142429.aspx

A+

Flachy Joe

Ta vie t'est prêtée, fais en un cadeau.
Messages postés
42
Date d'inscription
dimanche 20 février 2011
Statut
Membre
Dernière intervention
1 avril 2018

Merci de ta réponse
Tout d'abord je ne sais pas d'ou viens l'erreur, le tableau doit être vide car c'est lorsque j'affiche le tableau que j'ai une erreur (le code n'y est pas)
Le truc c'est que le code compris entre //---------DEBUT DU CODE D'ORIGINE----  et  //---------FIN DU CODE D'ORIGINE---- fonctionne car avant j'avais simplement ce code sans la fonction tablo.
Maintenant que je l'ai mis dans la fonction tablo et que j'éssaie d'utiliser la fonction cela ne fonctionne plus. Mes question sont :
Es-ce que l'on peut utiliser une fonction à l'interrieur d'une fonction ?
Es-ce qu'une fonction peut retourner un tableau ?
Sinon je ne vois pas d'ou vient le problème