Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16

Discussione: menu con variabile

  1. #11
    Prova a rimettere gli apici e a parsare a dovere il codice.
    Peraltro, ho pensato ad una soluzione un po' più performante per gestire gli stili della lista.

    Codice PHP:
    $array_menu = array( 
    "http://xxxxx/chi-siamo.php" => "CHI SIAMO"
    "http://xxxx/galleria.php" => "GALLERIA",
    "http://xxxx/ultime-novita.php" => "NOVITA'"
    "http://xxxx/new-antiques.php" => "TRENDY"
    "http://xxxxx/ordina.php" => "ORDINA"
    "http://xxxxx/contatti.php" => "CONTATTI"
    "http://xxxxx/contatti.php" => "BLOG"
    "http://xxxx/faq.php" => "F.A.Q."
    "http://xxx/" => "xxxxxx"
    ); 


    $pagina_visualizzata basename($_SERVER['PHP_SELF']); 


    echo 
    "<ul id=\"navlist\">"


    while(list(
    $url$label) = each($array_menu)) { 

    if (
    $url == $pagina_visualizzata){ 
         
    $stile "active";
    } else  {
         
    $stile "part";
    }

    echo 

         <li id=\"
    $stile\"> 
            <a href=\"
    $url\">$label</a> 
          
    "


    }

    echo 
    "[/list]"
    Vedi un po' se ti da problemi?
    Credo che prima non ti funzionava perché, se non ricordo male, con l'apice singolo non è permesso incapsulare variabili nelle stringhe.

    Lascio per ultima una mia curiosità: ma perché usi il percorso assoluto per identificare l'URL dei bottoni? Puntano ad un sito esterno?
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  2. #12
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    226
    grazie adesso non dà più errori ..........però sembra non funzionare corretamente

    ho impostato così il css
    codice:
    ul#navlist
    {
    margin-left: 0;
    padding-left: 0;
    white-space: nowrap;
    font-weight: bold;
    }
    
    #active li
    {
    display: inline;
    list-style-type: none;
    }
    
    #active a { padding: 3px 10px; }
    
    #active a:link, #active a:visited
    {
    color: #730400;
    background-color: #E7C35A;
    text-decoration: none;
    }
    
    #active a:hover
    {
    color: #E7C35A;
    background-color: #FF0000;
    text-decoration: none;
    }
    
    
    #part li
    {
    display: inline;
    list-style-type: none;
    }
    
    #part a { padding: 3px 10px; }
    
    #part a:link, #part a:visited
    {
    color: #E7C35A;
    background-color: #FF0000;
    text-decoration: none;
    }
    
    #part a:hover
    {
    color: #E7C35A;
    background-color: #FF0000;
    text-decoration: none;
    }
    però a video me li fa vedere tutti come idart senza prendere in considerazione id:active


    uso i collegamenti assoluti perchè il sito è su server aruba e tempo indietro ho avuto problemi che non riusciva più a risalire alle cartelle corretamente.............
    adesso sembra essere risolto il problema.....ma sai come si dice prevenire è meglio che curare.
    Per non avere problemi in futuro faccio così.

  3. #13
    Credo che l'errore sia solo nel CSS ora, e più precisamente nel richiamare un selettore per il tag [*].
    Per i punti di una lista, devi usare le classi nel CSS, non i selettori.

    Per cui il codice ulteriormente corretto sarà:
    Codice PHP:
    // UL puoi selezionarlo con un selettore
    echo "<ul id=\"navlist\">";

    // ciclo di while..... che tralascio
    echo 
         <li class=\"
    $stile\"> 
            <a href=\"
    $url\">$label</a> 
          
    "
    ;

    // eccetera eccetera 
    Devi però modificare anche il CSS, in quanto non mi sembra scritto correttamente.

    È il selettore #navlist che contiente sia il tag <ul> sia le classi active e part, non il contrario.

    Poi cambia anche il nome della classe active.
    Magari è un eccesso di formalità, ma ho paura che essendo omonima di una delle pseudo-classi di hover, possa combinare qualche disastro!
    Rinominando tutti i .active in (che ne so) .attivo (quindi anche nel codice PHP).

    Concludo postando il CSS come lo scriverei io:
    codice:
    #navlist ul {
    margin-left: 0;
    padding-left: 0;
    white-space: nowrap;
    font-weight: bold;
    }
    
    #navlist .attivo li {
    display: inline;
    list-style-type: none;
    }
    
    #navlist .attivo a { padding: 3px 10px; }
    
    #navlist .attivo a:link, #navlist .attivo a:visited {
    color: #730400;
    background-color: #E7C35A;
    text-decoration: none;
    }
    
    #navlist .attivo a:hover {
    color: #E7C35A;
    background-color: #FF0000;
    text-decoration: none;
    }
    
    
    #navlist .part li {
    display: inline;
    list-style-type: none;
    }
    
    #navlist .part a { padding: 3px 10px; }
    
    #navlist .part a:link, #navlist .part a:visited {
    color: #E7C35A;
    background-color: #FF0000;
    text-decoration: none;
    }
    
    #navlist .part a:hover {
    color: #E7C35A;
    background-color: #FF0000;
    text-decoration: none;
    }
    Ultimo ritocchino al PHP:

    Codice PHP:
    if ($url == $pagina_visualizzata){ 
         
    $stile "attivo"
    } else  { 
         
    $stile "part"

    Se poi dovessi avere altri problemi, credo proprio che tu sia costretta a postare il problema specifico nel forum dedicato ai CSS.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  4. #14
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    226
    ho sistemato i css, ma non va comunque il codice php.

    a video mi stampa questo codice.........quindi non entra mai nel ciclo class:active

    codice:
    <ul id="navlist"> 
         <li class="part"> 
            CHI SIAMO 
          
     
         <li class="part"> 
            GALLERIA 
          
     
         <li class="part"> 
            NOVITA' 
          
     
         <li class="part"> 
            TRENDY 
          
     
         <li class="part"> 
            ORDINA 
          
     
         <li class="part"> 
            BLOG 
          
     
         <li class="part"> 
            F.A.Q. 
          
     
         <li class="part"> 
            SU EBAY 
          [/list]
    il css è stato aggiustato così:
    codice:
    	
    #navlist ul {
    margin-left: 0;
    padding-left: 0;
    white-space: nowrap;
    font-weight: bold;
    }
    
    #navlist li {
    display: inline;
    list-style-type: none;
    }
    
    #navlist a.active { padding: 3px 10px; }
    
    #navlist a.active:link, #navlist a.active:visited {
    color: #730400;
    background-color: #E7C35A;
    text-decoration: none;
    }
    
    #navlist a.active:hover {
    color: #E7C35A;
    background-color: #FF0000;
    text-decoration: none;
    }
    
    
    
    
    #navlist  a.part { padding: 3px 10px; }
    
    #navlist a.part :link, #navlist a.part :visited {
    color: #E7C35A;
    background-color: #FF0000;
    text-decoration: none;
    }
    
    #navlist a.part :hover {
    color: #E7C35A;
    background-color: #FF0000;
    text-decoration: none;
    }

  5. #15
    OK, ora ho capito dov'è il problema!

    Il PHP funziona benissimo, infatti quando vai a controllare $url con $pagina_visualizzata non potrai MAI ottenere una uguaglianza in quanto
    Codice PHP:
    $pagina_visualizzata basename($_SERVER['PHP_SELF']); 
    ti estrae dall'url solo quanto scritto tra l'ultima slash della url fino a .php.

    Ti faccio un esempio di codice così mi spiego meglio!

    Codice PHP:
    $url "http://www.sitoesempio.it/pagina.php";

    $no_basename $_SERVER['PHP_SELF'];
    $basename basename($_SERVER['PHP_SELF']);

    echo 
    "$no_basename"// restituisce [B][url]http://www.sitoesempio.it/pagina.php[/url][/B] 
    echo "
    "
    ;
    echo 
    "$basename"// restituisce [B]pagina.php[/B] 
    La soluzione al tuo problema è semplice: o metti nell'array del menù l'indirizzo relativo delle tue pagine, quindi lo confronti con quanto estratto da basename() (scelta che io ti consiglio - mai avuto problemi con Aruba in merito), oppure lasci l'array con gli indirizzi lunghi ma li confronti con l'indirizzo assoluto.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  6. #16
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    226
    ho risolto.........

    grazie a tutti, alla fine ho tolto i riferimenti assoluti così funziona. Prende la variabile di pagina correttamente......
    l'unico problema adesso è che non funziona il css.............cioè la pagina funziona come se non prendesse i riferimenti esterni del css stampa tutti i tasti uguali con collegamenti blu.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.