So if we're going to do this join table connecting entries to tags, there are 5 places we need to add code to interact with the entry-tag table: Once in each of the 4 phases of the entry "life cycle" (Create, Read, Update, Delete), and once more in a catch-all category we'll call "maintenance".
Depending how rigorously we design the database back-end, maintenance as such may be superfluous, but in this application there's one situation where we may reasonably want an additional "tag maintenance" functi...
(...more)
3.3mi in ~51 minutes, peaking at 5.1mph on the 3rd or 4th half-lap burst, and some longer, slower jogs up to 3/4 lap. Almost, but not quite, hitting the 4mph average.
When I got there ~4:30 the entire row of treadmills was monopolized by a bunch of kids aged maybe 9-14, all speaking something like Czech or Hungarian, herded by some young guy who just completely fuckingly ignored me when I made eye contact and asked if they would be done soon. Twice. Fortunately they were done soon. Hope this isn't a dai...
(...more)
Something I didn't think about until I started adding in a "list all entries tagged with X" view... in the absence of a join table mediating between entries and tags, the SQL to retrieve a subset of entries with a specific tag is:
SELECT * FROM entries WHERE tags LIKE '%my tag%'
Having to resort to a 'LIKE' comparison usually means really sloppy, and often unsafe, design. In this instance, it means that clicking through a link connected to the tag "cat" will also catch all entries tagged "catheter", "b...
(...more)
The trivial part of the tag-support revision was, well, trivial: Add a "tags" column in the entries table. Add an input field and fix the SQL accordingly in the Create / Update phases of the post form. Pretty up the entry-view template and that was that.
The not-so-trivial part is to manage the tags table "on the fly". Say we're creating a new entry, and the tags table is empty. We explode() and trim() the tags field, and find 3 tags: "fitness", "mileage" and "web design". We SELECT COUNT(*) FROM tags W...
(...more)
I was supposed to settle on a project name, but none of the things I came up with are making me excited, so I'm just going to keep thinking about this blog engine as "my-as-yet-unnamed-blog-engine-and-by-the-way-I-hate-the-word-blog".
But that doesn't have to mean stalled feature development. For my next trick I want to build in a "tag" feature. I think the easy approach will be to explode() the comma-separated "tags" list on entry submission, looping through to add any novel terms to the tags table. Th...
(...more)