2013-01-16 3 views
0

나는 쿼리를 수행 한 다음 그 답을 상자에 넣는 방법을 배우기 위해 간단한 것을 시도하고 있습니다. 나는 HTML의 다음과 같습니다 파일이 있습니다PHP의 텍스트 상자에 에코하기

<html> 
<head> 
<title>Test</title> 
</head> 
<body> 
<form action="results.php" method="post">Search: <input name="term" type="text" /><br />  
<input name="submit" value="Submit" type="submit" /> 
<p>Answer: <input name="answer" type="text" /></p> 
</form> 
</body> 
</html> 

그리고 PHP 코드입니다 :

그래서
<?php 
$hostname = 'host.com'; 
$username = 'ratetable'; 
$password = 'mypassword'; 
$term = (int) $_GET['term']; 

try 
{ 
    $db = new PDO("mysql:host=$hostname;dbname=ratetable", $username, $password); 
    //echo 'Connected to database<br />'; 

    foreach($db->query('SELECT * FROM rates WHERE mileage<= ' . $term . ' ORDER BY mileage DESC LIMIT 1') as $row) { 
     echo "<input type='text' name='answer' value='" . $row['ratepermile'] . "'>"; 
    } 
}   
catch (PDOException $e) { 
     echo $e->getMessage(); 
     throw($e); 
    } 
?> 

나는 '대답'으로, 데이터베이스, ratepermile 필드를 넣어하려고 해요 텍스트 상자. 내가 얻은 것은 스크린이 지워지지만 형태와 결과가 없다는 것입니다. 심지어 '데이터베이스에 연결됨'에코 라인을 주석 처리하고 데이터베이스에 존재하는 것을 사용합니다.

어떻게 양식을 화면에 유지하고 텍스트 상자에 표시 할 수 있습니까?

감사합니다.

+0

빈 페이지가 표시됩니까? – Shoe

+2

폼은'method = "post"'를 사용하고 있습니다 만, PHP는'$ _GET [ 'term']'을보고 있습니다. –

+0

@RocketHazmat이 말했듯이 GET 대신 POST 매개 변수를 찾아야합니다. 이상적으로 디버깅 할 때마다 무엇을 얻었는지 기록해야합니다. 특히 귀하의 쿼리 우리는 모든 행 등 반환 또한 귀하의 웹 서버 오류 로그를보고 거기에 비정상적인 볼 수 있는지보십시오. – rnk

답변

3

귀하의 양식은 POST 데이터입니다 (method="post"). 귀하의 PHP 스크립트는 $_GET을 찾고 있습니다.

대신 $_POST에서 데이터를 가져와야합니다.

$term = (int) $_POST['term']; 
+0

오 이런, POST LOL 때문에 GET이 필요하다고 생각했습니다. 양식이 사라지고 대답 상자 만 표시되고 입력은 표시되지 않고 제출됩니다. 내가 어떻게 안정시킬 수 있니? 이전에 div (제출 버튼 아래)를 사용하여 뭔가를 시도했는데 제대로했다고 생각하지 않습니다. Like :

(the text box to echo to)
Shawn

+0

@Shawn : 양식을 제출하면 실제로 새 페이지 *로 이동합니다. 원하지 않으면 AJAX를 사용하여 양식을 게시하십시오. –

0

위의 POST 문제뿐 아니라. 페이지에 양식을 보관하고 페이지를 다시로드하지 않으려면 AJAX을 조사해야합니다.

0

이러한 혼란을 피하기 위해 $ _REQUEST를 사용할 수 있습니다. method = "post"또는 method = "get"을 사용하든 관계없이이 값을 가져올 수 있습니다.