Codice di output dello script trasformazione 3, come visibile nell’esempio online:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML lang="it">
<HEAD>
<TITLE>bbs</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<p><ahref="http://bobby.watchfire.com/bobby/bobbyServlet?URL=http://www.protty.net/trasformazione3.php" class="external">Bobby</a>
| La trasformazione di pagine dinamiche, WA </p>
<p>
<H1>BBS</H1>
<H2>il codice nella versione che presenta un solo errore priorità 3</H2>
<UL>
<LI>(2003-02-15 16:47:29) <AHREF="bbs_source.php?messageID=2">codice originario</A><BR>
<UL>
</UL>
</UL>
<FORM ACTION="bbs.php" METHOD="post">
<INPUT TYPE="hidden" NAME="inputParent" VALUE="0"><INPUT TYPE="hidden" NAME="ACTION" VALUE="POST"><TABLE BORDER="1" CELLSPACING="0" CELLPADDING="5" summary="Tabella per inserire i post">
<TR><TD><LABEL FOR="oggetto"><B>Oggetto</B></LABEL></TD><TD><INPUT TYPE="text" NAME="inputTitle" SIZE="35" id="oggetto"></TD></TR>
<TR><TD><LABEL FOR="poster"><B>Poster</B></LABEL></TD><TD><INPUT TYPE="text" NAME="inputPoster" SIZE="35" id="poster"></TD></TR>
<TR><TD><LABEL FOR="messaggio"><b>Messaggio</b></LABEL></td><td><TEXTAREA NAME="inputBody" COLS="45" ROWS="5" id="messaggio"></TEXTAREA></TD></TR>
<TR><TD COLSPAN="2"><CENTER><INPUT TYPE="submit" VALUE="Invia"></CENTER></TD></TR>
</TABLE>
</FORM>
</p>
<p> </p>
<p>script di Leon Atkinson</p>
</BODY>
</HTML>
Mancano i “default, place-holding characters” nelle aree editabili. Dobbiamo intervenire nel sorgente per generare in output l’attributo “value”.
Ecco le linee da modificare, tratte dal sorgente trasformazione 3:
function postForm($parentID, $useTitle)
{
printf("<FORM ACTION="bbs.php" METHOD="post">n");
printf("<INPUT TYPE="hidden" NAME="inputParent" VALUE="$parentID">");
printf("<INPUT TYPE="hidden" NAME="ACTION" VALUE="POST">");
printf("<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="5" summary="Tabella per inserire i post">n");
printf("<TR><TD><LABEL FOR="oggetto"><B>Oggetto</B></LABEL></TD>");
printf("<TD><INPUT TYPE="text" NAME="inputTitle" SIZE="35" id="oggetto"></TD></TR>n");
printf("<TR><TD><LABEL FOR="poster"><B>Poster</B></LABEL></TD>");
printf("<TD><INPUT TYPE="text" NAME="inputPoster" SIZE="35" id="poster"></TD></TR>n");
printf("<TR><TD><LABEL FOR="messaggio"><b>Messaggio</b></LABEL></td>");
printf("<td><TEXTAREA NAME="inputBody" COLS="45" ROWS="5" id="messaggio"></TEXTAREA></TD></TR>n");
printf("<TR><TD COLSPAN="2"><CENTER><INPUT TYPE="submit" VALUE="Invia"></CENTER></TD></TR>n");
printf("</TABLE>n");
printf("</FORM>n");
}
Ecco le stesse linee corrette:
function postForm($parentID, $useTitle)
{
printf("<FORM ACTION="bbs.php" METHOD="post">n");
printf("<INPUT TYPE="hidden" NAME="inputParent" VALUE="$parentID">");
printf("<INPUT TYPE="hidden" NAME="ACTION" VALUE="POST">");
printf("<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="5" summary="Tabella per inserire i post">n");
printf("<TR><TD><LABEL FOR="oggetto"><B>Oggetto</B></LABEL></TD>");
printf("<TD><INPUT TYPE="text" NAME="inputTitle" SIZE="35" VALUE="oggetto..." id="oggetto"></TD></TR>n");
printf("<TR><TD><LABEL FOR="poster"><B>Poster</B></LABEL></TD>");
printf("<TD><INPUT TYPE="text" NAME="inputPoster" SIZE="35" VALUE="poster..." id="poster"></TD></TR>n");
printf("<TR><TD><LABEL FOR="messaggio"><b>Messaggio</b></LABEL></td>");
printf("<td><TEXTAREA NAME="inputBody" COLS="45" ROWS="5" id="messaggio">Messaggio...</TEXTAREA></TD></TR>n");
printf("<TR><TD COLSPAN="2"><CENTER><INPUT TYPE="submit" VALUE="Invia"></CENTER></TD></TR>n");
printf("</TABLE>n");
printf("</FORM>n");
}
Proviamo a validare la pagina, otteniamo il seguente risultato:
Visualizza l’esempio online dopo la quarta trasformazione.
Tutti i problemi sono stati risolti 🙂
Testando col validatore del W3C (usa il link presente nella pagina di esempio), si rilevano però alcuni problemi nel codice HTML 🙁
- Line 19, column 4: end tag for “UL” which is not finished.
</UL>
^ - Line 29, column 3: end tag for element “P” which is not open.
</p>
^
Il secondo problema si risolve facilmente, togliendo la chiusura di <p> dopo la fine dello script.
Per la linea 19 si deve intervenire nella funzione “showMessages($parentID)”, nella parte iniziale e alla fine. Puoi confrontare il codice originario ed il codice corretto.
Puoi verificare l’output corretto nella pagina caricata su Server.
La trasformazione non è ancora completa :-I
Per mantenere la conformità anche nelle pagine dei messaggi inseriti, dovremo infatti modificare queste linee dello script originario:
printf( "<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="5" WIDTH="400">n");
printf( "<TR><TD WIDTH="100"><B>Oggetto</B></TD><TD WIDTH="300">$messageTitle</TD></TR>n");
printf( "<TR><TD WIDTH="100"><B>Poster</B></TD><TD WIDTH="300">$messagePoster</TD></TR>n");
printf( "<TR><TD WIDTH="100"><B>Postato il</B></TD><TD WIDTH="300">$messageCreated</TD></TR>n");
printf( "<TR><TD COLSPAN="2" WIDTH="400">$messageBody</TD></TR>n");
printf( "</TABLE>n");
…nel modo seguente:
printf("<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="5" summary="Tabella contenente i messaggi">n");
printf("<TR><TD><B>Oggetto</B></TD><TD>$messageTitle</TD></TR>n");
printf("<TR><TD><B>Poster</B></TD><TD>$messagePoster</TD></TR>n");
printf("<TR><TD><B>Postato il</B></TD><TD>$messageCreated</TD></TR>n");
printf("<TR><TD COLSPAN="2">$messageBody</TD></TR>n");
printf("</TABLE>n");