10/10/2018, 11:36

Cần giúp : Search trong database

em có 1 bảng database như sau :
username points
aa 9
...
bb 5

E muốn làm 1 form search đơn giản. mà trong đó ta có thể search cùng lúc nhiều username .
VD : Search : aa, bb
KQ : aa = 9
bb = 5

Đây là code của em nhưng nó không được. vẫn chỉ search được từng username thôi
Code:
<html>
    <head>
        <title>Search the Database</title>
    </head>
 
    <body>
    <form action="search.php" method="post">
     Search: <input type="text" name="term" /><br />
    <input type="submit" name="submit" value="Submit" />
    </form>
    </body>
</html>
Code:
<?php
$hostname = "***x"; 
$data_username = "***x"; 
$data_password = "***x"; 
$data_basename = "***x";

mysql_connect($hostname, $data_username , $data_password );
mysql_select_db($data_basename );



$term = array( $_POST["term"] );

foreach ( $term as $test )
{

$sql = mysql_query("select * from members where username like '%$test%'");

while ($row = mysql_fetch_array($sql)){
	echo '<br/> USERNAME: '.$row['username'];
	echo '<br/> POINTS: '.$row['points'];
	echo '<br/><br/>';
	}
}

?>
nhoemzx viết 13:41 ngày 10/10/2018
Code:
// Return an array from $_POST["term"]
$term = explode(',',$_POST["term"]);
Note: $_POST["term"] cần phải theo dạng: name1,name2,name3,name4...
nhoemzx viết 13:50 ngày 10/10/2018
In addition:
Nếu bạn dùng: $term = array( $_POST["term"] );
thì $term sẽ là, $term => $term["0"] = 'aa, bb' . Nên khi bạn dùng foreach cho array này, nó chỉ có 1 key và sẽ trả về aa, bb và SQl của bạn sẽ là:
Code:
select * from members where username like '%aa, bb%'"
Nên nó sẽ chỉ trả về 1 kết quả. Nếu dùng $term = explode(',',$_POST["term"]) thì $term sẽ là:
$term => $term[0] = 'aa';
$term[1] = 'bb';
và SQL của bạn sẽ work theo như cách bạn nghì là, loop qua từng key của array.

Hope it helps,
shiva1990 viết 13:42 ngày 10/10/2018
Được gửi bởi nhoemzx
In addition:
Nếu bạn dùng: $term = array( $_POST["term"] );
thì $term sẽ là, $term => $term["0"] = 'aa, bb' . Nên khi bạn dùng foreach cho array này, nó chỉ có 1 key và sẽ trả về aa, bb và SQl của bạn sẽ là:
Code:
select * from members where username like '%aa, bb%'"
Nên nó sẽ chỉ trả về 1 kết quả. Nếu dùng $term = explode(',',$_POST["term"]) thì $term sẽ là:
$term => $term[0] = 'aa';
$term[1] = 'bb';
và SQL của bạn sẽ work theo như cách bạn nghì là, loop qua từng key của array.

Hope it helps,
ok. thanks bạn nhiều nhé. mình làm đc rồi. thanks u so much !!!!
shiva1990 viết 13:36 ngày 10/10/2018
Bạn ơi nhân tiện cho mình hỏi . nếu mình lại muốn search theo kiểu này thì sao :
VD :
aa
bb
Nghĩa là nhập văn bản theo từng dòng. không phải theo kiểu aa,bb
shiva1990 viết 13:44 ngày 10/10/2018
Mình đã dùng thế này : $term = explode("\n",$_POST["term"]);
nhưng vẫn không được
nhoemzx viết 13:52 ngày 10/10/2018
Được gửi bởi shiva1990
Bạn ơi nhân tiện cho mình hỏi . nếu mình lại muốn search theo kiểu này thì sao :
VD :
aa
bb
Nghĩa là nhập văn bản theo từng dòng. không phải theo kiểu aa,bb
Code:
//Joint tat ca user vào 1 string
$username_list .= $_GET["aa"].' ';
$username_list .= $_GET["bb"].' ';
$username_list .= $_GET["cc"].' ';
$username_list .= $_GET["dd"].' ';

//Tạo array cho usernames
$username_array = explode(' ',$username_list);

//bây giờ dùng foreach như bên trên thôi
shiva1990 viết 13:40 ngày 10/10/2018
Được gửi bởi nhoemzx
Code:
//Joint tat ca user vào 1 string
$username_list .= $_GET["aa"].' ';
$username_list .= $_GET["bb"].' ';
$username_list .= $_GET["cc"].' ';
$username_list .= $_GET["dd"].' ';

//Tạo array cho usernames
$username_array = explode(' ',$username_list);

//bây giờ dùng foreach như bên trên thôi
Mình làm đc rồi để thế này thì lại đc
$term = explode("\r\n",$_POST["term"]);
Cậu có rảnh không. mình muốn nhờ cậu viết giúp mình 1 soft. mình sẽ trả công cho cậu. có gì liên hệ mình nhé : YM : rongtrang_90
shiva1990 viết 13:49 ngày 10/10/2018
Nếu mình muốn tính tổng số point trong các username đã nhập vào để tìm thi sao nhỉ
nhoemzx viết 13:37 ngày 10/10/2018
Tạo một variable để hold total points:
Code:
$totalPoints = 0;

//Trong mỗi loop array từ SQl result, add số points của username đó nào cái variable ở phía trên.
$totalPoints =+ $row['points'];
Bài liên quan
0