Page 1 sur 1

[RÉSOLU]Numéro de semaine au lieu de la date du jour

Posté : lun. 7 avr. 2014 11:47
par TBR
Bonjour,

Nous travaillons avec les numéros de semaine pour définir nos délais, est-ce faisable ? Peut-on me donner un bout de code me permettant d'avancer la dessus ?

Comme vous le voyez sur le screen, j'ai ajouté la colonne Délai souhaité dans le dashboard.
A ce jour, on à donc la date du délai qui est souhaité par le demandeur (choisi via le calendrier).

Image

J'aimerais qu'au lieu de la date, le numéro de semaine soit affiché (en fonction de la date bien évidemment).

Merci de votre aide :)

Cdt

TBR

Re: Calendrier - Afficher numéro des semaines

Posté : lun. 7 avr. 2014 13:54
par fabrice
bonjour,
il y à déjà les numéros de semaine dans le planning.
pourriez-vous préciser votre question
cordialement

Re: Calendrier - Afficher numéro des semaines

Posté : mar. 8 avr. 2014 07:59
par TBR
fabrice a écrit :bonjour,
il y à déjà les numéros de semaine dans le planning.
pourriez-vous préciser votre question
cordialement
J'ai modifié mon post initial pour plus de clarté. J'espère que l'on pourra m'aider cela rendrait GestSup parfait pour notre utilisation ;)

Bien cordialement

Re: Numéro de semaine au lieu de la date du jour

Posté : mar. 8 avr. 2014 10:32
par fabrice
bonjour,
voici ce que j'ai trouvé pour votre problème.
il faut ajouté cela dans le code PHP
cordialement
MySQL possède un grand nombre de fonctions pour gérer les dates et le temps. Il est possible de récupérer le numéro calendaire d’une semaine avec la fonction week. Dimanche 5 avril nous étions semaine 14. La fonction week nous le confirme:

mysql> SELECT week('2009-04-05');
+--------------------+
| week('2009-04-05') |
+--------------------+
| 14 |
+--------------------+

Lundi 6 avril, nouvelle semaine, on passe donc à la semaine 15:

mysql> SELECT week('2009-04-06');

+--------------------+

| week('2009-04-06') |

+--------------------+

| 14 |

+--------------------+

Souci !!! Le résultat n’est pas celui espéré (14 au lieu de 15). En fait la fonction week prend un deuxième paramètre optionnel, qui permet de « régler la précision » (compter sur 53 ou 54 semaines, commencer la semaine un dimanche ou un lundi…) bref elle est complète et complexe…

Le réglage usuel est de mettre le deuxième paramètre à 3 ! ou alors d’utiliser la fonction WEEKOFYEAR.

mysql> SELECT weekofyear('2009-04-05');
+--------------------------+
| weekofyear('2009-04-05') |
+--------------------------+
| 14 |
+--------------------------+

mysql> SELECT weekofyear('2009-04-06');
+--------------------------+
| weekofyear('2009-04-06') |
+--------------------------+
| 15 |
+--------------------------+

Re: Numéro de semaine au lieu de la date du jour

Posté : mer. 9 avr. 2014 16:57
par TBR
Bonjour,

Merci pour l'aide.

J'ai fait appel à mon collègue pour créer les fonctions qui vont bien, on arrive au résultat voulu.

Je partage donc le code que je ne peux pas vraiment expliquer vu mes compétences en dev ..

Lignes 103 à 112 :

Code : Tout sélectionner

if($_POST['date_hope']=='')
{
	$date_hope_deb = "0000-00-00";
	$date_hope_fin = "9999-99-99";
}
else
{
	$date_hope_deb = date_debut_semaine($_POST['date_hope']);
	$date_hope_fin = date('Y/m/d',strtotime('+6 days',strtotime(date_debut_semaine($_POST['date_hope']))));
}
Ligne 155 à 177 : Recherche

Code : Tout sélectionner

if ($keywords)
		{
			include "./searchengine.php";
		} else {
			$from="
			FROM tincidents, tstates
			WHERE 
			tincidents.state=tstates.id
			AND	tincidents.user LIKE '$_POST[user]'
			AND	tincidents.u_group LIKE '$_GET[u_group]'
			AND	tincidents.technician LIKE '$_POST[technician]'
			AND	tincidents.t_group LIKE '$_GET[t_group]'
			AND	tincidents.techread LIKE '$_GET[techread]'
			AND	tincidents.disable='0'
			AND	(tincidents.category LIKE '$_POST[category]')
			AND	tincidents.subcat LIKE '$_POST[subcat]'
			AND	tincidents.id LIKE '$_POST[ticket]'
			AND	tincidents.user LIKE '$_POST[userid]'
			AND	tincidents.date_create LIKE '$_POST[date]%'
			AND	tincidents.state LIKE '$_POST[fstate]'
			AND	tincidents.title LIKE '%$_POST[title]%'
			AND	tincidents.date_hope >= '$date_hope_deb' and tincidents.date_hope <= '$date_hope_fin'
			";

		}
Lignes 466 à 480, ajout de la colonne Délai souhaité

Code : Tout sélectionner

<th <?php if ($_GET['order']=='date_hope') echo 'class="active"'; ?> >
<center>
		<a title="Délai souhaité"  href="<?php echo $url; ?>&order=date_hope&way=<?php echo $arrow_way; ?>">
		Délai souhaité				
		<?php
		//Display arrows
		if ($_GET['order']=='date_hope'){
		if ($_GET['way']=='ASC') {echo ' <i class="icon-sort-up"></i>';}
		if ($_GET['way']=='DESC') {echo ' <i class="icon-sort-down"></i>';}
		}
		?>
		</a>
	</center>
</th>
Lignes 593 à 595, ajout de la ligne de filtre

Code : Tout sélectionner

<td align=center>
<input name="date_hope" size="4" onchange="submit();" type="text"  value="<?php if ($_POST['date_hope']!='%')echo $_POST['date_hope']; ?>" />
</td>
Lignes 728 à 730 : pour afficher les infos dans la colonne Délai souhaité (dans le tableau)

Code : Tout sélectionner

<td onclick=\"document.location='./index.php?page=ticket&id=$row[id]&state=$_GET[state]&userid=$_GET[userid]&category=$_GET[category]&subcat=$_GET[subcat]&viewid=$_GET[viewid]'\"><center><a class=\"td\" href=\"./index.php?page=ticket&id=$row[id]&state=$_GET[state]&userid=$_GET[userid]&category=$_GET[category]&subcat=$_GET[subcat]&viewid=$_GET[viewid]\">".dateFR2WeekNum($date_hope)."</a></center>
</td>
Fonctions :

Code : Tout sélectionner

function dateFR2WeekNum($date)
{
  list($year, $month, $day) = explode('-', $date);
  if ($year==0000) { 
	$weekNum = "Pas de délai"; 
	}
  else
  { 
  $weekNum = (date('W', mktime(0, 0, 0, $month, $day, $year)) * 1);
  }
    return $weekNum;
}

function date_debut_semaine($week) {
		$week = sprintf('%02d',$week);
		$start = strtotime('2014'.'W'.$week);
		return date('Y-m-d', strtotime('Monday',$start));
Pour résumer :

- Ajout d'une colonne Délai souhaité entre la date de la demande et l'état du ticket
- Si date de délai (date d'estimation de la résolution) 0000-00-00 on affiche "Pas de délai"
- Si délai il y a, la fonction converti la date correspondante en numéro de semaine
- On peut également filtrer par numéro de semaine dans la ligne de filtre

Si des améliorations sont a apporter, je suis preneur, en attendant cela fonctionne, cela correspond à notre manière de travailler.

Cdt
TBR