2011-07-26 38 views
-2

我有了这些元素一个搜索表单:MySQL的搜索表单的问题

<style type="text/css"> 
body,td,th { 
    color: #FFF; 
} 
body { 
    background-color: #060; 
} 
</style> 
<div align="center"> 
    <p>&nbsp;</p> 
    <p>&nbsp;</p> 
    <p>&nbsp;</p> 
    <p>&nbsp;</p> 
</div> 
<?php 
mysql_connect ("localhost", "xxxx","xxxxxxx") or die (mysql_error()); 
mysql_select_db ("xxxxxxx"); 

$term = $_POST['term']; 

$sql = mysql_query("select * from Patients where ID like '%$term%'"); 


while ($row = mysql_fetch_array($sql)){ 
    echo 'ID: '.$row['ID']; 
    echo '<br/> First Name: '.$row['firstname']; 
    echo '<br/> Last Name: '.$row['lastname']; 
    echo '<br/> Valid Until: '.$row['validto']; 
    echo '<br/><br/>'; 
    } 

它的伟大工程为是,但我需要它来从服务器获取日期并在数据库中比较它validto场,如果服务器日期等于或早于validto日期,它应该回显“状态:有效”。否则,它应该回显“状态:无效”。

+0

首先你有SQL注入漏洞: – Ibu

+0

你应该在每个字符串$使用用htmlspecialchars while循环中的行值。它可以防止用户提供的文本包含HTML标记。 –

回答

0

为什么不加

<?php 

$curDate = date('Y-m-d'); 
$validTill = strtotime($row['validto']); 
... and can we compare it... 

?> 
1

此区域需要注意:

$term = $_POST['term']; 

应该

$term = mysql_real_escape_string($_POST['term']); 

那么你可以做你的比较:

$today = date("Y-m-d"); // mysql default date format 

$sql = "SELECT * FROM Patients 
     WHERE ID LIKE '%$term%' 
     AND validto <= '$today'"; 
0

您可以使用mysql轻松检查日期。

$sql = mysql_query("select Patients.*, IF(validto > NOW(), 'Valid', 'Invalid') AS status from Patients where ID like '%$term%'"); 

while ($row = mysql_fetch_array($sql)){ 
    echo 'ID: '.$row['ID']; 
    echo '<br/> First Name: '.$row['firstname']; 
    echo '<br/> Last Name: '.$row['lastname']; 
    echo '<br/> Valid Until: '.$row['validto']; 
    echo '<br/> Status: ' . $row['status']; 
    echo '<br/><br/>'; 
    } 
0

如果validto是一个日期,你可以用strtotime转换为一个时间戳(INT):

$validto = strtotime($row['validto']); 
$current_time = time(); 

if($current_time > $validto) { 
    echo 'invalid'; 
} else { 
    echo 'valid'; 
}