Codice corretto che da errore W3C

Questo codice è strano perchè funziona bene ma da errore di validazione dalla seconda tabella in poi e come puoi vedere l'errore che W3C da è sempre lo stesso e più aggiungo tabelle aumentano gli errori di validazione che però sono sempre quelli!  :wallbash:

Gli errori che da  sono che i <div...> di apertura sono già stati definiti

http://www.photoman.altervista.org/guestbook/form.php

//Creazione della tabella contenente tutti i dati del messaggio
$tabella =  "<div id=\"w\">";                                                                           
$tabella .= "<div id=\"tabella-small\">";
$tabella .= "<span class=\"carattere\"><b>".$nome."</b></span>";
$tabella .= "<br /><span class=\"voci\">Scritto:</span>&nbsp;<span class=\"carattere\">".$data."";
$tabella .= "<br /><span class=\"voci\">Ore:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$orario."";
$tabella .= "<br /><span class=\"voci\">Citt&agrave;:</span>&nbsp;&nbsp;&nbsp;".$citta."";
$tabella .= "<br /><span class=\"voci\">Email:</span>&nbsp;&nbsp;<a href=\"mailto:$email1\">$email</a>";
$tabella .= "<br /><span class=\"voci\">Sito:</span>&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"$url1\">$url</a>";
//Questo mette a video la Country di provenienza
$tabella .= "<br /><span class=\"voci\">Country:</span>&nbsp;&nbsp;".$countries[$two_letter_country_code][1]."";
// Questo mette a video l'ip originale di provenienza...da ins.php + la bandierina
$tabella .= "<br /><span class=\"voci\">Ip:</span>&nbsp;&nbsp;".$ip.$bandieraGuest."</span>";
$tabella .= "</div>";  /*table-small*/
$tabella .= "<div id=\"tabella-long\">";
$tabella .= "<span class=\"carattere\">".$messaggio."</span>";
$tabella .= "</div>";  /* tabella-long */
$tabella .= "</div>";  /* w */

echo $tabella;
$cont2++;
}
inviato 8 anni fa
php
php
6
X 0 X

In una pagina (X)HTML non può esserci più di un elemento con un determinato "id", in altre parole gli id dei diversi tag devono essere tutti diversi.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

In una pagina (X)HTML non può esserci più di un elemento con un determinato "id", in altre parole gli id dei diversi tag devono essere tutti diversi.

 :bye:

Lo so, nel mio codice cè nè uno per tipo, probabilmente quando mette a video più caselle, le scambia smpre per una, o no?

risposto 8 anni fa
php
php
6
X 0 X

si, e questo è un errore.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Gianni, come posso sistemare il codice?

risposto 8 anni fa
php
php
6
X 0 X

Potresti usare un contatore $i da mettere negli ID:

<div id="tabella-small<?php echo $i?>">

così da ottenere

<div id="tabella-small1">

<div id="tabella-small2">

ecc.

Stai attento però che se hai usato gli id per legare degli stili CSS allora il precedente codice ti farebbe saltare gli stili. In tal caso la soluzione è un'altra. Non devi usare gli ID ma gli attributi "class" per assegnare gli stili CSS.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Il css è questo

#w{

width:600px;

height:auto;

text-align:center;

}            

/* Settaggio tabella SX contenente il messaggio */

#tabella-small {

float:left;

background-color:#ebebeb;

width:150px;

height:115px;

padding-top:3px;

padding-bottom:2px;

text-align:left;

border:1px solid;

border-color:#808080;

margin-bottom:11px;

}

/* Settaggio tabella DX contenente il messaggio */

#tabella-long {

float:right;

background-color:white;

width:442px;

height:112px;

padding-top:8px;

padding-left:5px;

text-align:left;

border-top:1px solid;

border-right:1px solid;

border-bottom:1px solid;

border-color:#808080;

margin-bottom:11px;

}

/* Settaggio della dimensione e del tipo di carattere */

.voci {

font-family:verdana;color:#000000;

font-size:11px;

padding-left:2px;

}

.carattere {

font-family:verdana;color:#000080;

font-size:11px;

padding-left:2px;

}

risposto 8 anni fa
php
php
6
X 0 X

Per risolvere il problema ti conviene sostituire il simbolo "#" con un "." prima di tabella-long, tabella-small e w nel css. Questo le trasforma in classi come voci e carattere.

Di conseguenza il codice diventa così:

//Creazione della tabella contenente tutti i dati del messaggio
$tabella =  "<div class=\"w\">";                                                                           
$tabella .= "<div class=\"tabella-small\">";
$tabella .= "<span class=\"carattere\"><b>".$nome."</b></span>";
$tabella .= "<br /><span class=\"voci\">Scritto:</span>&nbsp;<span class=\"carattere\">".$data."";
$tabella .= "<br /><span class=\"voci\">Ore:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$orario."";
$tabella .= "<br /><span class=\"voci\">Citt&agrave;:</span>&nbsp;&nbsp;&nbsp;".$citta."";
$tabella .= "<br /><span class=\"voci\">Email:</span>&nbsp;&nbsp;<a href=\"mailto:$email1\">$email</a>";
$tabella .= "<br /><span class=\"voci\">Sito:</span>&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"$url1\">$url</a>";
//Questo mette a video la Country di provenienza
$tabella .= "<br /><span class=\"voci\">Country:</span>&nbsp;&nbsp;".$countries[$two_letter_country_code][1]."";
// Questo mette a video l'ip originale di provenienza...da ins.php + la bandierina
$tabella .= "<br /><span class=\"voci\">Ip:</span>&nbsp;&nbsp;".$ip.$bandieraGuest."</span>";
$tabella .= "</div>";  /*table-small*/
$tabella .= "<div class=\"tabella-long\">";
$tabella .= "<span class=\"carattere\">".$messaggio."</span>";
$tabella .= "</div>";  /* tabella-long */
$tabella .= "</div>";  /* w */

echo $tabella;
$cont2++;
}

L'utilizzo delle classi ti permette di poterle utilizzare più volte all'interno della pagina html semplificando la validazione del documento che richiede id diversi per tutti gli elementi.

Per esperienza personale non utilizzo mai gli id (#) come regole nei css ma sempre classi.

:bye:

Zeta

risposto 8 anni fa
zeta80
X 0 X

 Nel css ho tolto # e ho messo il punto cosi es: .w {...}

Ho poi sostituito con il <div...> con <span class..> e mantiene le celle e non da più errore, allora a questo punto non capisco del tutto a cosa servano i div  :-\

risposto 8 anni fa
php
php
6
modificato 8 anni fa
X 0 X

Ciao,

perché hai sostituito <div> con <span>??? Ti ricordo che il tag div identifica gli elementi di blocco mentre il tag span degli elementi in linea. Te ne accorgi provando a dare un'altezza definita allo span O0.

Per riassumere un po' l'evoluzione del web, diciamo che i primi siti html avevano un layout bastato su tabelle e con l'avvento delle nuove tecnologie (palmari), questo tipo di layout si è dimostrato poco flessibile e meno adattabile alle esigenze. Per questo motivo si è pensato bene di non creare più la struttura di un sito con una tabella ma con altri tag sostitutivi, questo tag è il div. Un'altra svolta importante è stato il maggiore utilizzo dei css nelle pagine web (inizialmente si mettevano tutti gli stili in pagina) e la conseguente costruzione di regole per la validazione (W3C).

Ci tengo a sottolineare che il tag table non è scomparso, ma bensì ne è stato ridimensionato il suo utilizzo non più per il layout ma solo per gli elementi in pagina che lo richiedevano (es una tabella di riepilogo dati, ecc...)

Ho cercato di riassumere l'evoluzione del web in questi ultimi anni...

Spero di aver fatto un po' di chiarezza nei tuoi dubbi

:bye:

Zeta

risposto 8 anni fa
zeta80
X 0 X

...snip....

Per esperienza personale non utilizzo mai gli id (#) come regole nei css ma sempre classi.

:bye:

Zeta

E non è giusto, gli IDentificatori servono a identificare una parte della pagina, ad esempio una testa o un blocco di testo, in poche parole se hai una tabella che identifichi una sequenza di valori, per esempio i risultati del campionato di calcio, quella tabella è giusto che sia identificata come ID perché elemento unico in quel frangente, nel DOM un id è importante in quanto è un identificatore univoco, se dovessi mai cercarti tutti gli elementi che sottostanno in quella tabella, inizierai sempre da getElementByID() non ci saranno mai classi.

Le classi per contro sono importanti per identificare elementi variabili, ad esempio volendo colorare alternativamente quella tabella una riga verde e una gialla, sicuramente dovrei dare le impostazioni di colore tramite delle classi.

Quindi un ID identifica sempre un blocco di codice, mentre una classe si accompagna sempre ad una modifica selettiva di un elemento o gruppo di essi, è semanticamente scorretto non usare ID per identificare un elemento che selezioni un intero blocco della pagina.

risposto 8 anni fa
Marco Grazia
X 0 X

Domanda:

Marcolino che cosa hai capito dalla mia frase che hai citato? Una cosa sbagliata in base alla risposta...

:bye:

Zeta

risposto 8 anni fa
zeta80
X 0 X

Domanda:

Marcolino che cosa hai capito dalla mia frase che hai citato? Una cosa sbagliata in base alla risposta...

:bye:

Zeta

Per esperienza personale non utilizzo mai gli id (#) come regole nei css ma sempre classi.

Se avevo capito male correggimi

risposto 8 anni fa
Marco Grazia
X 0 X
Per esperienza personale non utilizzo mai gli id (#) come regole nei css ma sempre classi.

Come noterai non ho mai parlato di come strutturare un documento ma solo che nei css preferisco utilizzare delle classi e non degli id. Tutto qui!

:bye:

Zeta

risposto 8 anni fa
zeta80
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda