2

PHPを始めてからずっと疑問に思っていました。一部のサイトでは、フィルタリング オプションを使用しています。これらのフィルターの一部は完全にランダムな場合があります。たとえば、誰かが閲覧products.php?c=1&p=1&s=100している可能性があります。この例でcは、 がカテゴリ、pがページ、sが開始価格であるとします。

閲覧しているユーザーがハイパーリンクを使用して開始価格を変更したり、次のページに移動したりした場合、1 つの$_GET[]変数のみを変更し、他の変数はそのままにしておくにはどうすればよいでしょうか。PHP に現在の URI を取得するための小さなスクリプトがありますが、その変数だけを変更し、他の変数を変更せずにページを更新する方法がわかりません。substr()strpos()、およびを見ましたが、ereg_replace()まったくわかりません!

これがばかげた質問である場合は本当に申し訳ありません。これを修正できる非常に簡単なものを見逃したように感じますが、本当に立ち往生しています。

よろしくお願いします!マイク。

4

2 に答える 2

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/>

他の変数と同じです。

于 2013-06-30T15:21:20.987 に答える
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>

すべてのリンクを入力するのは大変です。次のように、1 つの値の変更を処理する PHP 関数を作成できます。

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

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

    return $url;
}

html は次のようになります。

<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>
于 2013-06-30T15:22:16.160 に答える