Page 1 sur 1

Tableau calculé en fonction d'un autre

Posté : 06 déc. 2006, 15:26
par jay64
Bonjour à tous,

J'ai un tableau sous la forme suivante :
$tableau1 = array(2,3,1,4,6);
A partir duquel je voudrais générer le tableau suivant (me calculant la somme des valeurs et fur et à mesure qu'il est parcouru) :
$tableau2 = array(2,5,6,10,16);
En fait, tableau2 serait le résultat d'une opération portée sur le tableau1.

Cela est-il possible ? Existe t-il une fonction qui me fasse ce que j'attends ?

Merci d'avance !

Jay

Posté : 06 déc. 2006, 16:01
par Ryle
Je ne crois pas que cela existe, mais cela dit, ce n'est pas bien compliqué à faire, il te suffit d'utiliser la commande foreach() pour parcourir chaque valeur de ton tableau 1, de stocker le cumul dans une variable temporaire que tu enregistres au fur et à mesure dans ton tableau 2 :)

Posté : 06 déc. 2006, 16:02
par jojolapine
tient ça devrait te convenir:
<?php
$array1=array(2,4,7,8,9,3);
$array2=array();
for($i=0;$i<count($array1);$i++){
  if($i==0){
    $array2[]=$array1[$i];
  } else {
    $array2[]=$array2[$i-1]+$array1[$i];
  }
}
print_r($array1);
echo "<br />";
print_r($array2);
?>

Posté : 06 déc. 2006, 16:14
par jay64
Merci, c'est parfaitement ça !

Sauf que maintenant, je rencontre des difficultés à établir le premier tableau à partir de ma requete que voici :

Code : Tout sélectionner

SELECT NbPointsMarques FROM prono_Voteur_HistoL1 WHERE ((prono_Voteur_HistoL1.IdJoueur)=2) ORDER BY prono_Voteur_HistoL1.IdJourneeL1
Comment à partir de cette requete, je peux construire mon tableau 1 qui aura donc comme contenu toutes les valeurs de "NbPointsMarques" ?

Encore merci d'avance ! :wink:

Posté : 06 déc. 2006, 21:05
par Truc
comme toute lecture de dase de données... il y a des exemples très parlant dans la doc de mysql_fetch_assoc() (par exemple)
(il te faudras au moins une boucle :) )

Posté : 07 déc. 2006, 10:46
par jay64
J'ai fait ceci :
$query_PointsJ1 = "SELECT NbPointsMarques FROM prono_Voteur_HistoL1 WHERE ((prono_Voteur_HistoL1.IdJoueur)=2) ORDER BY prono_Voteur_HistoL1.IdJourneeL1";
$PointsJ1 = mysql_query($query_PointsJ1, $connexion_bdd_mysql) or die(mysql_error());

$NbLignes_PointsJ1 = mysql_num_rows($PointsJ1);

//---------------- Module de calcul ----------------------

$ligne_PointsJ1=mysql_fetch_array($PointsJ1);

$tab=array(); 
for($i=0;$i<$NbLignes_PointsJ1;$i++)
{ 
  if($i==0)
  {
    $tab[]=0; 
  } 
  else 
  {   
    $tab[]=$ligne_PointsJ1['$NbPointsMarques'];
  } 
} 

print_r($tab);
Mais hélas, je n'arrive pas inscrire les valeurs issues de ma requete dans mon tableau "tab". J'ai ceci à l'éxécution :

Array ( [0] => 0 [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => [13] => [14] => [15] => [16] => )

Pouvez-vous me dire où se trouve le couac ?

Merci[/i]

Posté : 07 déc. 2006, 11:10
par Truc
1. jamais de variables entre apostrophes (elles ne sont pas interprètées)
2. il faut boucler avec mysql_fetch_assoc() (pour récupérer chaque ligne de données)

Posté : 07 déc. 2006, 13:15
par jay64
Ok, merci, c'est bon en faisant avec ça :
//-----------------------------------------------------------------
//---------------- Données du joueur 1 ----------------------------
//-----------------------------------------------------------------
$query_PointsJ1 = "SELECT IdJourneeL1, NbPointsMarques FROM prono_Voteur_HistoL1 WHERE ((prono_Voteur_HistoL1.IdJoueur)=$J1) ORDER BY prono_Voteur_HistoL1.IdJourneeL1";
$PointsJ1 = mysql_query($query_PointsJ1, $connexion_bdd_mysql) or die(mysql_error());

//---------------- Module de calcul ----------------------

$ListePointsJ1=array();

while ($ligne_PointsJ1 = mysql_fetch_assoc($PointsJ1)) 
{
$ListePointsJ1[] = $ligne_PointsJ1["NbPointsMarques"];
}