Как объявить метку времени как переменную и преобразовать в формат ddmmyy - PullRequest
0 голосов
/ 16 сентября 2009

У меня есть проблема с датой здесь. У меня есть поле метки времени в таблице MySQL под названием filedate. Однако я несколько раз пытался объявить это, а также преобразовать его в формат dd-mm-yy. К сожалению, когда я загружаю его, дата все еще находится в формате отметки времени, и когда я загружаю ее, она утверждает, что не объявила переменную filedate.

Любая помощь, указывающая мне правильное направление, будет с благодарностью принята. Весь код ниже. У меня также есть HTML-файл для отображения загрузки и описания.

if (isset($_POST['action']) and $_POST['action'] == 'upload')
{
    // Bail out if the file isn't really an upload
    if (!is_uploaded_file($_FILES['upload']['tmp_name']))
    {
        $error = 'There was no file uploaded!';
        include $_SERVER['DOCUMENT_ROOT'] . 'mediamouse/includes/error.html.php';
        exit();
    }
    $uploadfile = $_FILES['upload']['tmp_name'];
    $uploadname = $_FILES['upload']['name'];
    $uploadtype = $_FILES['upload']['type'];
    $uploaddesc = $_POST['desc'];
    $uploaddata = file_get_contents($uploadfile);
    $filedate = time();


    include 'db.inc.php';

    // Prepare user-submitted values for safe database insert
    $uploadname = mysqli_real_escape_string($link, $uploadname);
    $uploadtype = mysqli_real_escape_string($link, $uploadtype);
    $uploaddesc = mysqli_real_escape_string($link, $uploaddesc);
    $uploaddata = mysqli_real_escape_string($link, $uploaddata);


    $sql = "INSERT INTO filestore SET
            filename = '$uploadname',
            mimetype = '$uploadtype',
            description = '$uploaddesc',
            filedata = '$uploaddata'";
    if (!mysqli_query($link, $sql))
    {
        $error = 'Database error storing file!';
        include $_SERVER['DOCUMENT_ROOT'] . 'mediamouse/includes/error.html.php';
        exit();
    }

    header('Location: .');
    exit();
}

if (isset($_GET['action']) and
        ($_GET['action'] == 'view' or $_GET['action'] == 'download') and
        isset($_GET['id']))
{
    include 'db.inc.php';

    $id = mysqli_real_escape_string($link, $_GET['id']);

    $sql = "SELECT filename, mimetype, filedata, DATE_FORMAT(STR_TO_DATE( filedate, '%d-%b-%Y'), '%Y.%m.%d')
            FROM filestore 
            WHERE id = '$id'";
    $result = mysqli_query($link, $sql);
    if (!$result)
    {
        $error = 'Database error fetching requested file.';
        include $_SERVER['DOCUMENT_ROOT'] . 'mediamouse/includes/error.html.php';
        exit();
    }

    $file = mysqli_fetch_array($result);
    if (!$file)
    {
        $error = 'File with specified ID not found in the database!';
        include $_SERVER['DOCUMENT_ROOT'] . 'mediamouse/includes/error.html.php';
        exit();
    }

    $filename = $file['filename'];
    $mimetype = $file['mimetype'];
    $filedata = $file['filedata'];
    $disposition = 'inline';

    if ($_GET['action'] == 'download')
    {
        $mimetype = 'application/octet-stream';
        $disposition = 'attachment';
    }

    // Content-type must come before Content-disposition
    header("Content-type: $mimetype");
    header("Content-disposition: $disposition; filename=$filename");
    header('Content-length: ' . strlen($filedata));
    echo $filedata;
    exit();
}

if (isset($_POST['action']) and $_POST['action'] == 'delete' and
        isset($_POST['id']))
{
    include 'db.inc.php';

    $id = mysqli_real_escape_string($link, $_POST['id']);

    $sql = "DELETE FROM filestore
            WHERE id = '$id'";
    if (!mysqli_query($link, $sql))
    {
        $error = 'Database error deleting requested file.';
        include $_SERVER['DOCUMENT_ROOT'] . 'mediamouse/includes/error.html.php';
        exit();
    }

    header('Location: .');
    exit();
}

include 'db.inc.php';

$sql = 'SELECT id, filename, mimetype, description, filedate
        FROM filestore';
$result = mysqli_query($link, $sql);
if (!$result)
{
    $error = 'Database error fetching stored files.';
    include $_SERVER['DOCUMENT_ROOT'] . 'mediamouse/includes/error.html.php';
    exit();
}

$files = array();
while ($row = mysqli_fetch_array($result))
{
    $files[] = array(
            'id' => $row['id'],
            'filename' => $row['filename'],
            'mimetype' => $row['mimetype'],
            'description' => $row['description'],
            'filedate' => $row['filedate']);
}

include 'files3.html.php';
?>

Ответы [ 2 ]

2 голосов
/ 16 сентября 2009

Используйте NOW() при вставке. При форматировании я не думаю, что вам нужно анализировать типизированный столбец TIMESTAMP, поскольку DATE_FORMAT должен иметь возможность напрямую работать с метками времени.

Это работает:

SELECT DATE_FORMAT( CURRENT_TIMESTAMP( ) , '%Y.%m.%d' )
0 голосов
/ 16 сентября 2009

Вы должны использовать UNIX_TIMESTAMP() в своем утверждении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...