Portail PHP

Forum de discussion et d'aide au php

Vous n'êtes pas identifié.

Annonce

Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides.
FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans.
Proposez vos news : si vous avez un evenement à annoncer
le chat : venez discuter de php.
 

#1 17-02-2008 07:27:01

scouf14
Membre
Date d'inscription: 05-06-2006
Messages: 26

Boucles et tableaux doubles

Bonjour bonjour,
Je fais appel à vous car un petit problème me tourmente depuis quelques temps.
Je vous laisse juger par vous même :

Code:

while ($ROW=mysql_fetch_array($Sresult))
    {
    $id  = $ROW["Id"];
    $date_debut  = $ROW["DateDebut"];
    $date_fin  = $ROW["DateFin"];
    
    
$mois = nb_mois($date_debut, $date_fin) ;    // Nombre de mois entre deux dates    

list($year,$month,$day) = explode("-",$date_debut);


for($i=0; $i<$mois; $i++)
{
$mois2 = $month+$i;

if($mois2>"0" && $mois2<="12")
{
$year2=$year;
}


if($mois2>"12" && $mois2<="24")
{
$mois2=$mois2-"12";
$year2=$year+"1";
}


if($mois2>"24" && $mois2<="36")
{
$mois2=$mois2-"24";
$year2=$year+"2";
}


if($mois2>"36" && $mois2<="48")
{
$mois2=$mois2-"36";
$year2=$year+"3";
}


if($mois2>"48" && $mois2<="60")
{
$mois2=$mois2-"48";
$year2=$year+"4";
}

$mois1=array(array());
$mois1[$id][$i]="$mois2"."/"."$year2";

} 
}

echo "$mois1[1354][2] // -----> je veux ici afficher une case du tableau pour véfifier que cela fonctionne

Mais mon echo de la fin m'affiche : [2]
et non pas la valeur contenue dans le tableau...
Une idée ?
Merci d'avance à tous,
Julien

Hors ligne

 

#2 18-02-2008 03:31:39

lolo3129
Membre
Lieu: Paris
Date d'inscription: 10-05-2005
Messages: 506
Site web

Re: Boucles et tableaux doubles

Code:

$mois1 = array(array());

ne fait pas ce que tu crois.

pour faire des tableaux de tableaux, il faut les ajouter explicitement à chaque entrée dans le 1er tableau

Code:

$mois1 = array();
$mois1[1234] = array();
$mois1[1234][1] = 32;

une fois que tu as créé un tableau pour une année, tu pourras l'utiliser comme un tableau à double entrée, mais pas avant.

++

Hors ligne

 

#3 18-02-2008 10:28:19

scouf14
Membre
Date d'inscription: 05-06-2006
Messages: 26

Re: Boucles et tableaux doubles

Merci beaucoup de ta réponse rapide.
J'essaie ceci dès ce soir et je te donne des nouvelles!
Merci encore,
Julien

Hors ligne

 

#4 18-02-2008 12:14:19

scouf14
Membre
Date d'inscription: 05-06-2006
Messages: 26

Re: Boucles et tableaux doubles

Re bonsoir,
Suite à la réponse de lolo, j'ai modifié la déclaration du tableau.
Mais j'ai toujours un problème qui est sans aucun doute lié à une mauvaise écriture de la boucle for.
Je reproduis donc le code épuré des choses inutiles ci-dessous :
Pour info, le print_r, m'affiche :

Array
(
    [1589] => Array
        (
            [2] => 12/2008
        )

)

c'est à dire uniquement la dernière valeur enregistrée dans le tableau...

Code:

while ($ROW=mysql_fetch_array($Sresult))
    {
    $id  = $ROW["Id"];
    $date_debut  = $ROW["DateDebut"];
    $date_fin  = $ROW["DateFin"];
    

for($i=0; $i<$mois; $i++)
{

// -----> je vous épargne le calcul des variables

$mois1=array();
$mois1[$id]=array();
$mois1[$id][$i]="$mois2"."/"."$year2";

} 

}
echo "<pre>";            // Pour vérifier le tableau à double entrées crée
print_r($mois1);
echo "</pre>";

Merci d'avance à tous, et bonne soirée !

Hors ligne

 

#5 19-02-2008 02:46:27

lolo3129
Membre
Lieu: Paris
Date d'inscription: 10-05-2005
Messages: 506
Site web

Re: Boucles et tableaux doubles

avec ton code, à chaque tour de boucle, tu écrases tout le tableau pour rajouter une valeur. Il faut définir ton tableau en dehors de tes boucles.

essaie avec ça :

Code:

$mois1=array();

while ($ROW=mysql_fetch_array($Sresult))
    {
    $id  = $ROW["Id"];
    $date_debut  = $ROW["DateDebut"];
    $date_fin  = $ROW["DateFin"];
    

for($i=0; $i<$mois; $i++)
{

// -----> je vous épargne le calcul des variables

if (!array_key_exists($id, $mois))
  $mois1[$id]=array();
$mois1[$id][$i]="$mois2"."/"."$year2";

} 
}

Hors ligne

 

#6 19-02-2008 08:40:26

scouf14
Membre
Date d'inscription: 05-06-2006
Messages: 26

Re: Boucles et tableaux doubles

Et là je me rend compte à quel point je suis idiot !
Il suffisait de déclarer $mois1 avant le while et $mois1[$id] avant le for.
Merci beaucoup à toi pour ton aide.
Sur ce coup là au moins je m'en souviendrai.
Merci encore,
adios

Hors ligne