2011-10-25 71 views
0

我正在练习php mysql的搜索结果。我得到的唯一问题是搜索在返回结果中不一致。我的搜索结果不一致?为什么是这样?

请访问:在 '见习'

weezy.co.uk/newresults.php

类型在顶部的第一个搜索框。有时候,结果有时显示他们不会。我不明白吗?

我的HTML搜索框代码:

<form action="newresults.php" method="post" name="form"> 
<input type="text" id="search" name="search" 
size="30" value="" style="background- color:white; border: 
solid 1px #ffffff; height: 30px; font-size:19px; font-family: 
HelveticaNeue-Light; font-weight: 1; 
vertical-align:9px;color:#151515" 
onfocus="if(this.value == ''){this.value = 
'';this.style.color='#363D42'}" /> 
</div> 
</div> 
<div class="search"> 
<div class="search1"> 
<input type="text" 
id="searchterm" name="searchterm" size="25" value="" style="background- 
color:white; border: 
solid 1px #ffffff; height: 30px; font-size:19px; font-family: 
HelveticaNeue-Light; font-   weight: 1; 
vertical-align:9px;color:#151515" 
onfocus="if(this.value == ''){this.value = 
'';this.style.color='#363D42'}" /> 
</form> 

PHP代码:

<?php 

$conn = mysql_connect("", "", ""); 

if (!$conn) { 
echo "Unable to connect to DB: " . mysql_error(); 
exit; 
} 

{ 

$search = "%" . $_POST["search"] . "%"; 
$searchterm = "%" . $_POST["searchterm"] . "%"; 

} 

if (!mysql_select_db("weezycouk_641290_db1")) { 
echo "Unable to select mydbname: " . mysql_error(); 
exit; 
} 

$sql = "SELECT name,lastname,email 
    FROM test_mysql 
    WHERE name LIKE '$search%' AND lastname LIKE '$searchterm%'"; 

$result = mysql_query($sql); 

if (!$result) { 
echo "Could not successfully run query ($sql) from DB: " . mysql_error(); 
exit; 
} 

if (mysql_num_rows($result) == 0) { 
echo "No rows found, nothing to print so am exiting"; 
exit; 
} 


while ($row = mysql_fetch_assoc($result)) { 
echo '<br>'; 
echo '<br>'; 
echo '<div class="data1">'; 
echo $row["name"]; 
echo '</div>'; 
echo '<br>'; 
echo '<div class="data2">'; 
echo $row["lastname"]; 
echo '</div>'; 
echo '<br>'; 
echo '<div class="data3">'; 
echo $row["email"]; 
echo '</div>'; 
} 

mysql_free_result($result); 

?> 

谢谢你们!

詹姆斯

+1

请提供屏幕截图或阐述的搜索行为。在问题解决的时候,提供到问题的链接到您的网站并不会帮助任何人。 –

+3

我没有你的问题的答案,但我知道你应该**总是**使用[mysql_real_escape_string()](http://nl.php.net/mysql_real_escape_string)来防止SQL注入攻击。另请参阅:http://nl.php.net/manual/en/security.database.sql-injection.php – Carpetsmoker

+0

Thnaks家伙,基本上我可以在搜索中输入学员,并显示结果。那么我可以做我再次输入学员,没有结果将显示 – James

回答

7

当你的页面加载有结果,你还加载了“标签”栏一个问题:“想招聘者找到您?”该侧栏中的输入框填入“输入名称”和“输入所选行业”。这两个输入的“名称”属性是“搜索”,因此您发布了多个名为“搜索”的字段。

只需更改侧栏上输入的名称即可修复此错误。你也应该明确地对投入进行消毒(正如其他人已经注意到的那样)。

+0

我改变了他们,但仍然有同样的问题。如果没有显示搜索结果,我在输入中输入文本并返回搜索结果,但是如果显示结果,并且我在右侧第三列上方的输入中输入文本消失且没有结果显示!? – James

+1

页面上仍然有两个名称=“搜索”的输入。 –

+0

我的不好,我忘了底部的iput!非常感谢你们!非常感激! – James

1

我不知道这是否会解决你的问题,但你应该建立在这样的SQL查询:

$sql = ' 
    SELECT name, 
     lastname, 
     email, 
    FROM test_mysql 
    WHERE name LIKE %' . mysql_real_escape_string($_POST['search']) . '% 
     AND lastname LIKE %' . mysql_real_escape_string($_POST['searchterm']) . '% 
'; 

如果你想避免显示的情况下,用户的所有行会不补的输入值,使用这样的:

function makeWhereLike($column, $inputValue) 
{ 
    $wherePart = ''; 
    if ($inputValue) { 
     $wherePart = $column . ' LIKE %' . mysql_real_escape_string($inputValue) . '% '; 
    } else { 
     $wherePart = $column . ' IS NULL '; 
    } 
    return $wherePart; 
} 

$sql = ' 
    SELECT name, 
     lastname, 
     email, 
    FROM test_mysql 
    WHERE ' . makeWhereLike('name', $_POST['search']) . ' 
     AND ' . makeWhereLike('lastname', $_POST['searchterm']) . ' 
'; 
0

我很肯定在你提交这个表单的JS代码部分有一些邪恶的东西。我建议你尝试通过在那里添加一个传统的提交按钮来提交它,看看会发生什么。

每隔一秒查询回声“没有找到任何行,无法打印,因此正在退出”,虽然它在结果中不可见,因为它打印在#ffffff中。

+0

我刚刚摆脱了所有的js代码,并提交了一个提交按钮,但仍然有同样的问题。看起来,当有搜索结果,我想使用搜索字段,它返回一个空白页面,并摆脱我的一些HTML代码(右栏)。但是,如果没有结果,它会返回搜索结果。太混乱了!为什么是这样? – James

+0

你是否按照Derek Kurth的建议去做?这应该让你通过。 – budwiser

+0

但是现在它在我输入不在数据库中的信息时也是如此。现在发生了什么? – James

0

试试这个

$sql = "SELECT name,lastname,email 
FROM test_mysql 
WHERE name LIKE '%".$search."%' AND lastname LIKE '%".$searchterm."%'"; 
相关问题