2009-10-10 4 views
1

Лучшее предложение о том, как подойти к этому, то то, что я сделал до сих пор, будет оценено по достоинству. Сейчас даты должны быть введены в правильном формате год-месяц-день. Есть ли способ автоматизировать эту задачу больше, с раскрывающимися списками, просто не уверен, как вы объедините информацию из выпадающих списков, чтобы отправить в одно поле с помощью моей команды INSERT INTO. Это то, на что это похоже на быстрый визуальный siteВвод дат в базу данных mysql с использованием sql INSERT

Вот пример моего кода ниже.

$date = $_POST['date']; 
$title = $_POST['title']; 
$entry = $_POST['entry']; 





if(($date !="") && ($title !="") && ($entry !="")) { 

$sql = "INSERT INTO news (date,title,entry)VALUES(
\"$date\", 
\"$title\", 
\"$entry\" 
)"; 

$results = mysql_query($sql)or die(mysql_error()); 

} 
?> 







<form name="formS" method="post" action="insert.php"> 
<p> 
Date:<input type="text" name="date" id="date" /> 

</p> 

<p> 
Title<input type="text" name="title" id="title" /> 
</p> 
<p> 
Entry:<textarea name ="entry" ></textarea> 
</p> 

<p> 
Submit:<input type="submit" name="submit" id="submit" /> 
</p> 


</form> 
+1

Не имеет отношения к вопросу, но я думаю, что вы должны прочитать htt p: //en.wikipedia.org/wiki/SQL_injection :) –

+0

Нечего опасаться внедрения SQL с помощью вставки, поскольку вы не можете запускать несколько запросов в одном из операторов по умолчанию (я думаю, что это блокирует PHP) , НО ... +1 для его поднятия, поскольку это важное общее соображение :) – hlpiii

+0

Я буду изучать это. –

ответ

3

Один свободной форма поля ввода даты может быть в порядке, в зависимости от ваших потребностей , Это даст людям большую гибкость в том, как они вводят дату. Например, это будет работать, если кто-то войдет в «Вчера» или «7 дней назад».

 
$date = date("Y-m-d", strtotime($_POST['date'])); 

Демо:

 
$date_expressions = array(
    "yesterday", 
    "tomorrow", 
    "7 days ago", 
    "next year", 
    "last month", 
    "10 jan 08" 
); 

date_default_timezone_set("America/Los_Angeles"); 

echo "<pre>"; 
foreach ($date_expressions as $date_expression) { 
    $date = date("Y-m-d", strtotime($date_expression)); 
    echo "{$date_expression} = {$date}\n"; 
} 
echo "</pre>"; 

Output (выполняется 10-9-2009):

 
yesterday = 2009-10-08 
tomorrow = 2009-10-10 
7 days ago = 2009-10-02 
next year = 2010-10-09 
last month = 2009-09-09 
10 jan 08 = 2008-01-10 
+0

Это замечательно! как бы я хотел бы обратить вспять это, например, взяв строку «дата» из моей таблицы и получив ее «завтра сегодня 7 дней назад» и т. д. с помощью эхо-инструкции? –

+0

Проверьте это: http://stackoverflow.com/questions/11/how-do-i-calculate-relative-time – hlpiii

0

Вы можете просто принять дату как многократные выпадающее поле, а затем объединить их перед вводом его в базе данных

$date = $_POST['dateyear']."-".$_POST['datemonth']."-".$_POST['dateday']; 
+0

Кроме того, убедитесь, что вы дезинфицируете/фильтруете вход. –

+0

Спасибо, это именно то, что я пытался выяснить. Что означает санация/фильтр? –

0

Если у вас есть несколько входов для даты, вы можете комбинировать это следующим образом:

$date = sprintf('%04d-%02d-%02d', $_POST['date_year'], $_POST['date_month'], $_POST['date_day']); 
Смежные вопросы