Low End Mac's Online Tech Journal

Displaying Stock Quotes and Timestamps with PHP

Website Automation with PHP and MySQL, Part 13

Low End Mac Reader Specials

Memory To Go Special: MacPro 8 Core Memory 4GB kit $154 / 2GB kit $94, New 2008 iMac 2GB $46. MacBook Pro / MacMini / iMac Intel Core2 DUO 2GB $44 / 1GB $23--Free shipping available.

Download Typestyler, still the Ultimate Styling Tool for Internet, Print and Video Graphics. Works great in Classic with a Native OS X Version on the way. Free Tryout: www.typestyler.com

LA Computer Company: Specials on AppleCare, iMac's, Apple Batteries and Apple A/C Adapters. Also Great prices on Used Apple Computers. Call 1-800-941-7654 Click Here.

OWC: NewerTech NuPower Batteries for iBook and PowerBooks Designed+Built in USA to run longer, LAST LONGER TOO! Free Battery Recycling Return Label; Quality High-Capacity from $99.95

Mac users can finally play Party Poker for Mac. Not only that, they can also learn how to play PokerStars for Mac.

Laptop Hardware Provided by TechRestore - Overnight Mac & iPod Repairs.

Compare products like desktop computers, laptops, and LCD TVs side by side! All the information and reviews to make the best purchasing decision for a new cell phone GPS products or MP3 players. The Ciao network makes searching products easy for you.

MacPro Memory 667Mhz With Apple Spec Heat Sink 2GB $ 82 / 4GB $128 / 8GB $256 - Click to Maximize your Macs...

Dan Knight - 2002.07.16

We'll start by noting a programming error in the previous column.

Here's the code we first came up with to see if a record existed:

if ($get_links == "") {die ("no record");}
echo "<li> <a href=\"/arc/$thisdate.html\">$today in LEM history:</a> $get_links[stories]</li>";

It seemed to work just fine, until the day we didn't have a record. Then it did what the die command is supposed to do - stopped execution. Oops.

Thinking things through, I revised the code. Instead of testing if there was no data, I tested if there was data as follows:

if ($get_links <> "")
{echo "<li> <a href=\"/arc/$thisdate.html\">$today in LEM history:</a> $get_links[stories]</li>";}

Voilà, problem solved. And we've had the previous column fixed for some time to reflect the change.

We discovered one more problem: The 80 character field for URLs just wasn't long enough for some of the sites we've linked to. We ended up boosting that field length to 128 characters to play it safe.

Automating the Date Stamp

This week we've made to more automation changes to the site. The first was automating the time stamp that appears on the home page and in a few other spots. I've been manually updating it for years - and sometimes making mistakes.

Also, since we're adding links throughout the day, the manual timestamp was incorrect in no time at all. Time to figure out how to display the time of the most recent link addition.

On our Apple Quicklinks headline news site, this was easy. We have one database of links, so we simply check for the most recently added one, like this:

$last_added = mysql_fetch_array(mysql_query("SELECT * FROM xlinks ORDER BY timestamp DESC LIMIT 1"));
 
$timestamp = $last_added[timestamp];
 
echo "<h5>Most recent link added ";
echo date("h:i a T l, F j, Y", $timestamp);
echo "</h5>";

The first line selects the most recently added record, and the next line reads the timestamp. Then we display it with the format hour, minute, am/pm, time zone, weekday, month, date, and year.

But on Low End Mac, we have two kinds of links - those on our site and those on other sites. Each is kept in a separate database, so we couldn't do things quite as simply as on the Quicklinks site.

Here's what we came up with for LEM:

$latestlem = mysql_fetch_array(mysql_query("SELECT * FROM links ORDER BY timestamp DESC LIMIT 1"));
 
$latest = mysql_fetch_array(mysql_query("SELECT * FROM xlinks ORDER BY timestamp DESC LIMIT 1"));
 
if ($latestlem > $latest)
{$latest = $latestlem;}
 
$latest = $latest[timestamp];
 
echo "<h4>Most recent link added ";
echo date("l, F j", $latest);
echo " at ";
echo date("h:i a T", $latest);
echo "</h4>";

The first line reads the timestamp from the latest local article, and the next line reads the timestamp from the most recently added external link. We compare them to decide which is more recent, then display them as a header 4 like this:

Most recent link added Monday, July 15 at 04:43 pm EDT

And now I don't have to manually post timestamps when I'm adding new content or worry about a manually entered timestamp not reflecting that fact that we may have added content since then.

Apple Stock Tracker

I've been looking for an automated stock tracker for years. Long before I even thought about updating links automatically, I wanted a real time (well, the usual 20 minute delay) stock tracker. I never did find a simple one I could add to the site.

So Monday I spent some time searching the Web, fiddling with some PHP samples, referencing php.net, testing and debugging, tweaking, and finally came up with a nice simple stock tracker that does just one thing: Report the latest trade in AAPL stock.

I found far more than I was looking for on the EvilWalrus Group website - a script by Mukul Sabharwal that does far more than I wanted, right down to displaying graphs.

All I wanted was the current price and how much it had changed during the day, so I had a lot of code stripping to do. Here's what I ended up with:

$fd = fopen ("http://quote.yahoo.com/d/quotes.csv?s=AAPL&f=sl1d1t1c1ohgv&e=.csv", "r");
$contents = fread ($fd, 200);
fclose ($fd);
 
$contents = str_replace ("\"", "", $contents);
$contents = explode (",", $contents);
 
echo "<ul><li>Apple stock tracker. Most recent trade: <b>\$$contents[1]</b>. Change: $contents[4]. (Prices delayed up to 20 minutes.)</li>";

The first line opens the AAPL record on the quotes.yahoo.com website and reads it. $contents = str_replace ("\"", "", $contents); goes through the data and strips out quote marks. The next line "explodes" commas, which means it turns every comma into a field delimiter.

The only fields I'm interested in are 1 (the last traded price) and 4 (how much Apple stock has moved up or down today). And the LEM home page now displays that information - generated each time someone visits the home page.

One less thing to update manually, and one more thing to put on the Apple Quicklinks site when I have a chance.

Recent Online Tech Journal Columns

Links for the Day

Recent Content on Low End Mac

Go to the Online Tech Journal index.

About LEM | Support | Usage | Privacy | Contacts


Have a question?
Ask an expert!

Navigation

Used Mac Dealers
Apple History
Best Used Macs
Video Cards
Email Lists
InfoMac's Low
End Mac Forum

Favorite Sites

MacSurfer
MacMinute
MacInTouch
MyAppleMenu
InfoMac
Macs Only!
The Mac Observer
Accelerate Your Mac
RetroMacCast
PB Central
MacWindows
The Vintage Mac
   Museum

DealMac
DealsOnTheWeb
Mac2Sell
ramseeker
Mac Driver Museum
JAG's House
System 6 Heaven
System 7 Today
the pickle's Low-End
   Mac FAQ

Abandonware
   Petition

Mac vs. PC Info

Affiliates

The Apple Store
Mac Connection
MacMall
TechRestore
MacResQ
ExperCom
Crucial Memory
batteries.com

Advertise

Open Link