Voilà ce que me donne ton code Saveus
Voilà ce que me donne ton code Saveus
“L’homme est la mesure de toute chose” Protagoras
"Goutte après goutte l'eau finit par creuser le marbre"
Pensez à mettre !
Si un message vous a aidé , pensez à mettre !
Mon Twitter
Ma Veille Techno
il doit y avoir un probleme de <td> ou de " qq part ;
mais tu as le principe...
“L’homme est la mesure de toute chose” Protagoras
"Goutte après goutte l'eau finit par creuser le marbre"
Pensez à mettre !
Si un message vous a aidé , pensez à mettre !
Mon Twitter
Ma Veille Techno
il y as surement des chose a faite au niveau des conditions de sortie de la boucle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 if ($row2['TIMER'] === NUll) { $timestp=0; } else { $timestp=$row2['TIMER']; }
mais bon si je regarde la derniere image qui du as mis.
tu as bien a priori tout les incidents (certes mal formaté) et le temps total de down (la valeur total des arret ici 1441mn après le dernier "cliquez ici") sur l'image.
après je te laisse adapter tout ca a ta page.
Bah non , ça ne devrais pas afficher 0 , donc il y a un problème
“L’homme est la mesure de toute chose” Protagoras
"Goutte après goutte l'eau finit par creuser le marbre"
Pensez à mettre !
Si un message vous a aidé , pensez à mettre !
Mon Twitter
Ma Veille Techno
Bonjour,
Je viens seulement de voir que tu as testé ma solution (#18) dans ton message #19.
Mais tu t'es trompé :
Normal que tu n'aies pas de résultats !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if ($resultat1 = $mysqli->query(".......")) { ... while( $row= $result->fetch_array())
C'est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part while( $row= $resultat1->fetch_array())
Dernière modification par Invité ; 15/01/2020 à 10h23.
J'obtiens ça :
“L’homme est la mesure de toute chose” Protagoras
"Goutte après goutte l'eau finit par creuser le marbre"
Pensez à mettre !
Si un message vous a aidé , pensez à mettre !
Mon Twitter
Ma Veille Techno
La question, c'est de savoir si tu comprends les codes qu'on te propose (ça vaut pour celui de saveus aussi), ou si tu te contentes de copier-coller "bêtement"...
Là, tu montres un résultat, sans montrer ton code, ni le résultat que tu es censé obtenir.
Il faudrait aussi avoir un extrait (significatif) de la table SQL pour pouvoir tester.
Ton code je le comprends , lui de saveus pas completement.
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 if ($resultat1 = $mysqli->query("SELECT * FROM AUTOMATES.TIMERSIMA WHERE OF='$id_of' ORDER BY TIMER ASC")) { $compteur2 = array(); $i = 0; while( $row5= $resultat1->fetch_array()) { if( empty($compteur2[$i]) ) { $compteur2[$i]['minutes'] = 0; $compteur2[$i]['Timedebut'] = $row5['TIMER']; $compteur2[$i]['Timefin'] = $row5['TIMER']; } if( $row2['STATUS'] == 'ARRET' ) { $compteur2[$i]['minutes']++; // on incrémente } else { $compteur2[$i]['Timefin'] = $row5['TIMER']; $i++; // on incrémente } } } echo $row5['TIMER'];
echo $row5['TIMER']; n'affiche rien
“L’homme est la mesure de toute chose” Protagoras
"Goutte après goutte l'eau finit par creuser le marbre"
Pensez à mettre !
Si un message vous a aidé , pensez à mettre !
Mon Twitter
Ma Veille Techno
LOL... Normal... ce n'est pas là qu'il faut le mettre, mais dans le while.
Et c'est $row5 PARTOUT !!! (pas de $row2 ici)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 while( $row5= $resultat1->fetch_array()) { echo 'STATUT : '.$row5['STATUS'].' - TIMER : '.$row5['TIMER'].'<br />'; ...
Bonjour, j'obtiens cela :
avec ce code :
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 <table id="tableau2" summary="E"> <thead> <CAPTION><h1> ERREURS</h1> </CAPTION> <th scope="col">ID</th> <th scope="col">DEBUT</th> <th scope="col">TEMPS ARRET</th> <th scope="col">OF</th> <th scope="col">COMPTEUR</th> <th scope="col">STATUT</th> <th scope="col">Voir les erreurs</th> </thead> <tfoot> <tr> <td colspan="11"> </td> </tr> </tfoot> <?php if ($resultat1 = $mysqli->query("SELECT * FROM AUTOMATES.TIMERSIMA WHERE OF='$id_of' AND STATUS='ARRET' ORDER BY TIMER ASC")) { $compteur2 = array(); $i = 0; while( $row2= $resultat1->fetch_array()) { //echo ';'.$row2[0]; echo "<TD>" . $row2['ID'] . "</TD>"; echo "<TD>" . date('d/m/Y -- H:i:s ', $row2['TIMER']) . "</TD>"; echo "<TD>" . $row2['TIMER'] . "</TD>"; echo "<TD>" . $row2['OF'] . "</TD>"; echo "<TD>" . $row2['compteur'] . "</TD>"; echo "<TD>" . $row2['STATUS'] . "</TD>"; echo "<TD><a href='codeerror.php?ID=".$row2['ID']."' rel='external' data-role='button' data-mini='true' data-inline='true'>cliquez ici</a></td>"; echo "</tr>"; if( empty($compteur2[$i]) ) { $compteur2[$i]['minutes'] = 0; $compteur2[$i]['Timedebut'] = $row2['TIMER']; $compteur2[$i]['Timefin'] = $row2['TIMER']; } if( $row2['STATUS'] == 'ARRET' ) { $compteur2[$i]['minutes']++; // on incrémente } else { $compteur2[$i]['Timefin'] = $row2['TIMER']; $i++; // on incrémente } } } ?>
“L’homme est la mesure de toute chose” Protagoras
"Goutte après goutte l'eau finit par creuser le marbre"
Pensez à mettre !
Si un message vous a aidé , pensez à mettre !
Mon Twitter
Ma Veille Techno
Comment veux-tu pouvoir arrêter de compter quand STATUS passe en "MARCHE", alors que tu ne sélectionnes QUE les STATUS='ARRET' ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part if ($resultat1 = $mysqli->query("SELECT .... AND STATUS='ARRET' ...."))
Soit LOGIQUE.
Regarde j'ai modifié mon message, ne t'inquiète pas je l'ai vu , c'etait juste une erreur d'observation
Si non quand je veux afficher :
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 echo $compteur2[$i]['Timedebut']; echo $compteur2[$i]['Timefin'] ;
J'ai le meme resultat , c'est normal ?
“L’homme est la mesure de toute chose” Protagoras
"Goutte après goutte l'eau finit par creuser le marbre"
Pensez à mettre !
Si un message vous a aidé , pensez à mettre !
Mon Twitter
Ma Veille Techno
1- Donne un extrait de la table SQL, qu'on puisse tester
2- Tu ne sais toujours pas nous dire où tu veux afficher les résultats du compteur...
Montre un dessin de ce que tu veux obtenir.
1- Je t'envoie ça en privée
2- DANS MON 1ER MESSAGE JE L'AI DIT !!!!
“L’homme est la mesure de toute chose” Protagoras
"Goutte après goutte l'eau finit par creuser le marbre"
Pensez à mettre !
Si un message vous a aidé , pensez à mettre !
Mon Twitter
Ma Veille Techno
Alors ECRIS-LE avec des MOTS, et avec LOGIQUE !!!!!!!!!!!!
Car c'est comme ça qu'on trouve la MÉTHODOLOGIE à suivre.
Je veux l'afficher dans le tableau , dans la colonne "TEMPS ARRET",
du nouveau ?
“L’homme est la mesure de toute chose” Protagoras
"Goutte après goutte l'eau finit par creuser le marbre"
Pensez à mettre !
Si un message vous a aidé , pensez à mettre !
Mon Twitter
Ma Veille Techno
Bonjour,
j'ai fait des tentatives... jusqu'ici infructueuses...
Le code que j'avais proposé est trop simpliste, et j'en suis arrivé à une usine à gaz... non-fonctionnelle !
Par contre, j'ai constaté plusieurs problèmes.
1- D'après le tableau (<table>) que tu montres, on doit afficher sur chaque ligne du tableau les "ID" (et un lien "cliquez ici" avec cet ID en paramètre).
Mais LESQUELS, puisque :
- on n'affiche qu'une ligne (un seul ID) par "ARRET"
- mais plusieurs arrêts consécutifs correspondent à plusieurs ID !
Donc, EXPLIQUE-nous ça.
2- Dans la table (SQL) (que tu m'as envoyée en MP) :
- la différence de TIMER de 2 lignes successives ne correspond pas à UNE minute !
J'ai constaté : 10 min, 8 min,...
- pour un "OF" donné, les ID ne se suivent pas non plus...
Ex. pour OF = '349540'
30212, 30213,... 30216, -> 30121, 30122,...
- J'ai constaté aussi 2 TIMER identiques sur 2 lignes consécutives ! (alors qu'ils devraient être différents)
Ex. pour OF='0344031'
312 -> 1571660761
313 -> 1571660761
Là aussi, EXPLIQUE-nous ça.
CONCLUSION : NI "compter les lignes", NI "faire une différence de TIMER" ne semble PERTINENT pour "compter les TEMPS d'ARRET" !
DONC : demande des PRÉCISIONS à ton "tuteur".
Dernière modification par Invité ; 20/01/2020 à 10h31.
Voici un code, qui semble donner de bons résultats * :
Affichage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 <?php // --------------------- function build_html_table_tr_ARRETS( $rowAll ) { $table_datas = array(); $compteur = array(); $row_PREV = array(); // row précédent $compteur['minutes'] = 0; // compteur de ligne en ARRET $compteur['Timedebut'] = ''; // début ARRET $compteur['Timefin'] = ''; // fin ARRET $compteur['IDs'] = array(); // liste des ID correspondant à un ARRET // --------- foreach( $rowAll as $row ) { if( $row['STATUS']=='ARRET' ) { $compteur['minutes']++; $compteur['IDs'][] = $row['ID']; if( empty($compteur['Timedebut']) ){ $compteur['Timedebut'] = $row['TIMER']; } $compteur['Timefin'] = $row['TIMER']; } if( !empty($row_PREV) && $row_PREV['STATUS']=='ARRET' && $row['STATUS']!='ARRET' ) { if( empty($compteur['Timedebut']) ){ $compteur['Timedebut'] = $row_PREV['TIMER']; } $compteur['Timefin'] = $row['TIMER']; $table_datas[$row_PREV['ID']] = $row_PREV; $table_datas[$row_PREV['ID']]['minutes'] = $compteur['minutes']; $table_datas[$row_PREV['ID']]['Timedebut'] = $compteur['Timedebut']; $table_datas[$row_PREV['ID']]['Timefin'] = $compteur['Timefin']; $table_datas[$row_PREV['ID']]['IDs'] = $compteur['IDs']; } if( $row['STATUS']!='ARRET' ) { $compteur['minutes'] = 0; $compteur['Timedebut'] = ''; $compteur['Timefin'] = ''; $compteur['IDs'] = array(); } $row_PREV = $row; } // --------- // derniere ligne (en dehors du foreach) if( $row['STATUS']=='ARRET' ) { $compteur['Timefin'] = $row['TIMER']; $table_datas[$row['ID']] = $row; $table_datas[$row['ID']]['minutes'] = $compteur['minutes']; $table_datas[$row['ID']]['Timedebut'] = $compteur['Timedebut']; $table_datas[$row['ID']]['Timefin'] = $compteur['Timefin']; $table_datas[$row['ID']]['IDs'] = $compteur['IDs']; } // --------- return $table_datas; } // --------------------- ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 <?php // --------------------- $id_of = '349540'; $table_datas = array(); if ($result = $mysqli->query("SELECT * FROM TIMERSIMA WHERE OF='$id_of' ORDER BY TIMER ASC")) { $rowAll = $result->fetch_all(MYSQLI_ASSOC); $table_datas = build_html_table_tr_ARRETS( $rowAll ); } // --------------------- ?> <table id="tableau2" summary="E"> <caption><h1> ERREURS</h1> </caption> <thead> <th scope="col">IDs</th> <th scope="col">OF</th> <th scope="col">Time Début</th> <th scope="col">Time Fin</th> <th scope="col">Time Diff.</th> <th scope="col">Minutes</th> <th scope="col">STATUT</th> <th scope="col">Voir les erreurs</th> </thead> <tbody> <?php // Affichage foreach( $table_datas as $row ) { $dateDebut = new DateTime(); $dateDebut->setTimestamp($row['Timedebut']); $dateFin = new DateTime(); $dateFin->setTimestamp($row['Timefin']); $dateDiff = $dateDebut->diff($dateFin); echo " <tr> <td>" . implode(', ',$row['IDs']) . "</td> <td>" . $row['OF'] . "</td> <td>" . $dateDebut->format('d/m/Y H:i:s') . "</td> <td>" . $dateFin->format('d/m/Y H:i:s') . "</td> <td>" . $dateDiff->format('%I:%S') . "</td> <td>" . $row['minutes'] . "</td> <td>" . $row['STATUS'] . "</td> <td><a href='codeerror.php?ID=".$row['ID']."' rel='external' data-role='button' data-mini='true' data-inline='true'>cliquez ici</a></td> </tr> "; } ?>
- "Time Diff." donne la différence entre "début" et "fin".
- "Minutes" compte le nombre de lignes en ARRET (censés être des minutes...)
* Ce qui ne résout pas les problèmes cités dans mon précédent message.
-> Tester par exemple :
- $id_of = '0343134';,
Dernière modification par Invité ; 20/01/2020 à 12h10.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager