Eğer-deyim: 2 GET değişkeni çekin nasıl

4 Cevap php

Nasıl bu benim 2 değişkeni çekmek için alabilirim? (Ben zaten switch kurulum var)


<body id="<?php if (! isset($_GET['page'])) { echo "home"; } else { $_GET['page']; echo $page; } ?>">

Ben gelen sayfaları çeker bir switch bildirimde

index.php?page=#####

ve ben sadece benim switch bu parçasını ekledi:

index.php?page=####&section=#####

Şu anda, ben sayfada isem = fotoğraflar, benim kod varlık biter:

<body id="photos">

Ben bunu yapmak gerekir, böylece herhangi bir link bu page=photos&section=cars bu aynı kimliği kullandığı gibi üzerinde "bölümleri" değişkeni varsa:

<body id="photos">

4 Cevap

Her şeyden önce, bir HTML öğesi yalnızca bir kimliği olabilir. Eğer bir melez (örneğin sayfa-bölüm) oluşturmak istiyorsanız Yani eğer böyle bir şey yapabilirsiniz:

<body id="<?php echo isset($_GET['page']) ? $_GET['page'] : "home"; echo isset($_GET['section']) ? ("-".$_GET['section']) : ''; ?>">

PHP Üçlü Operatörlerin hakkında daha fazla bilgi için (ve:? Ben echo deyiminde kullanılan) bakın http://php.net/manual/en/language.operators.comparison.php

Ben sorunuzu anlamak tamamen emin değilim, ama sen yapıyoruz burada:

$_GET['page']; echo $page;

Ne oluyor sizce? Sen hiçbir tanımı olan bir değişkeni yankılanan ediyoruz. Eğer url geçti değerini yankı istiyorsanız, sadece yapın:

echo $_GET['page'];

Alın varible dile, değişken o sayfaya geçildi hangi onun yöntemini almak anlamına gelmez. Mümkün yöntemleri (url) olsun ya da sonrası (değil).

Bu olmaz bir bölüm tanımlı ise onu bulmak için eğer? yani

if(isset($_GET['section'])){
     //create div
} elseif(isset($_GET['page']){
    //create fallback div
}

Okunabilmesi için vücudun id niteliği dışında PHP kodu taşımak ve kullanmak else if. Kod $_GET girişini sterilize veya doğrulayarak enjeksiyonu savunmasız değildir emin olun. Örneğin:

<?php
    function isValidID($x) {
        return preg_match('/^[A-Z][-_.A-Za-z0-9]$/i', $x);
    }

    if (isset($_GET['section']) && isValidID($_GET['section'])) {
        $bodyID = $_GET['section'];
    } else if (isset($_GET['page']) && isValidID($_GET['page'])) {
        $bodyID = $_GET['page'];
    } else {
        $bodyID = 'home';
    }
?>
...
<body id="<?php echo $bodyID; ?>">

Seçenek olarak,

<?php
    function isValidID($x) {
        return preg_match('/^[A-Z][-_.A-Za-z0-9]$/i', $x);
    }
    $bodyID='home';
    foreach (array('section', 'home') as $key) {
        if (isset($_GET[$key]) && isValidID($_GET[$key])) {
            $bodyID = $_GET[$key];
            break;
        }
    }
?>
...
<body id="<?php echo $bodyID; ?>">

Bu durumda, ben ilk, unrolled sürümünü kullanmak istiyorum. Eğer fazla giriş tuşları kontrol etmek olsaydı, döngü tabanlı bir yaklaşım kullanır.

Eğer karar verirseniz sayfa & de istiyorum ID bölümünde, gibi bir şey deneyebilirsiniz:

<?php
    function isValidID($x) {
        return preg_match('/^[A-Z][-_.A-Za-z0-9]$/i', $x);
    }

    if (isset($_GET['page']) && isValidID($_GET['page'])) {
        $bodyID = $_GET['page'];
    } else {
        $bodyID = 'home';
    }
    if (isset($_GET['section']) && isValidID($_GET['section'])) {
        $bodyID .= '_' . $_GET['section'];
    }
?>
...
<body id="<?php echo $bodyID; ?>">