2012-08-23 2 views
0

모든 결과가 반환 된 "first-pass"로 시작하는 PHP 결과 페이지가 있습니다. 카운티의 모든 피자 장소를 검색 한 목록입니다. PHP isnull 첫 번째 패스/두 번째 패스 플래그

SELECT * from pizzeria; 

그런 다음 사용자가 더 많은 세부 사항으로 드릴 다운 할 수 있습니다 ... 페이지도 (URL을 전달) 사용자가 특정 지역을 선택할 수있는 CSS 드롭 다운 메뉴가 있습니다

href="samepage.php?neighborhood=HELLSKITCHEN" 

을하는 나는 $_GET[]

SELECT * from pizzaria WHERE nbh=(the $_GET[] variable sent in the URL); 

을 선택하지만 자신을 호출하는 페이지를하고 싶습니다 내가 상단에 header("Cache-Control:no-cache");을 한 후 다음 쿼리를 변경합니다.

은 내가 isnull() 기능을 가진 최초의 패스 또는 첫 번째 방문 플래그 변수를 만들려고 해요 다음 $firstpass 변수가 다시로드에 충실하지 않습니다하지만

if (is_null($firstpass)) { 
    $query = SELECT all the records from the pizzaria table 
} else { 
    $query = SELECT only the records WHERE I $_GET[] the value from the reloaded URL 
} 

것 같다. 그 변수를 SESSION해야합니까? (그래도 계속해서 재설정하는 문제가 있음)

또는 다른 접근 방식을 구현할 수 있습니까?

"헤더가 이미 전송 된"것을 방지하기 위해 별도의 두 번째 페이지와 자바 스크립트로 리디렉션 할 수 있음을 알고 있지만 클라이언트로의 왕복을 피하려고합니다.

새로운 정보로 다시로드하는 것이 가장 좋은 방법입니까? 여기 PHP를 처음 접하십니까? 감사

+1

"피자 가게"에는 "a"가 하나뿐입니다. – nickb

+0

lol oops - 와우 와트 와우 이탈리아 나는 – user1349089

답변

1

어쩌면 내가 당신의 문제를 이해하지 않았다 그런데 왜 당신은하지 않을 것입니다 :

if (!isset($_GET['example'])) { 
    $query = 'SELECT * FROM pizzerias'; 
} else { 
    $query = 'SELECT * FROM pizzerias WHERE pizzeria = \'.mysql_real_escape_string($_GET['example']).\' LIMIT 1'; 
} 

를 첫 번째 패스에서, 사용자가 선택하면 $ _GET 변수 만 설정되어 있는지 것 때문에 피자 리아?

+0

허 ... 나는 그것을 좋아하고 시도 할 것이다. 감사! – user1349089

+0

경고 :이 방법은 SQL 주입에 취약합니다. 사용하지 마십시오! –

+0

@ user1349089'pizzerias'는 SQL 취약점이있는'pizzeria'가 될 필요가 있습니다. 하나의 결과 만 표시하는 반면, 전체 이웃의 결과를 원합니다. 나는 xavier Z가이 대답에 실패했다고 생각한다. 이것이 당신의 결정을 "대답"이라고 생각해야 할 것입니다. –

0

다음은 좀 더 구체적인 대답입니다.

주의 :mysql_* 기능이 감가 상각되므로, 대신 PDO를 사용하십시오. 필자는 반 게으므로 PDO를 사용하지 않고 있습니다.

//Connect to database and define table up here 
... 
if(!isset($_GET['neighborhood')){ 
    $q = "SELECT * FROM pizzeria;"; 
}else{ 
    $q = sprintf("SELECT * FROM pizzeria WHERE nbh=%s",mysql_real_escape_string($_GET['neighborhood'])); 
} 
$query = mysql_query($q); 
foreach($row = mysql_fetch_array($query,MYSQL_ASSOC){ 
    //display the updated view of restaurants. 
} 

해당 웹 2.0 효과에는 jQuery을 사용하는 것이 좋습니다. 드롭 다운 메뉴에서 선택하면 마술처럼 페이지가 다시로드되지 않고 이동하는 것이 좋습니다.

+0

당신이 그 문제에서 벗어 났다고 생각하지 않습니까? 여기 아무 곳에서나 mysql_ * 함수가 없습니다! –

+0

그는 PHP를 사용하고 있습니다. 적어도 내 방법은이 특정 주제에 대한 지식을 보여줍니다. –

+0

ok 여기에 게으른 요소가 있습니다 (그 더 많은 타이밍). PDO를 사용하지 않지만 mysql_real_escape_string() 함수를 추가했습니다. 알았다. 감사 – user1349089

관련 문제