in reply to Linking Matlab to process data for Personal Web Server

From what I can see the standalone.html is a static html page that displays an input box and a button thus

<HTML> <BODY> <FORM ACTION="/cgi-bin/mycgimagic.exe"> <P>Please specify the size: <INPUT NAME="size" SIZE="5"><BR> <INPUT TYPE="SUBMIT" VALUE="Go!"> </FORM> </BODY> </HTML>

When you press the button on the page, the request sent to the webserver is to execute the program /cgi-bin/mycgimagic.exe which is the compiled version of mycgimagic.m.

Using the size parameter extracted from the environment variable QUERY_STRING, the program computes the magic square and the response received by your browser is an html page created using the fprint(1,text) statements withing the program starting with this one

fprintf(1,'Content-type: text/html\n');

and later these

function createTable(M) s = size(M); fprintf(1,'<table border = "2">'); for i=1:s(1) fprintf(1,' <tr>'); for j=1:s(2) fprintf(1,[' <td>',num2str(M(i,j),'%4.2f'),'</td>']); end fprintf(1,' </tr>'); end

hope that helps a bit

poj

Replies are listed 'Best First'.
Re^2: Linking Matlab to process data for Personal Web Server
by jyws89 (Initiate) on Dec 17, 2010 at 17:21 UTC

    Thx for the reply and sorry for being late in replying back, i admit that i'm stupid enough that I actually didn't open up the mycgimagic.m file and have a look to it's content.

    Anyway, I am now creating a new algorithm, which is to calculate the square of a number (power of 2) by modeling to the sample m.file given in mycgimagic.m, I somehow stuck halfway and I can't pass back my result entirely, only the header is showing back. here is the coding

    function firstdeploy() input = (getenv('QUERY_STRING')); printHeader() x=str2double(input.size); sqre(x); printContent() printFooter() end function sqre = sqre(x) sqre = (x^2); end function printHeader() fprintf(1,'Content-type: text/html\n'); fprintf(1,'\n'); %Print the HTML response page to STDOUT. fprintf(1,'<HTML>'); fprintf(1,'<HEAD><TITLE>My Squaring</TITLE></HEAD>'); fprintf(1,'<BODY>'); end function printContent() fprintf(1,'<P>This is the square of your input:</P>'); fprintf(1, sqre(x)); end function printFooter() fprintf(1,'</BODY>'); fprintf(1,'</HTML>\n'); end

    I hope that any guru and masters here can point out my mistakes, I'm still very new to programming, willing to learn more about it. Sorry for any inconvenience caused

      You need to process the QUERY_STRING with the function qs2struct

      input = qs2struct(getenv('QUERY_STRING'));

      and to check it is working I would add these lines to printContent()

      fprintf(1,'<P>This is your input:</P>'); fprintf(1, x);
      poj

        I check qs2struct with matlab's help and it doesn't seems to be a matlab function...? anyway, i'm studying what actually is the qs2struct function really is. I'll let you know the verdict soon. Thanks for helping out!