2013-10-07 3 views
0

방금 ​​PHP와 MYSQL을 배우려고 시작했으며 웹 페이지 검색 엔진을 만드는 데 필요한 자습서를 따르고 있습니다. 그러나 양식을 제출할 때 결과가 반환되지 않는 문제가 발생했습니다. 어디서 문제가 발생했는지, 문제를 해결하고 해결할 곳이 어디인지, 그래서 내 문제를 게시 할만한 가치가 있다고 생각했습니다. 바라건대 누군가 미리 도와 줘서 고맙습니다.왜이 양식이 결과를 반환하지 않습니까?

PHP

<?php 

    mysql_connect("localhost","root","123")or die("Could not connect to Db"); 
    mysql_select_db("members") or die("Could not find db"); 

if(isset($_POST['submit'])){ 
    $searchq = $_POST['submit']; 
    $searchq = preg_replace("#[^0-9a-z]#i","",$searchq); 
    $query = mysql_query("Select * FROM memberlist WHERE Fname LIKE '%$searchq%' OR Lname LIKE '%$searchq%' ") or die(mysql_error()); 
    $count = mysql_num_rows($query); 


if($count == 0){ 
    $output = "No results were found, sorry."; 
} 

else{ 
    while($row = mysql_fetch_array($query)){ 
     $firstname = $row['Fname']; 
     $lastname = $row['Lname']; 
     $output .= "<div>".$firstname." ".$firstname."</div>"; 
    } 
} 
} 

?> 

HTML

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Search</title> 
</head> 
<body> 

<form action="index.php" method="post"> 
<input type="text" name="searchfname" placeholder="Enter first name"> 
<input type="text" name="searchlname" placeholder="Enter last name"> 
<input type="submit" name="submit" value="Submit"> 
</form> 

<?php print($output);?> 

</body> 
</html> 
+1

(1) mysql_로 *이 기능은 사용되지 않으며 사용할 수 없습니다. 최신 PDO 또는 mysqli 함수를 사용하는 자습서를 찾거나 PHP의 차기 버전에서 분실 될 것입니다. PDO와 mysqli는 SQL 삽입을 방지하는 매개 변수를 사용할 수도 있습니다. (2) 어디에서 깨지나요? '결과가 없다'고 말했거나 다른 결과를 출력합니까? 결과를 찾지 못했다면 쿼리를 반향시키고 mysql 클라이언트에 직접 넣어보십시오. – aynber

+0

@Jack : 위의 목록은 같은 파일에 있거나 다른 파일에 있습니까? – geomagas

답변

6

당신은 양식이 제출 된 경우 확인 $_POST['submit']을 사용할 수 있지만 모든 양식 값을 저장하지 않습니다. 별도의 양식 값은 해당 이름으로 액세스 할 수 있습니다.

첫 번째 텍스트 상자의 값으로는 $_POST['searchfname']을 사용하고 두 번째 텍스트 상자에는 $_POST['searchlname']을 사용하십시오.

코드는 다음과 같이 작성해야합니다.

$searchqf = $_POST['searchfname']; 
$searchql = $_POST['searchlname']; 
$searchqfreplace = preg_replace("#[^0-9a-z]#i","",$searchqf); 
$searchqlreplace = preg_replace("#[^0-9a-z]#i","",$searchql); 
$query = mysql_query("Select * FROM memberlist WHERE Fname LIKE '%$searchqf%' OR Lname LIKE '%$searchql%' ") or die(mysql_error()); 
$count = mysql_num_rows($query); 

이러한 쿼리 작성 방법은 매우 안전하지 않으며 SQL injection에 취약합니다.

문제 해결 방법을 요청하는 중입니다. echoprint_r을 조사하고 싶을 것입니다.

+0

위대한 답변 주셔서 감사합니다,하지만 더 많은 문제가있는 것 같습니다. http://pastebin.com/UadVCPEY –

+1

대문자를 확인하십시오. 실제 열 이름은 FName이지만 코드에서는 Fname을 사용합니다. 그래서'$ row [ 'FName']'으로 변경하십시오. 또한 이것은 매우 기본적인 PHP/MySQL 지식입니다. 당신은 아마도 단지 실험을 통해 더 많은 것을 배우고 좋은 자습서를 따라야합니다. –

+0

문제가되지 않습니다.이 질문을 닫고 문제 해결에 도움이된다면 대답 중 하나를 해결 방법으로 표시하는 것을 잊지 마십시오! –

0

제출 단추에 $ searchq 변수를 지정했습니다.

$searchq = $_POST['searchfname']; 

또는

$searchq = $_POST['searchlname']; 

또는 두 가지 모두에이 라인

$searchq = $_POST['submit']; 

변경 : 당신은 사용할 수 없습니다

$searchq = $_POST['searchfname'].$_POST['searchlname']; 
0

$ searchq = $ _POST [ '제출'] ; 값이 이름이 게시되고 있지 않기 때문에

당신이 중 하나를 사용해야합니다 제출되는 다음 ....

$ searchq = $ _POST [ 'searchfname'];

또는

$ searchq = $ _POST [ 'searchlname'];

0

코드에서 양식의 값 대신 '제출'값을 찾고 있습니다.

$searchq = $_POST['searchfname']; 
$searchq2 = $_POST['searchlname']; 

및 쿼리 :

함께 $searchq = $_POST['submit']; 교체 첫째

Select * FROM memberlist WHERE Fname LIKE '%$searchq%' OR Lname LIKE '%$searchq2%' 
0

,

중 하나는 searchfname 또는 searchlname 또는 두 가지 모두로 검색 할 수 있습니다.

둘째, 같은 수정이 First page(Page with FORM)에서

if($count == 0){ 
    $output = "No results were found, sorry."; 
} 
else{ 
    $output = ''; 
    while($row = mysql_fetch_array($query)){ 
     $firstname = $row['Fname']; 
     $lastname = $row['Lname']; 
     $output .= "<div>".$firstname." ".$firstname."</div>"; 
    } 
Second page(where database is fetched)에서 세 번째로

, 사용 print $output 아니라, $count = mysql_num_rows($query); 후.

당신이 첫 페이지에 결과를 표시 할 경우, jQuery를/아약스 기능을 사용

+0

DB가 동일한 페이지에서 가져옵니다. –

+0

그렇다면 나도 일부 버전을 만들었습니다. 체크 아웃하십시오. –

관련 문제