Форма PHP с помощью jQuery DatePicker

Я строю веб-приложение MVC PHP с MySQL. Я использую форму для сбора информации от пользователя. Ввод даты работает, когда информация о дате вводится в правильном порядке, но я хочу, чтобы это было более удобным для моих менее опытных коллег (God Bless’Em).

Вот моя форма в index.php:

    if($action == 'add_order'){
$distributor_id = filter_input(INPUT_POST, 'distributor_id', FILTER_VALIDATE_INT);
$code = filter_input(INPUT_POST, 'code');
$name = filter_input(INPUT_POST, 'name');
$date = filter_input(INPUT_POST, 'date');
if($distributor_id == NULL || $distributor_id == FALSE || $code == NULL ||
$name == NULL || $date ==NULL){
$error = "Invalid order data: Something is wrong";
include('../errors/error.php');
}else{
add_order($distributor_id, $code, $name, $date);
header("Location: .?distributor_id=$distributor_id");
}
}
?>

Вот моя форма в ‘order_add.php’:

    <h1>Add order</h1>
<form action="index.php" method="post" id="add_order_form">
<input type="hidden" name="action" value="add_order">
<label>distributor:</label>
<select name="distributor_id">
<?php foreach ($distributors as $distributor) : ?>
<option value="<?php echo $distributor['distributorID']; ?>">
<?php echo $distributor['distributorName']; ?>
</option>
<?php endforeach; ?>
</select>
<br>
<label>Order Code:</label>
<input type="text" name="code">
<br>
<label>Customer Name:</label>
<input type="text" name="name">
<br>
<label>Order Date:</label>
<input type="text" id="date" name="date">
<br>
<label>&nbsp;</label>
<input type="submit" value="Add order">
<br>
</form>
<p class="last_paragraph">
<a href="index.php?action=list_orders">View order List</a>
</p>
</main>

Вот представление ‘header_two_date_picker.php’:

<!DOCTYPE html>
<!-- This header page is going to be used with my Order Schedule PHP Program and main_two.css-->
<html>
<!-- This is the body section-->
<head>
<title>Order Status</title>
<link rel='stylesheet' type='text/css' href = "../main_two.css">

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>jQuery UI Datepicker - Default functionality</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>

$( function(){
$( "#date" ).datepicker();
} );
</script>

</head>
<!-- This is the body section-->
<body>

<header>
<h1>My PHP Sandbox - Date Picker</h1>

</header>

Вот моя модель ‘order_db.php’

    function add_order($distributor_id, $code, $name, $date){
global $db;
$query = 'INSERT INTO orders
(distributorID, orderCode, orderName, orderDate)
VALUES
(:distributor_id, :code, :name, :date)';
$statement = $db->prepare($query);
$statement->bindValue(':distributor_id', $distributor_id);
$statement->bindValue(':code', $code);
$statement->bindValue(':name', $name);
$statement->bindValue(':date', $date);
$statement->execute();
$statement->closeCursor();
}
?>

JQuery DatePicker отображает и даже заполняет поле формы, но таблица в моей БД показывает «0000-00-00».

У меня такой вопрос: как мне взять данные DatePicker и преобразовать их в формат даты, который будет хранить MySql?

Спасибо, что нашли время посмотреть на мой вопрос.

<—— Это мой первый раз, поэтому, если я делаю это неправильно … упс! ——>

Это часть моего файла ‘order_list.php’

<!-- Display table of orders -->
<h2><?php echo $distributor_name; ?></h2>
<table>
<tr>
<th>Order Code</th>
<th>Order Name</th>
<th>Order Date</th>
<th>&nbsp;</th>
</tr>
<?php foreach ($orders as $order) : ?>
<tr>
<td><?php echo $order['orderCode']; ?></td>
<td><?php echo $order['orderName'] ?></td>
<td><?php echo $order['orderDate'] ?></td>
<td><form action="." method="post">
<input type="hidden" name="action" value="delete_order">
<input type="hidden" name="order_id" value="<?php echo $order['orderID']; ?>">
<input type="hidden" name="distributor_id" value="<?php echo $order['distributorID']; ?>">
<input type="submit" value="Delete">
</form></td>
</tr>
<?php endforeach; ?>
</table>
<p class = "last_paragraph">
<a href="?action=show_add_form">Add order</a>
</p>

***<h2>This is a test to output $date: <?php echo $date; ?></h2>
<h2>This is a test to output echo $_POST['date']: <?php echo*** $_POST['date']; ?></h2>

Если вы посмотрите на отвратительный стиль этой страницы, вы увидите тесты, в которых я пытался отобразить переменные, которые ничего не отображают.

-1

Решение

Привет Бухлахкай.

  • Убедитесь, что вы используете свою структуру базы данных, так как Date использует формат DATE.
    Поле даты для MySQL принимается 2017-12-30 (Year-Month-Date),

  • Отладьте код, выведите echo $_POST['date']; и посмотрите на дату, будет ли его форматирование базой данных принят формат (год-месяц-дата).

  • Изменить Jickery Date Picker как $('#date').datepicker({dateFormat : 'yy-mm-dd'});

  • Если он отображает формат, то это не проблема. Пожалуйста, обновите коды должным образом, как это делает index.php, как некоторые более детально 1 к 1, чтобы избежать путаницы.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector