![]() |
Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Tech (http://www.dsy.it/forum/forumdisplay.php?forumid=189)
-- [PHP] aiuto su uno script menu (http://www.dsy.it/forum/showthread.php?threadid=28922)
[PHP] aiuto su uno script menu
Ho un menu e mi serve che la voce del menu selezionata resti attiva.
Sto utilizzando PHP+CSS.
Il css è ok.
Per php sto usando questo script che funziona solo se nell'array come valore di $link metto nome.php, se invece ho un url del tipo nome.php?id=nomeid il link lo legge perchè mi apre la pagina, ma non mi attiva il css che resta su home (index.php), come mai?
PHP:
<?php
// definisce l'array di pagine
$pagine = array ('Home' => 'index.php','Servizi' => 'index.php?id=servizi');
// per ogni elemento dell'array di pagine
foreach ($pagine as $text => $link) {
// se sono nella pagina linkata
echo '<font';
if (substr($_SERVER['SCRIPT_NAME'],strrpos($_SERVER['
SCRIPT_NAME'],'/')+1) == $link) {
// aggiunge la classe css
echo ' class="attivo">';
}
// inserisce link e testo
echo '<a href="' . $link . '">' . $text . '</a></font>';
}
?>
code:
if (substr($_SERVER['SCRIPT_NAME'],strrpos($_SERVER[' SCRIPT_NAME'],'/')+1) == $link)
code:
if (basename($_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING']) == $link)

__________________
?
spe, nel tuo mancava una parentesi )
ma mi fa la stessa cosa della mia riga...
Hai ragione, l'ho corretto, grazie.
Allora stampa
code:
basename($_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING']) $link substr($_SERVER['SCRIPT_NAME'],strrpos($_SERVER[' SCRIPT_NAME'],'/')+1)

__________________
?
Me la riscrivi correttamente?
Non ci capisco nulla li e l'ho riscritta cosi, ma non va.
PHP:
if (basename($_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING'])
substr($_SERVER['SCRIPT_NAME'],strrpos($_SERVER['S
CRIPT_NAME'],'/')+1) == $link)
Aehm... no
io ti ho riscritto l'if.
Sostituisci il mio codice al tuo.
__________________
?
non funziona.
Fai così:
code:
echo basename($_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING']).'<br />'; echo $link.'<br />'; echo substr($_SERVER['SCRIPT_NAME'],strrpos($_SERVER['S CRIPT_NAME'],'/')+1).'<br />';

__________________
?
ora stampa questo
PHP:
index.php
florida/index.php
class="attivo">Home
index.php?id=servizi
florida/index.php
class="attivo">Servizi
Potresti ripostare tutto il codice insieme agli echo che ti ho fatto aggiungere? Giusto per avere la visione d'insieme 
Comunque quel "florida/index.php" da dove spunta?
__________________
?
Florida è la cartella dove sta index.php
PHP:
<?php
// definisce l'array di pagine
$pagine = array ('Home' => 'index.php','Servizi' => 'index.php?id=servizi');
// per ogni elemento dell'array di pagine
foreach ($pagine as $text => $link) {
// se sono nella pagina linkata
echo '<font';
echo basename($_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING']).'<br />';
echo $link.'<br />';
echo substr($_SERVER['SCRIPT_NAME'],strrpos($_SERVER['S
CRIPT_NAME'],'/')+1).'<br />';
// if (substr($_SERVER['SCRIPT_NAME'],strrpos($_SERVER['
SCRIPT_NAME'],'/')+1) == $link)
{
// aggiunge la classe appropriata
echo ' class="attivo">';
}
// inserisce link e testo
echo '<a href="' . $link . '">' . $text . '</a></font>';
}
?>
Questa cosa ti stampa
code:
<?php $pagine = array ('Home' => 'index.php','Servizi' => 'index.php?id=servizi'); foreach ($pagine as $text => $link) { echo "basename(): "; echo basename($_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING']).'<br />'; echo "link: "; echo $link.'<br />'; echo "substr(): "; echo substr($_SERVER['SCRIPT_NAME'],strrpos($_SERVER['S CRIPT_NAME'],'/')+1).'<br />'; }
__________________
?
basename(): index.php
link: index.php
_SERVER: florida/index.php
class="attivo">Homebasename(): index.php
link: index.php?id=servizi
_SERVER: florida/index.php
class="attivo">Servizi
C'è qualcosa che non va perché "class="attivo">Home" non dovrebbe comparire :-/
Strano che QUERY_STRING non produca nulla... ma per passare da una pagina all'altra usi link, suppongo? e "id" l'hai messo nei link? O meglio, la navigazione da una pagina all'altra funziona correttamente?
Dovrebbe, visto che, come hai scritto nel primo post, la pagina te la apre...
__________________
?
Ok, ora dovrebbe funzionare, l'ho provato in locale
code:
<?php // definisce l'array di pagine $pagine = array ('Home' => 'index.php','Servizi' => 'index.php?id=servizi'); // per ogni elemento dell'array di pagine foreach ($pagine as $text => $link) { $thispage = basename($_SERVER['PHP_SELF']); if(!empty($_SERVER['QUERY_STRING'])) $thispage .= '?'.$_SERVER['QUERY_STRING']; echo $thispage; // se sono nella pagina linkata echo '<font'; if ($thispage == $link) { // aggiunge la classe css echo ' class="attivo">'; echo "(y)"; } else echo '>'; // inserisce link e testo echo '<a href="' . $link . '">' . $text . '</a></font><br />'; } ?>
__________________
?
Sei un mito! Ora sembra funzionare!
![]()
Ti ringrazio molto!
Di niente 
__________________
?
| All times are GMT. The time now is 05:15. | Show all 17 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.