Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
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. |
||
Bonjour bonjour,
Je fais appel à vous car un petit problème me tourmente depuis quelques temps.
Je vous laisse juger par vous même :
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 fonctionneMais 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
$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
$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
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
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...
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
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 :
$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
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