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>&nbsp;</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:

Bobby WorldWide Approved AAA

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");

Ora il semplice forum valida Bobby AAA e HTML 4.01 in tutte le sue pagine 🙂

Puoi visualizzare il lavoro portato a termine, ed eventualmente lasciare un messaggio 😉