2013-06-30 3 views
2

저는 PHP를 시작한 이래로 얼마 동안 궁금해했습니다. 일부 사이트에서는 필터링 옵션을 사용합니다. 때로는 이러한 필터 중 일부는 완전히 무작위입니다. 예를 들어 다른 사람이보고있을 수 있습니다. products.php?c=1&p=1&s=100이 예에서는 p이 페이지이고 s이 시작 가격이라는 가정하에 c이 카테고리라고 가정합니다.

보기 사용자가 시작 가격을 변경하거나 하이퍼 링크를 사용하여 다음 페이지로 넘어갈 경우 다른 사람은 그대로두고 변수는 $_GET[] 개로 어떻게 변경됩니까? 그러나 현재 URI를 얻기 위해 PHP에 작은 스크립트가 있지만, 다른 사람들은 그대로두고 페이지를 새로 고치는 동안 그 변수 만 어떻게 변경하는지 알 수는 없습니까? substr(), strpos()ereg_replace()을 살펴 봤는데 알아낼 수 없습니다.

정말 바보 같은 질문이라면 정말 죄송합니다. 정말 쉽게 해결할 수있는 뭔가를 놓친 것처럼 느껴지지만 진정으로 갇혀있는 사람입니다.

미리 감사드립니다. 마이크.

+0

큰 응답의 감사들! 내가 겪고있는 실제 문제는 역사적인 사건, 통과 한 사건 등을 보여주는 웹 사이트의 페이지가 있다는 것입니다. 이러한 사용자는 페이지간에 이동할 수 있고 정렬이 가능할 때 필수 항목은 아닙니다. 기본 URL은'history.php? p = 1 & v = 1'입니다. 그러나 사용자가 정렬을 활성화하면 정렬 변수가 URL 끝에 추가되기를 원합니다. 따라서 사용자가 이미 처리 한 기록의 페이지를 나타내는 'v = 3'에있는 경우 추가해야합니다 'sort = asc'를 URI의 끝에 추가합니다. –

답변

1

양식 또는 URL에 있는지 여부에 따라 다릅니다.

<form> 
    <input type="p" value="1" /> 
    <input type="c" value="1" /> 
    <input type="s" value="100" /> 
    <input type="submit" /> 
</form> 

의 URL 기반 방법의 문제는 사용자가 설정해야 할 것입니다 : 당신이 형태의 경우 사용자들이 변경하려는 입력 필드를 변경하고 다른 사람이 남아 있기 때문에

은 간단합니다 이런 각각의 URL :

<a href="?p=1&c=1&s=1">$1 Starting Price</a> 
<a href="?p=1&c=1&s=10">$10 Starting Price</a> 
<a href="?p=1&c=1&s=100">$100 Starting Price</a> 

당신이 가진 거라고는 다이나믹하게이 작업을 수행합니다 :

<a href="?p=<?php echo urlencode($_GET['p']) ?>&c=<?php echo urlencode($_GET['c']) ?>&s=1">$1 Starting Price</a> 

모든 링크에 대해 많은 타이핑이 필요합니다.

function genUrl($newKey, $newVal) { 
    $url = '?'; 
    foreach ($_GET as $key => $val) { 
     if ($url != '?') { 
      $url .= '&'; 
     } 

     $url .= urlencode($key) . '=' ($key == $newKey ? $newVal : urlencode($val)); 
    } 

    return $url; 
} 

을 그리고 당신의 HTML은 다음과 같을 것이다 :이처럼 하나 개의 값을 변경하는 처리하는 PHP 함수를 만들 수

<a href="<?php echo genUrl('s', 1) ?>">$1 Starting Price</a> 
<a href="<?php echo genUrl('s', 10) ?>">$1 Starting Price</a> 
<a href="<?php echo genUrl('s', 100) ?>">$1 Starting Price</a> 
+0

Chris, 코드를 약간 조작하여 함수에 키와 값을 전달하고 해당 매개 변수에서 $ _GET 변수를 만든 다음 필요한 URL을 생성했습니다. 감사! –

+1

좋은 코드이지만, =;) 뒤에 포인트가 없습니다. $ url. = urlencode ($ key). '='. ($ key == $ newKey? $ newVal : urlencode ($ val)); – Uxio

1

하이퍼 링크 위치를 변경하려는 변수로 설정하면됩니다. 그것은 현재 products.php?c=1&p=1&s=100이며 products.php?c=2&p=1&s=100로 이동 싶다면 다음 그것은 다른 변수와 동일하므로

<?php 

$_GET['c'] = $_GET['c']++; 

?> 

<a href='<?php echo "products.php?c={$_GET['c']}&p=1&s=100" ?>'>link<a/> 

처럼 앵커 태그가 필요 말.