[RESOLU] Générer date automatiquement dans un tableau

Eléphanteau du PHP | 37 Messages

18 avr. 2014, 00:46

Bonsoir à tous,

J'ai un tableau de calcul qui se présente comme suit :
<script type="text/javascript">
function purge(nbre)
{
	nbre = nbre.replace(',','.'); // conversion séparateur ',' en '.'
	nbre = nbre.replace(/([^0-9 ^.]|\.{2,5}|\s)/g,''); // recherche et remplacement de caractères non désirés
	return nbre;
}
function add() 
{
	var f = document.forms[0];
	var tot = 0;

	// pour chaque élément du formulaire
	for(var i=0; i<f.length; i++) 
	{
		// si c'est un champ de texte et dont le nom commence par 'ch_'
		if(f[i].type=='text' && f[i].name.indexOf('nbre_')>=0) 
		{

			f[i].value = purge(f[i].value); // correction du contenu du champ

			tot += f[i].value*1; /* ajout de cette valeur à la variable 'tot'. Comme la valeur d'un champ est de type texte on l'a transformée en nombre (en le multipliant par 1) avant de faire l'addition */
		}
	}	

	f['total'].value = tot; // insertion du résultat
}
</script>
<style>
table{
border-collapse: collapse;
}
td , th
{
border: 1px solid  black;
}
</style>

<form>
<table>
	<tr>
		<th>Ann&eacute;e</th>
		<th>Frais indirects</th>
		<th>Frais directs</th>
		<th>Total</th>
	</tr>
	<tr>
		<td><input type=text value="2014" readonly></td>
		<td><input type=text name="nbre_1" onkeyup="add()"></td>
		<td><input type=text name="nbre_2" onkeyup="add()"></td>
		<td><input type=text name="total" readonly></td>
	</tr>
</table>
</form>
Ce que j'aimerais faire, c'est que la date de l'année en cours doit s'afficher de façon dynamique avec les colonnes qui vont avec, suivi de 2 autres années, c'est-à-dire par exemple 2015 et 2016. Si nous sommes en 2015, 2016 et 2017 doivent apparaître.

Voila ma péoccupation et je ne sais pas comment m'y prendre.

Merci

Eléphant du PHP | 58 Messages

18 avr. 2014, 08:51

Allez, c'est vendredi, c'est cadeau
<?php for($i = 0; $i < 3 ; $i++) { ?>
    <tr>
        <td><input type=text value="<?=date('Y')+$i;?>" readonly></td>
        <td><input type=text name="nbre_1" onkeyup="add()"></td>
        <td><input type=text name="nbre_2" onkeyup="add()"></td>
        <td><input type=text name="total" readonly></td>
    </tr>
<?php }?>
Petite explication, on créé une boucle qui va s'exécuter en initialisant $i à 0 tant que $i est inférieur à 3 (donc 3 fois), en incrémentant $i à chaque passage.
Dans le premier td de ton tr, on y ajoute l'année (date('Y')) + $i, qui vaudra respectivement à chaque passage 0, 1 et 2 donc la valeur de ton input sera 2014, 2015 et 2016.

Eléphanteau du PHP | 37 Messages

18 avr. 2014, 10:21

Merci @morganK pour ton code, ça fonctionne. Le problème maintenant est que le calcul automatique ne se fait plus. Comment m'y prendre pour que cela fonctionne à nouveau?

Eléphant du PHP | 58 Messages

18 avr. 2014, 10:34

Tu peux ajouter l'année dans le name des inputs
<td><input type=text name="<?=date('Y')+$i;?>-nbre_1" onkeyup="add()"></td>
<td><input type=text name="<?=date('Y')+$i;?>-nbre_2" onkeyup="add()"></td>

Eléphanteau du PHP | 37 Messages

18 avr. 2014, 11:34

J'ai essayé ta méthode mais le calcul ne se fait toujours pas.

Eléphanteau du PHP | 37 Messages

18 avr. 2014, 12:18

Quand il s'agit d'une seule ligne, le calcul se fait. Mais quand on va au-delà, il ne se fait pas.