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

Décrivez les améliorations que vous souhaiteriez pour les prochaines versions.
Répondre
TBR
Gsup LEVEL 2
Messages : 40
Enregistré le : jeu. 6 mars 2014 16:53

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
Modifié en dernier par TBR le mer. 9 avr. 2014 17:05, modifié 3 fois.
- GestSup 3.2.0
- Windows Server 2016
- Apache 2.4.41
- PHP 7.3.12
- MariaDB 10.4.10
fabrice
Gsup LEVEL 7
Messages : 327
Enregistré le : mar. 11 mars 2014 12:01

bonjour,
il y à déjà les numéros de semaine dans le planning.
pourriez-vous préciser votre question
cordialement
OS : Linux gestsup 4.15.0-158-generic #166-Ubuntu SMP Fri Sep 17 19:37:52 UTC 2021 x86_64
MariaDB : 10.4.21-MariaDB-1:10.4.21+maria~bionic (base : bsup 183.8MB)
PHP : 7.3.30-1+ubuntu18.04.1+deb.sury.org+1
GestSup : 3.2.15 (8871 Tickets)
TBR
Gsup LEVEL 2
Messages : 40
Enregistré le : jeu. 6 mars 2014 16:53

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
- GestSup 3.2.0
- Windows Server 2016
- Apache 2.4.41
- PHP 7.3.12
- MariaDB 10.4.10
fabrice
Gsup LEVEL 7
Messages : 327
Enregistré le : mar. 11 mars 2014 12:01

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 |
+--------------------------+
OS : Linux gestsup 4.15.0-158-generic #166-Ubuntu SMP Fri Sep 17 19:37:52 UTC 2021 x86_64
MariaDB : 10.4.21-MariaDB-1:10.4.21+maria~bionic (base : bsup 183.8MB)
PHP : 7.3.30-1+ubuntu18.04.1+deb.sury.org+1
GestSup : 3.2.15 (8871 Tickets)
TBR
Gsup LEVEL 2
Messages : 40
Enregistré le : jeu. 6 mars 2014 16:53

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
- GestSup 3.2.0
- Windows Server 2016
- Apache 2.4.41
- PHP 7.3.12
- MariaDB 10.4.10
Répondre