2009-10-10 64 views
1

有關如何處理這個問題的更好建議,以及我迄今爲止所做的工作將不勝感激。現在日期必須以年月日正確的格式輸入。有沒有一種方法可以讓這個任務更加自動化,包括下拉菜單,只是不知道如何將下拉列表中的信息與我的sql INSERT INTO命令一起提交給一個字段。這是它看起來像一個快速的視覺 site使用sql輸入mysql數據庫的日期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 :) – 2009-10-10 08:27:05

+0

因爲你無法在默認情況下在一個語句中運行多個查詢(我認爲它是用來鎖定的) ,但是...... +1,因爲它是一個重要的整體考慮:) – hlpiii 2009-10-10 22:19:20

+0

我會研究這一點。 – 2009-10-11 01:55:56

回答

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>"; 

輸出(在2009年10月9日執行):

 
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天前」等等......用echo語句? – 2009-10-11 20:28:42

+0

看看這個: http://stackoverflow.com/questions/11/how-do-i-calculate-relative-time – hlpiii 2009-10-12 00:52:11

0

您可以簡單地接受日期多重下拉框,然後在數據庫中輸入之前,將它們結合起來

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

此外,請確保您清理/過濾輸入。 – 2009-10-10 05:01:55

+0

感謝這正是我想弄明白的。 sanatize/filter是什麼意思? – 2009-10-10 21:31:32

0

如果你有多個輸入的日期,你可以像這樣結合起來:

$date = sprintf('%04d-%02d-%02d', $_POST['date_year'], $_POST['date_month'], $_POST['date_day']); 
相關問題