2013-08-03 57 views
0

我想做一個簡單的搜索框旁邊的標籤組,搜索框只用於搜索電話類型,我做了這個代碼和除搜索框外的每件事情工作。我這個錯誤: 注意:未定義指數:搜索php簡單的搜索框與標籤

<form action="" method="post" name="form" > 
<body> 
<script> 
$(function() { 
$("#xx").tabs(); 
}); 
</script> 


<div id="xx" > 
<ul> 
<li><a href="#all">all phones</a></li> 
<li><a href="#small">small</a></li> 
<li><a href="#large">large</a></li> 
<li><a href="#search">search:<input type="text" name="search"> 
</a></li> 
</ul> 

<?php 
include 'db.php'; 
?> 

<div id="all"> 
<?php 
$res = mysql_query("SELECT * FROM table1"); 
while($row = mysql_fetch_array($res)) 
{   
echo 'phone name'.$row[2]; 
echo 'phone type'.$row[3]; 
echo 'phone sise'.$row[4]; 
} 
?> 
</div> 


<div id="small"> 
<?php 
$res2 = mysql_query("SELECT * FROM table1 WHERE phonesize = 'small' "); 
while($row = mysql_fetch_array($res2)) 
{   
echo 'phone name'.$row[2]; 
echo 'phone type'.$row[3]; 
echo 'phone sise'.$row[4]; 
} 
?> 
</div> 

<div id="large"> 
<?php 
$res3 = mysql_query("SELECT * FROM table1 WHERE phonesize = 'large' "); 
while($row = mysql_fetch_array($res3)) 
{   
echo 'phone name'.$row[2]; 
echo 'phone type'.$row[3]; 
echo 'phone sise'.$row[4]; 
} 
?> 
</div> 


<div id="large"> 

<?php  
$search = $_POST['search']; 
$res4 = mysql_query("SELECT * FROM table1 WHERE phonetype = '$search'"); 
while($row = mysql_fetch_array($res4)) 
{   
echo 'phone name'.$row[2]; 
echo 'phone type'.$row[3]; 
echo 'phone sise'.$row[4]; 
} 
?> 
</div> 


</form> 
+1

可以通過使用if(isset($ _ POST ['search'])來避免此錯誤)'但是這只是一個問題,你的代碼很容易受到sql注入的影響,你必須使用PDO或MySQLi來獲得更好的編碼和安全性。 – 2013-08-03 01:24:03

+0

將你的輸入轉換爲mysql,這段代碼基本上是SQL注入友好代碼的一個例子 – zajd

回答

1

第一次形式加載,$ _ POST [「搜索」]不存在,那是什麼導致的通知。直到你實際發佈到該變量存在的表單。您應該檢查該變量的存在,執行您想要的用戶提交表單後執行代碼之前,這個喜歡:

if(isset($_POST)) { 
    // The form was posted. 
    // Write your code here to execute once the user posts the form. 
] 
0

好......... 第一次表單加載,$ _POST ['search']不存在,這就是通知的原因。直到你實際發佈到該變量存在的表單。你應該在執行你想要在用戶提交表單之後執行的代碼之前檢查該變量是否存在,如下所示: