Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    449

    Errore di validazione HTML su menu PHP

    Per creare un menu e applicare un effetto grafico
    ho redatto i sefuente codice:
    codice:
    <div id="navbar">
    <ul>
    <?php
    isset($_REQUEST["pagina"]) ? $pagina=$_REQUEST["pagina"] : $pagina="home";
    $vocimenu=array("home"=>"Home","comenato"=>"Com'&egrave; nato","chisiamo"=>"Chi siamo","copioni"=>"Copioni","immagini"=>"Immagini","spettacoli"=>"Spettacoli","prossimamente"=>"Prossimamente","contattaci"=>"Contattaci");
    foreach($vocimenu as $voce=>$vocevisualizzata) {
    if ( ( $voce == $pagina ) ) {
    $addstyle = "style='background-color:white; color:black; font-weight:bold; text-decoration:none;'";
    } else {
    $addstyle = "";
    }
    if ($voce == "home" ) {
    echo "<a href=\".\" $addstyle>";
    } else {
    echo "<a href=\"index.php?pagina=$voce\" $addstyle>";
    }
    echo $vocevisualizzata;
    echo '</a>'."\n";
    }
    echo "\n";
    ?>[/list]
    </div>
    Il validatore del W3C mi rileva però questo errore:
    codice:
    #  Error  Line 21, Column 97: document type does not allow element "a" here; assuming missing "li" start-tag
    
    …-weight:bold; text-decoration:none;'>Home</a>
    
    ✉
    # Error Line 22, Column 37: document type does not allow element "a" here; assuming missing "li" start-tag
    
    Com'&egrave; nato
    ecc. ecc.
    Cosa posso fare per adeguare il codice?

    Grazie
    M.

  2. #2
    Codice PHP:
    if ($voce == "home" ) {
    echo 
    "[*]<a href=\".\" $addstyle>";
    } else {
    echo 
    "[*]<a href=\"index.php?pagina=$voce\" $addstyle>";

    Forse così?

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    449
    Non precisamente. Perché in questo modo mi viene modificato
    lo stile di <a> e non di[*]. Per cui si vede alla dx e alla sx
    del pulsante grigio il padding bianco. Cosa che appunto avevo
    cercato di modificare da PHP. Anche se non so se sono riuscito
    a spiegarmi...

    Grazie
    M.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    449
    Ho verificato: adesso in effetti la validazione viene superata.
    Però a questo punto non mi serve a nulla PHP perché quell'effetto
    era proprio quella che mi risultava col CSS senza scomodare PHP.
    Io invece volevo eliminare il contorni bianchi del menu orizzontale.
    Dai un'occhiata qui:
    http://www.samiel.netsons.org/
    Spero che vedendo l'effetto tu capisca melgio che dalla mia descrizione....

    M.

  5. #5
    confuso e felice!
    Il tuo è un problema di css, non php!

    La soluzione peraltro è piuttosto easy, nella sezione
    Codice PHP:
    #navbar li{
    ...
    padding:0;
    ...

    al posto di padding:4px;

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    449
    Il problema si risolve mettendo:
    codice:
    if ($voce == "home" ) {
    echo "<a href=\".\" $addstyle>";
    } else {
    echo "<a href=\"index.php?pagina=$voce\" $addstyle>";
    }
    cioè eliminando del tutto il tag[*].
    Ma a questo punto non ha senso <ul>
    e tutto va a farsi benedire....

    M.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    449
    # bionicoz:

    No, perché se metto padding:0 in[*]
    allora il pulsante della pagina selezionata
    diventa più piccolo degli altri
    con un effetti molto brutto...
    O tolgo il padding anche da <a>,
    ma allora i pulsanti del menu diventano
    piccoli e sbattono contro il testo...
    Già ci avevo provato, ma non era
    quello che volevo...

    M.

  8. #8
    Vedi se è questo quello che volevi ottenere.
    Se così non è bisognerebbe rivedere un po' tutto il css, io ti ho cambiato solo un paio di valori.
    Inoltre invece di fare stampare al php tutta la stringa <style="ecc ecc"> puoi fare stampare solo class="selected" (attribuita all'elemento[*], non <a>).
    Aggiungi nel css tale classe, come puoi vedere nell'esempio di cui sopra.
    Spero di esserti stato utile, ciao.

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    449
    O uomo pieno di ingegno! :-)
    Sì, è esattamente il risultato che intendevo.
    Puoi postarmi la stringa modificata di PHP?
    Ovviamente, il CSS del tuo esempio posso vederlo,
    il PHP no....

    Mille grazie
    M.

  10. #10
    Codice PHP:
    <?php
    isset($_REQUEST["pagina"]) ? $pagina=$_REQUEST["pagina"] : $pagina="home";
    $vocimenu=array("home"=>"Home","comenato"=>"Com'è nato","chisiamo"=>"Chi siamo","copioni"=>"Copioni","immagini"=>"Immagini","spettacoli"=>"Spettacoli","prossimamente"=>"Prossimamente","contattaci"=>"Contattaci");
    foreach(
    $vocimenu as $voce=>$vocevisualizzata) {
    if ( ( 
    $voce == $pagina ) ) {
    $addstyle "class=\"selected\"";
    } else {
    $addstyle "";
    }
    if (
    $voce == "home" ) {
    echo 
    "<li $addstyle><a href=\".\">";
    } else {
    echo 
    "<li $addstyle><a href=\"index.php?pagina=$voce\">";
    }
    echo 
    $vocevisualizzata;
    echo 
    '</a>'."\n";
    }
    echo 
    "\n";
    ?>
    Vuallà. cmq nemmeno io ce l'ho il php

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 © 2025 vBulletin Solutions, Inc. All rights reserved.