Итак, у меня есть форма, которая содержит множество разных вещей, которые входят в базу данных, когда я добавил в форму средства проверки даты и времени, они попадают в базу данных в виде строки (Пример: «2018-05-29» «10: 47: 00.000000» - вот как они выглядят, когда идут в "Здесь")
Я хочу переформатировать их, чтобы при вставке в базу данных они отображались как настоящие слова.
(Пример: «29 мая 2018 года», «вторник, 29 мая», «10:47 AM / PM» что-то в этом роде)
Так что, когда я использую свой php и беру данные из базы данных и отображаю их на странице, он показывал фактические слова, а не просто числа.
(Примечание: Да, я пробовал пойти другим путем и преобразовать его, когда он выходит из базы данных, но из-за того, как я показываю вещи, это не сработает)
<?php
$servername = "";
$username = "";
$password = "";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Select Database
mysqli_select_db($conn, "czt_database");
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
$game = mysqli_real_escape_string($conn, $_POST['Game']);
$map = mysqli_real_escape_string($conn, $_POST['Map']);
$challenge = mysqli_real_escape_string($conn, $_POST['Challenge']);
$extra = mysqli_real_escape_string($conn, $_POST['Extras']);
$players = mysqli_real_escape_string($conn, $_POST['Players']);
$entryfee = mysqli_real_escape_string($conn, $_POST['Type']);
$entrycost = mysqli_real_escape_string($conn, $_POST['Fee']);
$prizemoney = mysqli_real_escape_string($conn, $_POST['Prize']);
$entrymax = mysqli_real_escape_string($conn, $_POST['Entries']);
$startdate = mysqli_real_escape_string($conn, $_POST['Start-date']);
$starttime = mysqli_real_escape_string($conn, $_POST['Start-time']);
$enddate = mysqli_real_escape_string($conn, $_POST['End-date']);
$endtime = mysqli_real_escape_string($conn, $_POST['End-time']);
$rules = mysqli_real_escape_string($conn, $_POST['Rules']);
$sql = "INSERT INTO tournaments (tournament_game, tournament_map, tournament_challenge, tournament_extra, tournament_players, tournament_entryfee, tournament_entrycost, tournament_prize, tournament_entrymax, tournament_startdate, tournament_starttime, tournament_enddate, tournament_endtime, tournament_rules)
VALUES ('$game', '$map', '$challenge', '$extra', '$players', '$entryfee', '$entrycost', '$prizemoney', '$entrymax', '$startdate', '$starttime', '$enddate', '$endtime', '$rules');";
mysqli_query($conn, $sql);
header("Location:../Create-A-Tournament.html");
?>
Вам необходимо отформатировать дату, возвращаемую из базы данных. Вы можете сделать это с помощью функции strtotime () и функции date ().
Вы также должны изучить использование подготовленных операторов вместо того, чтобы строить свой запрос таким образом. Это делает ваш код более подробным и менее подверженным ошибкам, которые могут вызвать ошибки внедрения SQL.
Да, столбцы, в которые они входят, уже являются типами даты и времени в базе данных. Я имею в виду в средстве выбора даты, когда вы выбираете дату, когда она отображается. «2018-05-29» и «7:29 AM», а в базе данных также отображаются как «2018-05-29» и «7: 29: 00.00000». Я хочу попытаться сделать так, чтобы они отображались в базе данных как «Понедельник, 29 мая» или «7:29 утра».






Вы можете использовать код примерно так, как показано ниже
$startDate=date("l dS M Y", strtotime($_POST['start-date'])); //This will give result as Tuesday 7th May 2018.
$startTime=date("h:i A", strtotime($_POST['start-time'])); // This returns time as 04:56 AM/PM
$startdate = mysqli_real_escape_string($conn, $startDate);
$starttime = mysqli_real_escape_string($conn, $startTime);
Затем вы можете использовать указанные выше переменные для хранения в БД.
Надеюсь, поможет.
@Nanikos: Я обновил код. пожалуйста, проверьте, работает ли он.
Все хорошо, я закончил тем, что полностью изменил способ отображения данных, и после многих проб и ошибок он заработал :) Ваш пост действительно помог мне добраться до этого момента, так что спасибо!
@Nanikos: Рад, что помог.