Как сместить таблицу HTML с помощью PHP, чтобы вычесть значение ячейки 1-й строки из значения ячейки 2-й строки разных столбцов - PullRequest
0 голосов
/ 06 февраля 2019

ОК, поэтому я пытаюсь решить эту проблему с прошлой недели и пока не нашел решения. Я задаю Вопрос много раз, но не могу заставить Код работать, поэтому я помещаю все детали в этот.Вопрос.

Я создаю таблицу HTML с помощью запросов PHP и Mysql (таблица выглядит следующим образом Таблица )

DB ID   EmpID   Date        Username    Computername    State   Minutesatstate  Statestarttime  Stateendtime        Timestamp
704634  303836  02-06-2019  user        PC-818          Idle    2               13:44           13:46               2019-02-06 13:46:46
704599  303836  02-06-2019  user        PC-818          Active  16              13:28           13:44               2019-02-06 13:44:46
704340  303836  02-06-2019  user        NIPL-1220       Active  2               13:27           13:28               2019-02-06 13:28:48
704313  303836  02-06-2019  user        PC-818          Active  13              13:15           13:27               2019-02-06 13:27:31

Я хочу добавить еще один столбец с помощью PHPили Jquery или Javascript, чтобы вычесть Statestarttime столбец 1-й строки с Stateendtime столбцом 2-й строки, чтобы узнать разницу во времени.

Я просто хочу, чтобы на странице отображался столбец минимальной разницы.

пример ожидаемых результатов

StateStarTtime    StateEndTime   Min Difference 

03:57             03:58          00:03
03:53             03:54          00:04
03:46             03:49          null

Я могу найти так много примеров и справок для вычитания StateStarTtime из StateEndTime в первой строке, но я хочу вычесть значение ячейки 1-й строки StateStarTtime из 2-й строкиЗначение ячейки StateEndTime, чтобы найти разницу в минутах.

Я новичок в HTML и PHP, но совершенно новичок в JS / JQ, поэтому любое направление о том, как я могу это сделать, высоко ценится.,Ниже приведен фрагмент кода PHP и HTML, который я использую.Дайте мне знать, если вам нужен полный код.

Получение данных из Mysql

<?php

if(isset($_POST['search']))
{
    $valueToSearch = $_POST['valueToSearch'];
    $query = "SELECT * FROM time WHERE DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= Timestamp AND EmpID='".$valueToSearch."' ORDER BY `time`.`Timestamp` DESC";
    $search_result = filterTable($query);

}
 else {
    $query = "SELECT * FROM time WHERE DATE_SUB(CURDATE(),INTERVAL 1 DAY) <= Timestamp ORDER BY `time`.`Timestamp` DESC";
    $search_result = filterTable($query);
}

function filterTable($query)
{
    $connect = mysqli_connect("localhost", "root", "", "timetracker");
    $filter_Result = mysqli_query($connect, $query);
    return $filter_Result;
}

?>

Таблица PHP Code

            <?php while($row = mysqli_fetch_array($search_result)):?>

            <tr>
                <td align="Center"><?php echo $row['id'];?></td>
                <td align="Center"><?php echo $row['EmpID'];?></td>
                <td align="Center"><?php echo $row['Date'];?></td>
                <td align="Center"><?php echo $row['Username'];?></td>
                <td align="Center"><?php echo $row['Computername'];?></td>
                <td align="Center"><?php echo $row['State'];?></td>
                <td align="Center"><?php echo $row['MinutesatState'];?></td>
                <td align="Center"><?php echo $row['StateStarttime'];?></td>
                <td align="Center"><?php echo $row['StateEndtime'];?></td>
                <td align="Center"><?php echo $row['Timestamp'];?></td>


            </tr>
            <?php endwhile;?>

проверенные решения - 1

<?php while($row = mysqli_fetch_array($search_result)):?>
    <?php $startTime[] =  $row['StateStarttime'];?>
    <?php $endTime[] = $row['StateEndtime'];?>
<?php endwhile;?>
<?php 
    $i = 0;
    while($row = mysqli_fetch_array($search_result)):?>
        <tr>
            <td align="Center"><?php echo $row['id'];?></td>
            <td align="Center"><?php echo $row['EmpID'];?></td>
            <td align="Center"><?php echo $row['Date'];?></td>
            <td align="Center"><?php echo $row['Username'];?></td>
            <td align="Center"><?php echo $row['Computername'];?></td>
            <td align="Center"><?php echo $row['State'];?></td>
            <td align="Center"><?php echo $row['MinutesatState'];?></td>
            <td align="Center"><?php echo $row['StateStarttime'];?></td>
            <td align="Center"><?php echo $row['StateEndtime'];?></td>
            <td align="Center"><?php echo $row['Timestamp'];?></td>
            //your calculation goes here like diff



            <td align="Center">
               <?php 
                   $mycalc = ($startTime[$i] - $endTime[$i+1]);   
                    echo $mycalc;
                ?>
            </td>
        </tr>
        $i++;
<?php endwhile;?>

проверенных решений - 2

<?php for($i = 0; $i < count($results); $i++): ?>
    <?php
    $datetime1 = DateTime::createFromFormat('i:s', $results[$i]['StateStarttime']);
    $datetime2 = DateTime::createFromFormat('i:s', $results[$i+1]['StateEndtime']);

    if($datetime2)
        $interval = $datetime1->diff($datetime2)->format('%I:%S');
    else
        $interval = 'unknown';

    ?>
    <tr>
        <td align="Center"><?php echo $results[$i]['id'];?></td>
        <td align="Center"><?php echo $results[$i]['EmpID'];?></td>
        <td align="Center"><?php echo $results[$i]['Date'];?></td>
        <td align="Center"><?php echo $results[$i]['Username'];?></td>
        <td align="Center"><?php echo $results[$i]['Computername'];?></td>
        <td align="Center"><?php echo $results[$i]['State'];?></td>
        <td align="Center"><?php echo $results[$i]['MinutesatState'];?></td>
        <td align="Center"><?php echo $results[$i]['StateStarttime']; ?></td>
        <td align="Center"><?php echo $results[$i]['StateEndtime']; ?></td>
        <td align="Center"><?php echo $results[$i]['Timestamp'];?></td>
        <td align="Center"><?php echo $interval; ?></td>

    </tr>
<?php endfor; ?>

Прежде чем кто-либо предложит мне это

<td align="Center"><?php echo($row['StateEndtime'] - $row['StateStarTtime ']) ?></td>

Это даст мне разницу в минутах StateStarTtime и StateEndtime в той же строкехотите вычесть значение ячейки 1-й строки StateStarTtime из значения ячейки 2-й строки StateEndTime и т. д., чтобы найти разницу в минутах.

1 Ответ

0 голосов
/ 06 февраля 2019

Попробуйте что-нибудь подобное.Только руководство, реальная реализация зависит от вас.Также я бы рекомендовал вам использовать {} вместо endwhile.

   <?php 
    $last_row = $mysqli_fetch_array($search_result));
    while($row = mysqli_fetch_array($search_result)){
    //this is pseudocode, you will need to convert to date objects
    $timediff = $last_row['StateStarttime'] - $row['StateEndtime'];
    ?>
        <tr>
            <td align="Center"><?php echo $row['id'];?></td>
            <td align="Center"><?php echo $row['EmpID'];?></td>
            <td align="Center"><?php echo $row['Date'];?></td>
            <td align="Center"><?php echo $row['Username'];?></td>
            <td align="Center"><?php echo $row['Computername'];?></td>
            <td align="Center"><?php echo $row['State'];?></td>
            <td align="Center"><?php echo $row['MinutesatState'];?></td>
            <td align="Center"><?php echo $row['StateStarttime'];?></td>
            <td align="Center"><?php echo $row['StateEndtime'];?></td>
            <td align="Center"><?php echo $row['Timestamp'];?></td>
            // echo $timediff
        </tr>
        <?php
        $last_row = $row;
    }?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...