2011-10-25 9 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

質問に対する回答はありませんが、SQLインジェクション攻撃を防ぐために必ず** [mysql_real_escape_string()](http://nl.php.net/mysql_real_escape_string)を使用する必要があります。また、参照してください:http://nl.php.net/manual/en/security.database.sql-injection.php – Carpetsmoker

+0

Thnaksみんな、基本的に私は検索して結果が表示されます研修生に入力することができます。私は再び練習に入ることができますが、結果は表示されません – James

答えて

7

するとページの読み込み結果とを、あなたも質問「リクルーター検索すると、「タグ」のサイドバーを読み込みます君は?"そのサイドバーの入力ボックスには、「Enter name」と「Enter selected industry」と入力します。これら両方の入力の「名前」属性は「検索」なので、「検索」という名前の複数のフィールドを投稿しています。

このバグを修正するには、サイドバーの入力の名前を変更するだけです。あなたは間違いなく入力をサニタイズする必要があります(他の人が指摘しているように)。

+0

私はそれらを変更しましたが、同じ問題を抱えています。表示された検索結果がなく、入力にテキストを入力すると検索結果が返されますが、結果が表示され、右の3列目の上の入力にテキストを入力すると結果が表示されません。 – James

+1

まだ名前= "検索"の2つの入力がページにあります。 –

+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."%'"; 
関連する問題