

HTML+CSSおよびphpの初心者です。  
$_GET変数で得た値が1であれば１の部分を赤色に、  
2であれば2の部分を赤色に、3であれば3の部分を赤色に変更したいと思っております。  
詳しい方、ご教示ください。

index.php  

[code]

    <?php
    
    $number = $_GET['id'];
    
    print '<ul>';
    print '<li class="light">1</li>';
    print '<li>2</li>';
    print '<li>3</li>';
    print '</ul>';
    
    ?>
    
[/code]

index.css  

[code]

    .light{
        color: #ff0000;
    }
    
[/code]

[![結果](https://i.stack.imgur.com/liQcR.png)](https://i.stack.imgur.com/liQcR.png)


CC BY-SA 3.0
2015-09-18T14:58:16.380
16756
2015-10-12T11:39:02.130
7699
question
php html css
HTMLで出力される文字色を、$_GET変数の値によって変更したい。


正直色々なやり方が考えられますが、愚直にやると次のような感じになるかと思います。

[code]

    <?php
    $number = $_GET['id'];
    
    echo '<ul>';
    for ($index = 1; $index <= 3; $index++) {
        echo '<li' , ($index == $number ? ' class="light">' : '>') , $index , '</li>'; 
    }
    echo '</ul>';
    
[/code]

[三項演算子](http://php.net/manual/ja/language.operators.comparison.php)
を使って、for文のループ番号 `$index` と `$number` を比較して一致したときのみ `class="light"`
が出力されるようになっています。


CC BY-SA 3.0
2015-09-18T16:49:03.873
16758
2015-09-18T16:49:03.873
10492
16756
answer


ページごとに振る舞いを変えたい箇所が複数ある場合は、  
$_GET['id']で得た値をbodyのクラス名に出力すると便利です。

[code]

    $bodyClass = 'page' . $_GET['id'];
    
[/code]

としておいて、

[code]

    <body class="<?php echo $bodyClass;?>">
    
[/code]

とすれば、あとは条件に合わせたcssを静的に書いておけばバッチリです。

[code]

    .page01 li:nth-child(1),
    .page02 li:nth-child(2),
    .page03 li:nth-child(3) {
        color: red;
    }
    
[/code]


CC BY-SA 3.0
2015-10-12T11:39:02.130
17558
2015-10-12T11:39:02.130
12727
16756
answer