How to populate HTML table from local text file.

A

alex

Hi,

I am looking for a way to populate an HTML table from an external
local text file which looks like this:

DATE/TIME LAT. LON. DEPTH. ML.
-------------------- ---------- ---------- ------- -------
21/03/2005-04:06:03 XX,XX XX,XX 171 3,42
21/03/2005-12:23:53 XX,XX XX,XX 500 5,4
21/03/2005-12:43:10 XX,XX XX,XX 553 5,38
21/03/2005-18:47:51 XX,XX XX,XX 162 3,91
21/03/2005-19:29:49 XX,XX XX,XX 500 3,51
21/03/2005-20:04:51 XX,XX X,X 75 3,72

The file could have more rows (DATA) that I show here. The file is
provided to me on a daily basis and I have to update a web page daily
with the contents of the file.

I considered using JavaScript embedded in the HTML page but I am a
newbie on what scripting for the web it refers.

How can I populate the HTML table with this text file which changes
everyday.

Also, is it possible to use php client-side only, without a server?

Your help, suggestions and feedback questions will be much
appreciated.

Thanks.

Alex.
 
M

Malcolm Dew-Jones

alex ([email protected]) wrote:
: Hi,

: I am looking for a way to populate an HTML table from an external
: local text file which looks like this:

: DATE/TIME LAT. LON. DEPTH. ML.
: -------------------- ---------- ---------- ------- -------
: 21/03/2005-04:06:03 XX,XX XX,XX 171 3,42
: 21/03/2005-12:23:53 XX,XX XX,XX 500 5,4
: 21/03/2005-12:43:10 XX,XX XX,XX 553 5,38
: 21/03/2005-18:47:51 XX,XX XX,XX 162 3,91
: 21/03/2005-19:29:49 XX,XX XX,XX 500 3,51
: 21/03/2005-20:04:51 XX,XX X,X 75 3,72

the absolutely easiest way is to simply wrap the above text with the <pre>
</pre> tags.

<html>
<head> <title> data from 21/03/2005 </title> </head>
<body>
<pre>
DATE/TIME LAT. LON. DEPTH. ML.
-------------------- ---------- ---------- ------- -------
21/03/2005-04:06:03 XX,XX XX,XX 171 3,42
21/03/2005-12:23:53 XX,XX XX,XX 500 5,4
</pre>
</body>
</html>
 
D

David Dorward

alex wrote:

I am looking for a way to populate an HTML table from an external
local text file which looks like this:
21/03/2005-04:06:03 XX,XX XX,XX 171 3,42

It is probably possible, using XmlHttpRequest, but a fair bit of work,
limited browser support, and not very accessible. Far better to generate
the HTML before it reaches the client.
Also, is it possible to use php client-side only, without a server?

Yes ... but not on the web.

If you can't run any form of scripting on your server, then your best bet
would be to look at running it on another machine (such as your
workstation) and uploading the output to your webserver.
 
M

McKirahan

Malcolm Dew-Jones said:
alex ([email protected]) wrote:
: Hi,

: I am looking for a way to populate an HTML table from an external
: local text file which looks like this:

: DATE/TIME LAT. LON. DEPTH. ML.
: -------------------- ---------- ---------- ------- -------
: 21/03/2005-04:06:03 XX,XX XX,XX 171 3,42
: 21/03/2005-12:23:53 XX,XX XX,XX 500 5,4
: 21/03/2005-12:43:10 XX,XX XX,XX 553 5,38
: 21/03/2005-18:47:51 XX,XX XX,XX 162 3,91
: 21/03/2005-19:29:49 XX,XX XX,XX 500 3,51
: 21/03/2005-20:04:51 XX,XX X,X 75 3,72

the absolutely easiest way is to simply wrap the above text with the <pre>
</pre> tags.

I like Malcom's solution for its ease.

Or do you *need* the data in a table for some reason?

Perhaps to right-align numbers or hyperlink cells?


Also, I'm not familiar with Lat/Lon presented as "XX,XX";

Per http://jan.ucc.nau.edu/~cvm/latlongdist.html

Valid formats for Latitudes and Longitudes are:

option 1: dddmmssD or ddd mm'ss" D

where ddd = 1-3 digits for degrees, mm = 2 digits for minutes, ss = 2 digits
for seconds and D = N,S,E, or W. The seconds and special characters (spaces,
apostrophes, quotes) are all optional in this format. This leads to quite a
large number of possible valid formats.

option 2: ddd.ffffD

where ddd = 0-3 digits, ffff = 0-10 digits and D = N,S,E, or W. This format
represents a decimal number of degrees. If the number of degrees is a whole
number, the decimal point is optional.

option3: ddd mm.ffff'D

where ddd = 0-3 digits for degrees, mm = 2 digits for minutes, ffff = 0-10
digits for decimal portion of minutes and D = N,S,E, or W. This format
represents degrees and a decimal number of minutes.
 
M

Mick White

alex said:
Hi,

I am looking for a way to populate an HTML table from an external
local text file which looks like this:

DATE/TIME LAT. LON. DEPTH. ML.
-------------------- ---------- ---------- ------- -------
21/03/2005-04:06:03 XX,XX XX,XX 171 3,42
21/03/2005-12:23:53 XX,XX XX,XX 500 5,4
21/03/2005-12:43:10 XX,XX XX,XX 553 5,38
21/03/2005-18:47:51 XX,XX XX,XX 162 3,91
21/03/2005-19:29:49 XX,XX XX,XX 500 3,51
21/03/2005-20:04:51 XX,XX X,X 75 3,72

The file could have more rows (DATA) that I show here. The file is
provided to me on a daily basis and I have to update a web page daily
with the contents of the file.

I considered using JavaScript embedded in the HTML page but I am a
newbie on what scripting for the web it refers.
<div id="foo"><--INCLUDE FILE HERE--></div>
<script type="text/JavaScript">
onload= function(){
var d=document.getElementById("foo").innerHTML.split(/\s+/)
document.getElementById("foo").innerHTML=table_maker(5,d);
}
function table_maker(columns,array){
var txt="<TABLE cellpadding=1 cellspacing=1 border=1>"
var rows=Math.ceil(array.length/columns);
for(var r=0,t=0;r<rows;r++){
txt+="<TR>"
for(var c=0;c<columns;c++){
txt+="<TD>"+array[t++]+"</TD>"
}
txt+="</TR>"
}
txt+="</TR></TABLE>"
return txt;
}
</script>

Mick
 
A

alex

McKirahan said:
Or do you *need* the data in a table for some reason?

Thanks for your answer, McKirahan. Just as a follow-up to some
questions...
I do need the data in a table in order to hyperlink some cells.
Also, I'm not familiar with Lat/Lon presented as "XX,XX";

Sorry, I only made a representation of Lat/Lon in order not to reveal
actual values of Lat/Lon that correspond to data in my organization.
The values for Lat/Lon given to me are according to option 2 below,
decimal number of degrees. Thanks for the good input.
 
R

RobG

McKirahan wrote:
[...]
Also, I'm not familiar with Lat/Lon presented as "XX,XX";

Per http://jan.ucc.nau.edu/~cvm/latlongdist.html

Valid formats for Latitudes and Longitudes are:
[...]

Whilst your reference to the Northern Arizona University may have
appropriate formats for the OP's purposes, the international standard
is ISO 6709:1983.

There are 2 main difference between ISO and your quoted source;

1. Hemispheres are denoted by "-" for W and S and "+" for E and N. I
suppose the mathematical symbols are more widely understood than
letters from the English alphabet.

2. The ISO formats are unambiguous.

A free version of the standard can be found here:

<URL:http://en.wikipedia.org/wiki/ISO_6709>

Though to ensure full compliance (if required), a copy should be
purchased from ISO.
 
A

alex

Mick White said:
<div id="foo"><--INCLUDE FILE HERE--></div>

Forgive my ignorance, but, how do i include the file as dictated right
above?
Is there some kind of HTML statement that allows you to include an
external text file ? Please clarify as am a newbie on this. Thanks
Mick.

Alex.
<script type="text/JavaScript">
onload= function(){
var d=document.getElementById("foo").innerHTML.split(/\s+/)
document.getElementById("foo").innerHTML=table_maker(5,d);
}
[...]
 
J

Jeff North

On 26 Mar 2005 21:13:39 -0800, in comp.lang.javascript
| Hi,
|
| I am looking for a way to populate an HTML table from an external
| local text file which looks like this:
|
| DATE/TIME LAT. LON. DEPTH. ML.
| -------------------- ---------- ---------- ------- -------
| 21/03/2005-04:06:03 XX,XX XX,XX 171 3,42
| 21/03/2005-12:23:53 XX,XX XX,XX 500 5,4
| 21/03/2005-12:43:10 XX,XX XX,XX 553 5,38
| 21/03/2005-18:47:51 XX,XX XX,XX 162 3,91
| 21/03/2005-19:29:49 XX,XX XX,XX 500 3,51
| 21/03/2005-20:04:51 XX,XX X,X 75 3,72
|
| The file could have more rows (DATA) that I show here. The file is
| provided to me on a daily basis and I have to update a web page daily
| with the contents of the file.
|
| I considered using JavaScript embedded in the HTML page but I am a
| newbie on what scripting for the web it refers.
|
| How can I populate the HTML table with this text file which changes
| everyday.
|
| Also, is it possible to use php client-side only, without a server?
|
| Your help, suggestions and feedback questions will be much
| appreciated.

You could use javascript to open and read the file. If the user has
javascript disabled then they will see nothing.

Alternatively you could use an IFrame on your page to display your
file.

If the file extension is txt then browsers will display the text as it
appears in the file - no formatting.

If the file extension is csv then Internet Explorer will reformat the
text and display it in a limited Excel spreadsheet layout. Other
browsers (Firefox) will just show the text.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
<title>External text file</title>
</head>

<body>
<P>this is some text, menus etc</P>
<iframe src="pc-full.csv" width="100%" frameborder="1"
scrolling="auto" height="350px"></iframe>
</body>
</html>
 
M

Mick White

alex said:
Forgive my ignorance, but, how do i include the file as dictated right
above?
Is there some kind of HTML statement that allows you to include an
external text file ? Please clarify as am a newbie on this. Thanks
Mick.

Alex.


Search for "SSI".

Mick


<script type="text/JavaScript">
onload= function(){
var d=document.getElementById("foo").innerHTML.split(/\s+/)
document.getElementById("foo").innerHTML=table_maker(5,d);
}

[...]
 
R

RobB

alex said:
Hi,

I am looking for a way to populate an HTML table from an external
local text file which looks like this:

DATE/TIME LAT. LON. DEPTH. ML.
-------------------- ---------- ---------- ------- -------
21/03/2005-04:06:03 XX,XX XX,XX 171 3,42
21/03/2005-12:23:53 XX,XX XX,XX 500 5,4
21/03/2005-12:43:10 XX,XX XX,XX 553 5,38
21/03/2005-18:47:51 XX,XX XX,XX 162 3,91
21/03/2005-19:29:49 XX,XX XX,XX 500 3,51
21/03/2005-20:04:51 XX,XX X,X 75 3,72
The file could have more rows (DATA) that I show here. The file is
provided to me on a daily basis and I have to update a web page daily
with the contents of the file.

I considered using JavaScript embedded in the HTML page but I am a
newbie on what scripting for the web it refers.

How can I populate the HTML table with this text file which changes
everyday.

Also, is it possible to use php client-side only, without a server?

Your help, suggestions and feedback questions will be much
appreciated.

Thanks.

Alex.

Server-based preprocessors were designed for this sort of thing; any
time you attempt it at the client, you're in the wild-wild-west, so to
speak, hoping for a reasonably controlled environment (unlikely).
Nevertheless: you could simply download that text file into a hidden
iframe in the page and extract the data from there...browser support
for this - and DOM table-building - is pretty good these days. See if
this does anything. You may have to find any control characters
inserted by googlegroups and s & r them....sorry about that.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<style type="text/css">

body {
font-size: 100%;
background: #9a9;
}
h3 {
width: 180px;
font: 18px "arial black";
color: #474;
margin: 80px auto 0 auto;
}
#stuff {
width: 600px;
margin: 10px auto;
}
#stuff th {
font: 11px "arial black";
color: #060;
letter-spacing: .4em;
border-left: 3px #000 solid;
border-right: 1px #000 solid;
background: #fff;
}
#stuff td {
font: normal 12px monospace;
text-align: center;
padding: 3px;
border-top: 1px #888 solid;
border-right: 1px #000 solid;
border-bottom: 1px #888 solid;
border-left: 3px #000 solid;
background: #d0d8d0;
}
#buffer {
display: none;
}

</style>
<script type="text/javascript">

onload = function()
{
if (!document.getElementById
|| !document.getElementsByTagName)
return;
var frm = null,
prenode,
tbod = document.getElementById('tbod'),
data = '';
if ((frm = top.frames['buffer']) //iframe
&& frm.document)
{ //get <pre> parent
prenode = frm.document.getElementsByTagName('pre').item(0);
if (null != prenode
&& null != prenode.firstChild
&& /#text/.test(prenode.firstChild.nodeName)) //text node
{
data += prenode.firstChild.data; //read
data = data.split(/[\n\r]/); //separate lines
data.splice(0, 2); //lose first two (legend)
var i = 0,
l = data.length,
rowdata,
ii, ll, tr, td;
for (; i < l; ++i)
{
tr = document.createElement('tr'); //new row
tbod.appendChild(tr);
rowdata = data.split(/\s{3,}/); //separate bits
for (ii = 0, ll = rowdata.length; ii < ll; ++ii)
{
td = document.createElement('td'); //new cell
td.appendChild(document.createTextNode(rowdata[ii]));
tr.appendChild(td);
}
}
}
}
}

</script>
</head>
<body>
<h3>&amp;#149; Mystery Data &amp;#149;</h3>
<table id="stuff">
<thead>
<tr>
<th>DATE/TIME</th>
<th>LAT.</th>
<th>LON.</th>
<th>DEPTH.</th>
<th>ML.</th>
</tr>
</thead>
<tbody id="tbod">
</tbody>
</table>
<iframe id="buffer" name="buffer" src="data.txt"></iframe>
</body>
</html>

Made some assumptions about the consistency of the text formatting.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,226
Members
46,815
Latest member
treekmostly22

Latest Threads

Top