2013-07-30 206 views
0

我有一個命令的問題不會給搜索中獲得結果空字段

Notice: Undefined index: q in C:\xampp\htdocs\Capstone - Copy\index.php on line 118

即使該字段爲空我爲這是唯一的問題,該網站的代碼在那裏,如果我不在我的搜索中沒有放置一個值,它會給出這個錯誤,我可以刪除當我重新加載站點時得到的值,所以它只會給出默認輸出,即整行和圖片,我會把打印屏幕該網站的屏幕截圖是該網站的默認視圖。

> <?php 
> 
>      $searchtext = $_GET['q']; 
> 
> 
>       $per_page =5; 
>       $pages_query = mysql_query("SELECT COUNT('PersonID') FROM persons"); 
>       $pages = ceil(mysql_result($pages_query,0)/$per_page); 
> 
>       $page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1; 
>       $start = ($page - 1) * $per_page; 
> 
> 
> $query=mysql_query("select * from persons where firstname like 
> '%$searchtext' or lastname like '%$searchtext' order by date desc 
> LIMIT $start,$per_page ");   while($test = mysql_fetch_array($query)) 
>   { 
>    $id = $test['PersonID']; 
> 
> 
> 
>         echo"<div class = content />"; 
>    echo"<img height=200 width=200 src='upload/". $test['Image'] ."'/>"; 
>    echo"" .$test['LastName']." "; 
>    echo"". $test['MiddleName']. " "; 
>    echo"". $test['FirstName']. ""; 
>    echo"<right> <a href ='view.php?PersonID=$id'>Edit</a></right>"; 
>    echo"<right> <a href ='del.php?PersonID=$id'>Delete</a></right>"; 
>         echo"</div>"; 
> 
> 
> 
>   } 
>    if ($pages >=1 && $page <= $pages) { 
>       for ($x=1; $x<=$pages; $x++) { 
>       echo ($x == $page) ? '<strong><a href="?page='.$x.'">'.$x.' </a></strong> ' : '<a 
> href="?page='.$x.'">'.$x.' </a>'; 
>       } 
>       } ?> 
> 
> 

screen shot screenshot2

,這裏是不會給一個錯誤的樣本結果,因爲有一個默認值

screenshot 3

回答

1

你想只運行查詢,如果$ SEARCHTEXT不爲null。

$searchtext = ''; 
if(isset($_GET['q'])) $searchtext = $_GET['q']; 
if($searchtext) { 
    //run query 
    //display results 
} else { 
    //display normal page 
} 

請記住,正如您現在這樣做,您需要SQL注入攻擊。請使用PDO並綁定值。

+0

如果$ searchText爲null,他希望運行該查詢。他的查詢將返回所有失蹤人員! –

1

那麼,如果我理解正確的話,你這個應該有所幫助:

更改此:$searchtext = $_GET['q'];

這樣:$searchText = isset($_GET['q']) ? mysql_real_escape_string($_GET['q']) : "";

WATCH OUT

請不要使用mysql_ *函數並且切換到mysqli_功能或PDO。 mysql_與php 5.5棄用,並不會被php> = 5.5支持。 除此之外,我應該提到,你的腳本對於mysql注入來說是脆弱的。在將數據插入數據庫查詢之前,請務必避開您的值!

我的代碼示例包含功能mysql_real_escape_string,這就像我告訴你棄用。如果你堅持使用mysql_ *,這至少可以保護你的應用程序。

相關問題