php Вычислить дату

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
316
Реакции
131
Помог
4 раз(а)
Снова эти даты :crazy:
Хочу из csbans`a вывести дату окончания бана, да это сложно(жестко)

PHP:
<!DOCTYPE html>
<html>
<head>
    <title>тайтл bans</title>
    <meta charset="utf-8"/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta name="keywords" content="что то"/>
    <meta name="description" content="дескрипшн"/>

    <link rel="stylesheet" type="text/css" href="template/style.css">
    <link rel="stylesheet" type="text/css" href="template/style2.css">
    <link rel="stylesheet" type="text/css" href="template/mstyle.css">

    <script type="text/javascript" src="template/css1337.js"></script>
    <script type="text/javascript" src="template/css1337_2.js"></script>
</head>
</head>

<body>
    <div id="mainpage">
        <div id="menu">
            <ul><br/>
                <li><a href="#" class="current">пункт</a></li>
                <li><a href="#">пункт</a></li>
                <li><a href="#">пункт</a></li>                               
            </ul>
        </div>

        <div id="wrapper">
            <div id="conten">
                <!-- рандомные картинки / mt_rand(1,2) - кол-во картинок от 1 до 2 -->
                <pre><img src="images/img<?php echo(mt_rand(1,2)); ?>.png"></pre>
            </div>

            <div id="navmenu">
                <a href="#" class="button"><img src="template/cookie.png"> что-то</a>
                <a href="#" class="button"><img src="template/cookie.png"> что-то</a>
            </div>

            <center>
            <div id="partners">
                кнопка поделиться <br/>
                <h2>какой-то текст</h2>
                геимтрекер
                <br/><br/>
                <!-- таблица випов -->
                <!-- скрипт выделения строки при наведении -->
                <script type="text/javascript">
                    window.addEvent('domready', function() {
                        var zTables = new ZebraTables('gamelist');
                    });
                </script>
                <!-- скрипт выделения строки при наведении -->
                <table class="gamelist">
                    <colgroup>
                        <col class="gamelist-id" />
                        <col class="empty" />
                        <col class="empty" />
                        <col class="empty" />
                    </colgroup>
                    <thead>           
                        <tr>
                        <th></th>
                        <th>Игрок</th>
                        <th>Админ</th>
                        <th class="iStart">Забанен</th>
                        <th class="iStart">Истекает</th>
                        </tr>
                    </thead>

                    <!-- вывод игроков -->
                    <?php
                    $time = time();
                    while($r = mysqli_fetch_assoc($res)) // получение результата
                    { if($r['expired'] >= 1) continue; ?>
                    <tbody>
                        <tr class="test">
                        <td class="gamelist-id">
                        </td>
                        <td class="vName">
                            <!-- -->
                            <span class="infoicon"><img src="template/dead.png">
                                <span>
                                    SteamID: <?php echo $r['player_id']; echo '<br>' ?>
                                    IP address: <?php echo $r['player_ip']; echo '<br>' ?>
                                    Reason: <?php echo $r['ban_reason']; ?>

                                </span>
                            </span>
                            <!-- -->
                            <font color=#247dd9><?php echo $r['player_nick']; ?></font></td>
                        <td style="color: #ff9900;"><?php echo $r['admin_nick']; ?></font></td>
                        <td class="vStart"><?php
                                                $epoch = $r['ban_created'];
                                                echo date('d.m.Y', $epoch);
                                            ?>
                        </td>
                        <td class="vStart"><?php
                                                if($r['ban_length'] == 0)
                                                    {
                                                        ?> <font style="color: #800000;"> <?php echo 'Никогда :('; ?></font> <?php
                                                    }
                                                    if($r['ban_length'] > 0)
                                                    {
                                                        $asd1 = $time - $r['ban_created'];
                                                        echo date('d.m.Y', $asd1);
                                                    }
                                            ?>
                        </td>
                        </tr>
                    </tbody>
                    <?php } ?> <!-- закрытие блока кода -->
                </table>
                <!-- навигация start -->
                кнопочки < >
                <!-- таблица випов -->
            </div>
            </center>
        <!-- push - выравнивает последнюю строчку в таблице випов -->
        <div id="push"></div>
        </div>
    </div>
    <div id="footer">
        <img src="template/footer3.png">
    </div>
</body>
</html>

Забанил себя на год, показывает дремучую дату 01.01.1970
Все логично, реалтайм - дата бана = сколько осталось
PHP:
$asd1 = $time - $r['ban_created'];
echo date('d.m.Y', $asd1);
:wacko:
 
В этой теме было размещено решение! Перейти к решению.

Download all Attachments

Сообщения
207
Реакции
420
Помог
10 раз(а)
Надо к дате бана добавлять срок. Но если там 0, то сразу загонять в переменную "Навсегда".
 
Сообщения
316
Реакции
131
Помог
4 раз(а)
PHP:
<?php
if($r['ban_length'] == 0)
{
    ?> <font style="color: #cc99ff;"> <?php echo 'Никогда :('; ?></font> <?php
}
if($r['ban_length'] >= 2)
{
    $echo = $r['ban_created'] + $r['ban_length'];
    echo date('d.m.Y', $echo);
}
?>
 

Вложения

Сообщения
265
Реакции
315
Помог
10 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
alabamaster1337,
if($r['ban_length'] >= 2)
???
все значения больше нуля - бан на время. почему с двух отсчет у тебя?
 
Сообщения
316
Реакции
131
Помог
4 раз(а)
neygomon, я уже запутался
ban_length как я понял это время бана, 0 навсегда, -1 разбанен, 60 вотебан, 123456 дата в unix
наверное я хотел сделать чтоб не показывались разбаны и истекшие баны, уже плыву))
16 Июл 2018
поменял

PHP:
while($r = mysqli_fetch_assoc($res)) // получение результата
    { if($r['ban_length'] == -1 AND $r['expired']  == 1) continue; ?>
<tbody>
и
PHP:
<?php
    if($r['ban_length'] == 0)
        {
            ?> <font style="color: #cc99ff;"> <?php echo 'Никогда :('; ?></font> <?php
        }
    if($r['ban_length'] > 0)
        {
            $asd1 = $r['ban_created'] + $r['ban_length'];
            echo date('d.m.Y', $asd1);
        }
?>
ничего
16 Июл 2018
в csbans`e такой массив, его можно как нибудь к нормальному виду привести?
PHP:
array(
    'header' => 'Срок',
    'value' => '$data->ban_length == \'-1\' ? \'Разбанен\' : Prefs::date2word($data->ban_length) . ($data->expired == 1 ? \' (истек)\' : \'\')',
    'htmlOptions' => array('style' => 'width:130px'),
),
 
Сообщения
2,713
Реакции
2,995
Помог
59 раз(а)
Не забывай про else if
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
в csbans`e такой массив, его можно как нибудь к нормальному виду привести?
Для того же Yii это нормально (к сожалению). Все дело что тот код в строке в конечном итоге будет выполнен с помощью eval

Главное правило разрабоки сайтов на PHP эт осделать все операции до вывода. И только после того как получили и обработали все данные, их вывести.

По вашему коду над сделать примерно так
PHP:
<?php if ($r['ban_length'] > 0): ?>
    <?= date('d.m.Y', $r['ban_created'] + $r['ban_length']); ?>
<?php else: ?>
    <font style="color: #cc99ff;">Никогда :(</font>
<?php endif; ?>
Стоит добавить что тег font устарел. Также инлайн стили плохо.
 
Сообщения
316
Реакции
131
Помог
4 раз(а)
fantom, что за 2 $ - date('d.m.Y', $$r['ban_created'] + $r['ban_length']); опечатка?

1531762732057.png
Страница недоступна
Сайт .ru пока не может обработать этот запрос.
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
alabamaster1337, опечатка исправил више. Тэг <?php и if должны быть в одной строке
 
Сообщения
316
Реакции
131
Помог
4 раз(а)
fantom, все как и было,может быть проблема в этой части

PHP:
<?php
$connection = mysqli_connect('', '', '', 'csbans');

if ($connection == false)
{
    echo "error<br/>";
    echo mysqli_connect_error();
    exit();
}
?>

<?php
$perpage = 20;
if(isset($_GET['page']) & !empty($_GET['page']))
{
    $curpage = $_GET['page'];
} else
{
    $curpage = 1;
}

$start = ($curpage * $perpage) - $perpage;
$PageSql = "SELECT * FROM `amx_bans`";
$pageres = mysqli_query($connection, $PageSql);
$totalres = mysqli_num_rows($pageres);
$endpage = ceil($totalres/$perpage);
$startpage = 1;
$nextpage = $curpage + 1;
$previouspage = $curpage - 1;

$ReadSql = "SELECT * FROM `amx_bans` ORDER BY bid DESC LIMIT $start, $perpage";
$res = mysqli_query($connection, $ReadSql);
?>
этот кусок работает с навигацией страниц, я не стал его в отдельный файл выносить и прилепил в самом верху перед <!DOCTYPE html>
16 Июл 2018
напомню, пытаюсь скрывать истекшие баны, а выводить в таблицу только `навсегда` и `не истекшие`
 

Вложения

Сообщения
62
Реакции
129
Помог
4 раз(а)
1) в $r['ban_created'] время в секундах, а в $r['ban_length'] в минутах, нужно привести $r['ban_length'] к секундам
PHP:
<?php= date('d.m.Y', $r['ban_created'] + $r['ban_length'] * 60); ?>
2)
PHP:
<?php
$connection = mysqli_connect('', '', '', 'csbans');

if ($connection == false)
{
    echo "error<br/>";
    echo mysqli_connect_error();
    exit();
}
?>

<?php
$perpage = 20;
if(isset($_GET['page']) & !empty($_GET['page']))
{
    $curpage = intval($_GET['page']);
} else
{
    $curpage = 1;
}
$time = time();
$where = " WHERE `ban_length`=0 OR `ban_length`*60+`ban_created`>" . $time;
$PageSql = "SELECT COUNT( * ) AS `count` FROM `amx_bans`" . $where;
$pageres = mysqli_query($connection, $PageSql);
$result = mysqli_fetch_assoc($pageres);
$count = $result[0]['count'];
$endpage = max(ceil($count/$perpage), 1);
if($curpage > $endpage) {
    $curpage = $endpage;
}
$start = ($curpage - 1) * $perpage;

$ReadSql = "SELECT * FROM `amx_bans`{$where} ORDER BY bid DESC LIMIT $start, $perpage";
$res = mysqli_query($connection, $ReadSql);
?>
3) В index.php в самый верх после <?php добавь
PHP:
ini_set('display_errors', 1);
error_reporting(E_ALL);
Тогда вместо "Страница недоступна" на страницу выплюнет ошибки и по ним будет видно в чем проблема
 
Сообщения
316
Реакции
131
Помог
4 раз(а)
Ошибка в верху страници
Notice: Undefined offset: 0 in /home/.ru/public_html/zm/bans/index.php on line 31

Переключатель страниц полетел
1531840501558.png

Добавил echo перед date

PHP:
<?php
// ошибки 0/1
ini_set('display_errors', 1);
error_reporting(E_ALL);

$connection = mysqli_connect('', '', '', 'csbans');

if ($connection == false)
{
    echo "error<br/>";
    echo mysqli_connect_error();
    exit();
}
?>

<?php
$perpage = 20; // кол-во страниц
if(isset($_GET['page']) & !empty($_GET['page']))
{
    $curpage = intval($_GET['page']);
} else
{
    $curpage = 1;
}
$time = time(); // время в переменную чтоб часто не юзать time()
// ниже большая часть мне не понятна
$where = " WHERE `ban_length`=0 OR `ban_length`*60+`ban_created`>" . $time;
$PageSql = "SELECT COUNT( * ) AS `count` FROM `amx_bans`" . $where;
$pageres = mysqli_query($connection, $PageSql);
$result = mysqli_fetch_assoc($pageres);
$count = $result[0]['count'];
$endpage = max(ceil($count/$perpage), 1);
if($curpage > $endpage) {
    $curpage = $endpage;
}
$start = ($curpage - 1) * $perpage;

$ReadSql = "SELECT * FROM `amx_bans`{$where} ORDER BY bid DESC LIMIT $start, $perpage";
$res = mysqli_query($connection, $ReadSql);
// надо бы в файл запихнуть, че как лох
?>

<!DOCTYPE html>
<html>
<head>
    <title>тайтл bans</title>
    <meta charset="utf-8"/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta name="keywords" content="что то"/>
    <meta name="description" content="дескрипшн"/>

    <link rel="stylesheet" type="text/css" href="template/style.css">
    <link rel="stylesheet" type="text/css" href="template/style2.css">
    <link rel="stylesheet" type="text/css" href="template/mstyle.css">

    <script type="text/javascript" src="template/css1337.js"></script>
    <script type="text/javascript" src="template/css1337_2.js"></script>
</head>
</head>

<body>
    <div id="mainpage">
        <div id="menu">
            <ul><br/>
                <li><a href="#" class="current">пункт</a></li>
                <li><a href="#">пункт</a></li>
                <li><a href="#">пункт</a></li>                               
            </ul>
        </div>

        <div id="wrapper">
            <div id="conten">
                <!-- рандомные картинки / mt_rand(1,2) - кол-во картинок от 1 до 2 -->
                <pre><img src="images/img<?php echo(mt_rand(1,2)); ?>.png"></pre>
            </div>

            <div id="navmenu">
                <a href="#" class="button"><img src="template/cookie.png"> что-то</a>
                <a href="#" class="button"><img src="template/cookie.png"> что-то</a>
            </div>

            <center>
            <div id="partners">
                кнопка поделиться <br/>
                <h2>какой-то текст</h2>
                геимтрекер
                <br/><br/>
                <!-- таблица випов -->
                <!-- скрипт выделения строки при наведении -->
                <script type="text/javascript">
                    window.addEvent('domready', function() {
                        var zTables = new ZebraTables('gamelist');
                    });
                </script>
                <!-- скрипт выделения строки при наведении -->
                <table class="gamelist">
                    <colgroup>
                        <col class="gamelist-id" />
                        <col class="empty" />
                        <col class="empty" />
                        <col class="empty" />
                    </colgroup>
                    <thead>           
                        <tr>
                        <th></th>
                        <th>Игрок</th>
                        <th>Админ</th>
                        <th class="iStart">Забанен</th>
                        <th class="iStart">Истекает</th>
                        </tr>
                    </thead>

                    <!-- вывод игроков -->
                    <?php
                    while($r = mysqli_fetch_assoc($res)) // получение результата
                    { if($r['ban_length'] == -1 AND $r['expired']  == 1) continue; ?> <!-- не выводить итекшие баны-->
                    <tbody>
                        <tr class="test">
                        <td class="gamelist-id">
                        </td>
                        <td class="vName">
                            <!-- при навидении на картинку start -->
                            <span class="infoicon"><img src="template/dead.png">
                                <span>
                                    SteamID: <?php echo $r['player_id']; echo '<br>' ?>
                                    IP address: <?php echo $r['player_ip']; echo '<br>' ?>
                                    Reason: <?php echo $r['ban_reason']; ?>
                                </span>
                            </span>
                            <!-- при навидении на картинку end -->
                            <font color=#247dd9><?php echo $r['player_nick']; ?></font></td>
                        <td style="color: #ff9900;"><?php echo $r['admin_nick']; ?></font></td>
                        <td class="vStart"><?php
                                                $epoch = $r['ban_created'];
                                                echo date('d.m.Y', $epoch);
                                            ?>
                        </td>
                        <td class="vStart">
                            <?php if ($r['ban_length'] > 0): ?>
                                <?php= echo date('d.m.Y', $r['ban_created'] + $r['ban_length'] * 60); ?> <!-- а как же echo -->
                            <?php else: ?>
                                <font style="color: #cc99ff;">Никогда :(</font> <!-- font устарел -->
                            <?php endif; ?>
                        </td>
                        </tr>
                    </tbody>
                    <?php } ?> <!-- закрытие блока кода -->
                </table>
                <!-- навигация start -->
                <div>
                    <nav aria-label="Page navigation">
                        <ul class="pagination">
                            <?php if($curpage != $startpage){ ?>
                                <!-- <li class="pages1337"> -->
                                <li style="background:#363636; border:1px solid #444444;margin:0 0 2px 0;padding:2px 5px;min-width:15px;display:inline-block;text-align:center;">
                                    <a class="page-link" href="?page=<?php echo $startpage ?>" tabindex="-1" aria-label="Previous">
                                        <span aria-hidden="true">&laquo;</span>
                                        <span class="sr-only">Первая</span>
                                    </a>
                                </li>
                            <?php } ?>
                            
                            <?php if($curpage >= 2){ ?>
                                <!-- <li class="pages1337"> -->
                                <li style="background:#363636; border:1px solid #444444;margin:0 0 2px 0;padding:2px 5px;min-width:15px;display:inline-block;text-align:center;">
                                    <a class="page-link" href="?page=<?php echo $previouspage ?>"><?php echo $previouspage ?></a>
                                </li>

                            <?php } ?>
                            <!-- <li class="pages1337"> -->
                            <li style="background:#363636; border:1px solid #444444;margin:0 0 2px 0;padding:2px 5px;min-width:15px;display:inline-block;text-align:center;">
                                <a class="page-link" href="?page=<?php echo $curpage ?>"><font style="color: #ff9900;"><?php echo $curpage ?></font></a>
                            </li>

                            <?php if($curpage != $endpage){ ?>
                            <!-- <li class="pages1337"> -->
                            <li style="background:#363636; border:1px solid #444444;margin:0 0 2px 0;padding:2px 5px;min-width:15px;display:inline-block;text-align:center;">
                                <a class="page-link" href="?page=<?php echo $nextpage ?>"><?php echo $nextpage ?></a>
                            </li>
                            <!-- <li class="pages1337"> -->
                            <li style="background:#363636; border:1px solid #444444;margin:0 0 2px 0;padding:2px 5px;min-width:15px;display:inline-block;text-align:center;">
                                <a class="page-link" href="?page=<?php echo $endpage ?>" aria-label="Next">
                                    <span aria-hidden="true">&raquo;</span>
                                    <span class="sr-only">Последняя</span>
                                </a>
                            </li>
                            <?php } ?>
                        </ul>
                    </nav>
                </div>
                <!-- навигация end -->
                <!-- таблица випов -->
            </div>
            </center>
        <!-- push - выравнивает последнюю строчку в таблице випов -->
        <div id="push"></div>
        </div>
    </div>
    <div id="footer">
        <img src="template/footer3.png">
    </div>
</body>
</html>

А ну и дата вообще не выводится, что с echo что без
17 Июл 2018
И еще вопрос, зачем ставить = после <?php=
 

Download all Attachments

Сообщения
62
Реакции
129
Помог
4 раз(а)
Ошибся немного
$result[0]['count'];
->
$result['count'];

и
<?php=
->
<?=
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу