2014-05-15 3 views
0

У меня есть меню навигации и с помощью $ _GET [] для отображения динамических подписок в меню навигации. Как я могу сохранить число от добавления еще более одного a, b или c? когда он был нажат один раз.

<li><a href="?p=1">Link 1<a/> 
echo $output; 
</li> 
<li><a href="?p=2">Link 2<a/> 
echo $output; 
</li> 

<li><a href="?p=3">Link 3<a/> 
echo $output; 
</li> 

$page_id = $_Get['p']; 

if (($page_id ==1) OR($page_id==2) OR ($page_id==3)){ 
$output='<li><a href="?p='.$page_id.'a">sublink 1</a></li> 
<li><a href="?p='.$page_id.'b">sublink 2</a></li> 
<li><a href="?p='.$page_id.'c">sublink 3</a></li>'; 

}

, что я хочу для того чтобы достигнуть это? Р = 1,2 или 3 будет оставаться на? = 1а в верхней части и, когда второй подканал нажат он будет переходить к? Р = 1b из ? p = 1a, например. atm это работает как? p = 1 первая ссылка будет? p = 1a, и когда будет нажата вторая субблинка, она перейдет к? p = 1ab. как это предотвратить?

В настоящее время я использую

if ($page_id ==1){ 
$output='<li><a href="?p=1a">sublink 1</a></li> 
<li><a href="?p=1b">sublink 2</a></li> 
<li><a href="?p=1c">sublink 3</a></li>'; 

} 
if ($page_id==2){ 
$output='<li><a href="?p=2a">sublink 1</a></li> 
<li><a href="?p=2b">sublink 2</a></li> 
<li><a href="?p=2c">sublink 3</a></li>'; 

} 
if ($page_id==3){ 
$output='<li><a href="?p=3a">sublink 1</a></li> 
<li><a href="?p=3b">sublink 2</a></li> 
<li><a href="?p=3c">sublink 3</a></li>'; 

} 

Sloved проблему с помощью SUBSTR

if ($page_id==1) OR ($page_id==2) OR ($page_id==3)){ 
$subpage = $_GET['p']; 
$subpage = substr($subpage,0,1); 
$output = <li><a href="'.$subpage.'a">Link 1</a></li> 
} 
+0

вы можете быть более конкретным на конечный результат вы хотите –

+0

я редактировал свой пост, чтобы лучше объяснить, что я хочу для того чтобы достигнуть здесь. Надеюсь, он объяснит, насколько полезной будет информация. – user3616064

ответ

1

Попробуйте

<?php 
$output = array(); 
$page_id = isset($_GET['p'])? intval($_GET['p']) : '1'; 
if (($page_id ==1) OR($page_id==2) OR ($page_id==3)){ 

    $output[$page_id]= '<li><a href="?p='.$page_id.'a">sublink 1</a></li> 
      <li><a href="?p='.$page_id.'b">sublink 2</a></li> 
      <li><a href="?p='.$page_id.'c">sublink 3</a></li>'; 

}?> 

<ul> 
<li><a href="?p=1">Link 1<a/> 
<?php echo isset($output[1]) ? $output[1] : '';?> 
</li> 
<li><a href="?p=2">Link 2<a/> 
<?php echo isset($output[2]) ? $output[2] : ''; ?> 
</li> 

<li><a href="?p=3">Link 3<a/> 
<?php echo isset($output[3]) ? $output[3] : '';?> 
</li> 
</ul> 
+0

проблема повторения решена. Надеюсь, это то, что вам нужно. –

+0

Да, но я придумал другое решение, используя substr ($ string, 0,1), предел его до 1, прежде чем использовать page_id agian, и это устранило проблему, которая у меня была. – user3616064

0

Почему бы тебе просто не пойти со вторым $ _GET параметр? Это было бы намного более чистым aproarch.

Как пример:

$page=intval($_GET['p']); 
if(isset($_GET['subpage'])){ 
    $subpage=htmlspecialchars($_GET['subpage']); 
} 

Таким образом, вы бы избежать вашей проблемы, а также имеют более чистый код.

Также вы должны ввести код в Cross-Site Scripting (XSS), так как ваш код уязвим.

+0

им не следует за вами здесь, в этом бывшем, не могли бы вы объяснить это лучше? im осознает недостатки безопасности. я имею в виду, как остановить увеличение от его щелчка один раз. – user3616064

+0

Используйте второй параметр из подстраницы. Например: Link Current